On Sun, Apr 3, 2016 at 10:57 PM, Max Krummenacher <[email protected]> wrote: > Addresses https://bugzilla.yoctoproject.org/show_bug.cgi?id=8939 > > Source files deployed with the *-dbg packages are owned by the user > running bitbake leading to warnings as the one below. > > WARNING: glibc-2.23-r0 do_package_qa: QA Issue: glibc: > /glibc-dbg/usr/src/debug/glibc/2.23-r0/git/include/resolv.h is owned by uid > 1000, which is the same as the user running bitbake. This may be due to host > contamination > glibc: /glibc-dbg/usr/src/debug/glibc/2.23-r0/git/include/monetary.h is owned > by uid 1000, which is the same as the user running bitbake. This may be due > to host contamination > glibc: /glibc-dbg/usr/src/debug/glibc/2.23-r0/git/include/locale.h is owned > by uid 1000, which is the same as the user running bitbake. This may be due > to host contamination > ... > > The files are copied as part of the do_package task. > The patch chowns all file in packages/usr/src after cpio copied them into the > package directory. > > Signed-off-by: Max Krummenacher <[email protected]> > --- > > > meta/classes/package.bbclass | 23 +++++++++++++++++++++++ > 1 file changed, 23 insertions(+) > > diff --git a/meta/classes/package.bbclass b/meta/classes/package.bbclass > index bdbe96d..d9ef62c 100644 > --- a/meta/classes/package.bbclass > +++ b/meta/classes/package.bbclass > @@ -362,6 +362,7 @@ def copydebugsources(debugsrcdir, d): > # and copied to the destination here. > > import stat > + import subprocess > > sourcefile = d.expand("${WORKDIR}/debugsources.list") > if debugsrcdir and os.path.isfile(sourcefile): > @@ -410,6 +411,28 @@ def copydebugsources(debugsrcdir, d): > if retval: > bb.fatal("debugsrc symlink fixup failed with exit code %s (cmd > was %s)" % (retval, cmd)) > > + # cpio --no-preserve-owner does not create the destination files with > + # owner root even when run under pseudo, chown them explicitely. > + fakerootcmd = d.getVar('FAKEROOTCMD', True) > + if not os.path.exists(fakerootcmd): > + logger.error('pseudo executable %s could not be found - have you > run a build yet? pseudo-native should install this and if you have run any > build then that should have been built') > + return 2 > + # Set up the appropriate environment > + newenv = dict(os.environ) > + fakerootenv = d.getVar('FAKEROOTENV', True) > + for varvalue in fakerootenv.split(): > + if '=' in varvalue: > + splitval = varvalue.split('=', 1) > + newenv[splitval[0]] = splitval[1] > + kwargs = dict(env = newenv, shell = True) > + > + cmd = "find '%s%s' -not -uid 0 -exec chown 0:0 {} \;" % (dvar, > debugsrcdir) > + if fakerootcmd is not None: > + cmd = "%s %s" % (fakerootcmd, cmd) > + retval = subprocess.call(cmd, **kwargs) > + if retval: > + bb.fatal("debugsrc chown failed with code %s (cmd was %s)" % > (retval, cmd)) > + > # The copy by cpio may have resulted in some empty directories! > Remove these > cmd = "find %s%s -empty -type d -delete" % (dvar, debugsrcdir) > (retval, output) = oe.utils.getstatusoutput(cmd) > -- > 2.6.2 > Thanks a lot - I've applied and started a test build.
Andreas -- _______________________________________________ Openembedded-core mailing list [email protected] http://lists.openembedded.org/mailman/listinfo/openembedded-core
