summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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 () {
244} 244}
245addtask do_populate_sysroot_setscene 245addtask do_populate_sysroot_setscene
246 246
247def staging_copyfile(c, target, fixme, postinsts, stagingdir): 247def staging_copyfile(c, target, fixme, postinsts, stagingdir, seendirs):
248 import errno 248 import errno
249 249
250 if c.endswith("/fixmepath"): 250 if c.endswith("/fixmepath"):
@@ -255,7 +255,10 @@ def staging_copyfile(c, target, fixme, postinsts, stagingdir):
255 #bb.warn(c) 255 #bb.warn(c)
256 dest = c.replace(stagingdir, "") 256 dest = c.replace(stagingdir, "")
257 dest = target + "/" + "/".join(dest.split("/")[3:]) 257 dest = target + "/" + "/".join(dest.split("/")[3:])
258 bb.utils.mkdirhier(os.path.dirname(dest)) 258 destdir = os.path.dirname(dest)
259 if destdir not in seendirs:
260 bb.utils.mkdirhier(destdir)
261 seendirs.add(destdir)
259 if "/usr/bin/postinst-" in c: 262 if "/usr/bin/postinst-" in c:
260 postinsts.append(dest) 263 postinsts.append(dest)
261 if os.path.islink(c): 264 if os.path.islink(c):
@@ -278,10 +281,12 @@ def staging_copyfile(c, target, fixme, postinsts, stagingdir):
278 raise 281 raise
279 return dest 282 return dest
280 283
281def staging_copydir(c, target, stagingdir): 284def staging_copydir(c, target, stagingdir, seendirs):
282 dest = c.replace(stagingdir, "") 285 dest = c.replace(stagingdir, "")
283 dest = target + "/" + "/".join(dest.split("/")[3:]) 286 dest = target + "/" + "/".join(dest.split("/")[3:])
284 bb.utils.mkdirhier(dest) 287 if dest not in seendirs:
288 bb.utils.mkdirhier(dest)
289 seendirs.add(dest)
285 290
286def staging_processfixme(fixme, target, recipesysroot, recipesysrootnative, d): 291def staging_processfixme(fixme, target, recipesysroot, recipesysrootnative, d):
287 import subprocess 292 import subprocess
@@ -302,6 +307,7 @@ def staging_populate_sysroot_dir(targetsysroot, nativesysroot, native, d):
302 307
303 fixme = [] 308 fixme = []
304 postinsts = [] 309 postinsts = []
310 seendirs = set()
305 stagingdir = d.getVar("STAGING_DIR") 311 stagingdir = d.getVar("STAGING_DIR")
306 if native: 312 if native:
307 pkgarchs = ['${BUILD_ARCH}', '${BUILD_ARCH}_*'] 313 pkgarchs = ['${BUILD_ARCH}', '${BUILD_ARCH}_*']
@@ -332,10 +338,10 @@ def staging_populate_sysroot_dir(targetsysroot, nativesysroot, native, d):
332 for l in f: 338 for l in f:
333 l = l.strip() 339 l = l.strip()
334 if l.endswith("/"): 340 if l.endswith("/"):
335 staging_copydir(l, targetdir, stagingdir) 341 staging_copydir(l, targetdir, stagingdir, seendirs)
336 continue 342 continue
337 try: 343 try:
338 staging_copyfile(l, targetdir, fixme, postinsts, stagingdir) 344 staging_copyfile(l, targetdir, fixme, postinsts, stagingdir, seendirs)
339 except FileExistsError: 345 except FileExistsError:
340 continue 346 continue
341 347
@@ -492,6 +498,7 @@ python extend_recipe_sysroot() {
492 fixme = {} 498 fixme = {}
493 fixme[''] = [] 499 fixme[''] = []
494 fixme['native'] = [] 500 fixme['native'] = []
501 seendirs = set()
495 postinsts = [] 502 postinsts = []
496 multilibs = {} 503 multilibs = {}
497 manifests = {} 504 manifests = {}
@@ -570,14 +577,14 @@ python extend_recipe_sysroot() {
570 l = l.strip() 577 l = l.strip()
571 if l.endswith("/"): 578 if l.endswith("/"):
572 if native: 579 if native:
573 dest = staging_copydir(l, recipesysrootnative, stagingdir) 580 dest = staging_copydir(l, recipesysrootnative, stagingdir, seendirs)
574 else: 581 else:
575 dest = staging_copydir(l, destsysroot, stagingdir) 582 dest = staging_copydir(l, destsysroot, stagingdir, seendirs)
576 continue 583 continue
577 if native: 584 if native:
578 dest = staging_copyfile(l, recipesysrootnative, fixme['native'], postinsts, stagingdir) 585 dest = staging_copyfile(l, recipesysrootnative, fixme['native'], postinsts, stagingdir, seendirs)
579 else: 586 else:
580 dest = staging_copyfile(l, destsysroot, fixme[''], postinsts, stagingdir) 587 dest = staging_copyfile(l, destsysroot, fixme[''], postinsts, stagingdir, seendirs)
581 if dest: 588 if dest:
582 m.write(dest.replace(workdir + "/", "") + "\n") 589 m.write(dest.replace(workdir + "/", "") + "\n")
583 590