summaryrefslogtreecommitdiff
path: root/meta/classes
diff options
context:
space:
mode:
Diffstat (limited to 'meta/classes')
-rw-r--r--meta/classes/staging.bbclass27
1 files changed, 17 insertions, 10 deletions
diff --git a/meta/classes/staging.bbclass b/meta/classes/staging.bbclass
index 35e53fe2b2..93d31ebb51 100644
--- a/meta/classes/staging.bbclass
+++ b/meta/classes/staging.bbclass
@@ -244,7 +244,7 @@ python do_populate_sysroot_setscene () {
}
addtask do_populate_sysroot_setscene
-def staging_copyfile(c, target, fixme, postinsts, stagingdir):
+def staging_copyfile(c, target, fixme, postinsts, stagingdir, seendirs):
import errno
if c.endswith("/fixmepath"):
@@ -255,7 +255,10 @@ def staging_copyfile(c, target, fixme, postinsts, stagingdir):
#bb.warn(c)
dest = c.replace(stagingdir, "")
dest = target + "/" + "/".join(dest.split("/")[3:])
- bb.utils.mkdirhier(os.path.dirname(dest))
+ destdir = os.path.dirname(dest)
+ if destdir not in seendirs:
+ bb.utils.mkdirhier(destdir)
+ seendirs.add(destdir)
if "/usr/bin/postinst-" in c:
postinsts.append(dest)
if os.path.islink(c):
@@ -278,10 +281,12 @@ def staging_copyfile(c, target, fixme, postinsts, stagingdir):
raise
return dest
-def staging_copydir(c, target, stagingdir):
+def staging_copydir(c, target, stagingdir, seendirs):
dest = c.replace(stagingdir, "")
dest = target + "/" + "/".join(dest.split("/")[3:])
- bb.utils.mkdirhier(dest)
+ if dest not in seendirs:
+ bb.utils.mkdirhier(dest)
+ seendirs.add(dest)
def staging_processfixme(fixme, target, recipesysroot, recipesysrootnative, d):
import subprocess
@@ -302,6 +307,7 @@ def staging_populate_sysroot_dir(targetsysroot, nativesysroot, native, d):
fixme = []
postinsts = []
+ seendirs = set()
stagingdir = d.getVar("STAGING_DIR")
if native:
pkgarchs = ['${BUILD_ARCH}', '${BUILD_ARCH}_*']
@@ -332,10 +338,10 @@ def staging_populate_sysroot_dir(targetsysroot, nativesysroot, native, d):
for l in f:
l = l.strip()
if l.endswith("/"):
- staging_copydir(l, targetdir, stagingdir)
+ staging_copydir(l, targetdir, stagingdir, seendirs)
continue
try:
- staging_copyfile(l, targetdir, fixme, postinsts, stagingdir)
+ staging_copyfile(l, targetdir, fixme, postinsts, stagingdir, seendirs)
except FileExistsError:
continue
@@ -492,6 +498,7 @@ python extend_recipe_sysroot() {
fixme = {}
fixme[''] = []
fixme['native'] = []
+ seendirs = set()
postinsts = []
multilibs = {}
manifests = {}
@@ -570,14 +577,14 @@ python extend_recipe_sysroot() {
l = l.strip()
if l.endswith("/"):
if native:
- dest = staging_copydir(l, recipesysrootnative, stagingdir)
+ dest = staging_copydir(l, recipesysrootnative, stagingdir, seendirs)
else:
- dest = staging_copydir(l, destsysroot, stagingdir)
+ dest = staging_copydir(l, destsysroot, stagingdir, seendirs)
continue
if native:
- dest = staging_copyfile(l, recipesysrootnative, fixme['native'], postinsts, stagingdir)
+ dest = staging_copyfile(l, recipesysrootnative, fixme['native'], postinsts, stagingdir, seendirs)
else:
- dest = staging_copyfile(l, destsysroot, fixme[''], postinsts, stagingdir)
+ dest = staging_copyfile(l, destsysroot, fixme[''], postinsts, stagingdir, seendirs)
if dest:
m.write(dest.replace(workdir + "/", "") + "\n")