summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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):