[OE-core] [oe][Patch] package.bbclass: fix host contamination warnings for source files

Andreas Müller schnitzeltony at googlemail.com
Sun Apr 3 21:37:38 UTC 2016


On Sun, Apr 3, 2016 at 10:57 PM, Max Krummenacher <max.oss.09 at gmail.com> 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 <max.krummenacher at toradex.com>
> ---
>
>
>  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



More information about the Openembedded-core mailing list