summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2012-11-22 21:41:21 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2012-11-25 21:34:47 +0000
commit1cccb3bd01ed82e4978acfef0fda1bd797eef72a (patch)
treeb878b7b94c70eba29bf852b538f5fff3098191ba
parent07b5f84133ac79aac4e939ea5f24390ad7f940a5 (diff)
downloadbitbake-1cccb3bd01ed82e4978acfef0fda1bd797eef72a.tar.gz
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. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--lib/bb/fetch2/__init__.py17
-rw-r--r--lib/bb/fetch2/local.py1
2 files changed, 11 insertions, 7 deletions
diff --git a/lib/bb/fetch2/__init__.py b/lib/bb/fetch2/__init__.py
index ea5287406..81964f112 100644
--- a/lib/bb/fetch2/__init__.py
+++ b/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/lib/bb/fetch2/local.py b/lib/bb/fetch2/local.py
index 7ea2f3b2e..45de15f48 100644
--- a/lib/bb/fetch2/local.py
+++ b/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):