summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2013-08-20 13:01:49 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2013-08-23 16:20:11 +0100
commit694f034ec0865a0e9f9d5031ca9b0073ff735713 (patch)
tree43fb4a86396fcde68e7efb374d4a79f8bb732883
parent199b1a8c7d7109d9b59d67bf4dcfeb03be07587a (diff)
downloadpoky-694f034ec0865a0e9f9d5031ca9b0073ff735713.tar.gz
package.bbclass: Fix handling of symlinks in debug packages
When copying the sources for the debug source package we use cpio -Ll which means to copy files as hardlinks and to dereference symlinks. It appears there is a bug in cpio since -Ll will copy symlinks and not dereference them. We therefore do a second pass over copied symlinks resolving them into files. Ideally we would copy these as hardlinks as well however it doesn't seem worth the extra code and effort for what amounts to a corner case for a minor space improvement. This means that the -dbg packages no longer contain broken symlinks. [YOCTO #5020] (From OE-Core rev: 2ca2c4747f645a0d478c2171fff4c65752188285) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--meta/classes/package.bbclass6
1 files changed, 6 insertions, 0 deletions
diff --git a/meta/classes/package.bbclass b/meta/classes/package.bbclass
index 2460d0ac62..f6f93106ac 100644
--- a/meta/classes/package.bbclass
+++ b/meta/classes/package.bbclass
@@ -316,6 +316,12 @@ def copydebugsources(debugsrcdir, d):
316 #if retval: 316 #if retval:
317 # bb.fatal("debug source copy failed with exit code %s (cmd was %s)" % (retval, cmd)) 317 # bb.fatal("debug source copy failed with exit code %s (cmd was %s)" % (retval, cmd))
318 318
319 # cpio seems to have a bug with -lL together and symbolic links are just copied, not dereferenced.
320 # Work around this by manually finding and copying any symbolic links that made it through.
321 cmd = "find %s%s -type l -print0 -delete | sed s#%s%s/##g | (cd '%s' ; cpio -pd0mL --no-preserve-owner '%s%s' 2>/dev/null)" % (dvar, debugsrcdir, dvar, debugsrcdir, workparentdir, dvar, debugsrcdir)
322 (retval, output) = oe.utils.getstatusoutput(cmd)
323 if retval:
324 bb.fatal("debugsrc symlink fixup failed with exit code %s (cmd was %s)" % (retval, cmd))
319 325
320 # The copy by cpio may have resulted in some empty directories! Remove these 326 # The copy by cpio may have resulted in some empty directories! Remove these
321 cmd = "find %s%s -empty -type d -delete" % (dvar, debugsrcdir) 327 cmd = "find %s%s -empty -type d -delete" % (dvar, debugsrcdir)