diff options
| -rw-r--r-- | meta/classes/staging.bbclass | 27 |
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 | } |
| 245 | addtask do_populate_sysroot_setscene | 245 | addtask do_populate_sysroot_setscene |
| 246 | 246 | ||
| 247 | def staging_copyfile(c, target, fixme, postinsts, stagingdir): | 247 | def 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 | ||
| 281 | def staging_copydir(c, target, stagingdir): | 284 | def 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 | ||
| 286 | def staging_processfixme(fixme, target, recipesysroot, recipesysrootnative, d): | 291 | def 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 | ||
