From: Richard Purdie Date: Thu, 22 Nov 2012 21:41:21 +0000 (+0000) Subject: bitbake: fetch2: Avoid using FILESDIR in unpack X-Git-Tag: rev_ivi_2015_02_04~14812 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=5a2f5139a15d54bca31012f93c71a390e8225819;p=scm%2Fbb%2Ftizen-distro.git bitbake: fetch2: Avoid using FILESDIR in unpack Currently there is code which uses FILESDIR in unpack to ensure parent directories are created, leading to differing behaviour depending on which search path is used to locate the directory. This change standardises the code and takes the data from the fetcher in question meaning we can standardise the code and deprecate FILESDIR. (Bitbake rev: 1cccb3bd01ed82e4978acfef0fda1bd797eef72a) Signed-off-by: Richard Purdie --- diff --git a/bitbake/lib/bb/fetch2/__init__.py b/bitbake/lib/bb/fetch2/__init__.py index ea52874..81964f1 100644 --- a/bitbake/lib/bb/fetch2/__init__.py +++ b/bitbake/lib/bb/fetch2/__init__.py @@ -963,15 +963,18 @@ class FetchMethod(object): dest = os.path.join(rootdir, os.path.basename(file)) if (file != dest) and not (os.path.exists(dest) and os.path.samefile(file, dest)): if os.path.isdir(file): - filesdir = os.path.realpath(data.getVar("FILESDIR", True)) + # If for example we're asked to copy file://foo/bar, we need to unpack the result into foo/bar + basepath = getattr(urldata, "basepath", None) destdir = "." - if file[0:len(filesdir)] == filesdir: - destdir = file[len(filesdir):file.rfind('/')] + if basepath and basepath.endswith("/"): + basepath = basepath.rstrip("/") + elif basepath: + basepath = os.path.dirname(basepath) + if basepath and basepath.find("/") != -1: + destdir = basepath[:basepath.rfind('/')] destdir = destdir.strip('/') - if len(destdir) < 1: - destdir = "." - elif not os.access("%s/%s" % (rootdir, destdir), os.F_OK): - os.makedirs("%s/%s" % (rootdir, destdir)) + if destdir != "." and not os.access("%s/%s" % (rootdir, destdir), os.F_OK): + os.makedirs("%s/%s" % (rootdir, destdir)) cmd = 'cp -pPR %s %s/%s/' % (file, rootdir, destdir) #cmd = 'tar -cf - -C "%d" -ps . | tar -xf - -C "%s/%s/"' % (file, rootdir, destdir) else: diff --git a/bitbake/lib/bb/fetch2/local.py b/bitbake/lib/bb/fetch2/local.py index 7ea2f3b..45de15f 100644 --- a/bitbake/lib/bb/fetch2/local.py +++ b/bitbake/lib/bb/fetch2/local.py @@ -44,6 +44,7 @@ class Local(FetchMethod): # We don't set localfile as for this fetcher the file is already local! ud.decodedurl = urllib.unquote(ud.url.split("://")[1].split(";")[0]) ud.basename = os.path.basename(ud.decodedurl) + ud.basepath = ud.decodedurl return def localpath(self, url, urldata, d):