On Mon, 2020-11-16 at 23:27 +0100, Martin Jansa wrote:
> https://github.com/webOS-ports/meta-webos-ports/commit/9fd17a67cdbed92df13a14b002a189b4c6c2d442
> 
> is an example where it triggers this error, but doesn't trigger the
> more common host-user-contaminated QA error (unless you happened to
> use UID 1001 on host for the user running bitbake).
> 
> Similarly when the files are "installed" with e.g. "cp -a" for which
> layers usually use "cp -R --no-dereference --preserve=mode,links -v".

On a related note, the do_install reference in the manual gives some
advice on how to use cp and tar without contaminating the build.

The relevant part:

Safe methods for installing files include the following:
 * The install utility. This utility is the preferred method.
 * The cp command with the "--no-preserve=ownership" option.
 * The tar command with the "--no-same-owner" option. See the
   bin_package.bbclass file in the meta/classes directory of the
   Source Directory for an example.

https://www.yoctoproject.org/docs/current/mega-manual/mega-manual.html#ref-tasks-install

> On Mon, Nov 16, 2020 at 10:10 PM Marek Belisko <
> [email protected]> wrote:
> > On Mon, Nov 16, 2020 at 9:52 PM Joshua Watt <[email protected]>
> > wrote:
> > > 
> > > 
> > > On 11/16/20 2:38 PM, Marek Belisko wrote:
> > > 
> > > Hi,
> > > 
> > > I'm bumping my project based on zeus to dunfell. I've update all
> > > layers and in one of my recipes I'm seeing following issue (not
> > see on
> > > zeus at all):
> > > WARNING: cv-my-test-1.0-r0 do_package: KeyError in
> > ./package/srv/10%.png
> > > ERROR: cv-my-test-1.0-r0 do_package: Error executing a python
> > function
> > > in exec_python_func() autogenerated:
> > > 
> > > The stack trace of python calls that resulted in this
> > exception/failure was:
> > > File: 'exec_python_func() autogenerated', lineno: 2, function:
> > <module>
> > >       0001:
> > >   *** 0002:sstate_report_unihash(d)
> > >       0003:
> > > File: '/home/ubuntu/projects/my-test-
> > /poky/meta/classes/sstate.bbclass',
> > > lineno: 840, function: sstate_report_unihash
> > >       0836:    report_unihash = getattr(bb.parse.siggen,
> > 'report_unihash', None)
> > >       0837:
> > >       0838:    if report_unihash:
> > >       0839:        ss = sstate_state_fromvars(d)
> > >   *** 0840:        report_unihash(os.getcwd(), ss['task'], d)
> > >       0841:}
> > >       0842:
> > >       0843:#
> > >       0844:# Shell function to decompress and prepare a package
> > for installation
> > > File: '/home/ubuntu/projects/my-test-
> > /poky/bitbake/lib/bb/siggen.py',
> > > lineno: 555, function: report_unihash
> > >       0551:
> > >       0552:            if "." in self.method:
> > >       0553:                (module, method) =
> > self.method.rsplit('.', 1)
> > >       0554:                locs['method'] =
> > > getattr(importlib.import_module(module), method)
> > >   *** 0555:                outhash =
> > bb.utils.better_eval('method(path,
> > > sigfile, task, d)', locs)
> > >       0556:            else:
> > >       0557:                outhash =
> > bb.utils.better_eval(self.method +
> > > '(path, sigfile, task, d)', locs)
> > >       0558:
> > >       0559:            try:
> > > File: '/home/ubuntu/projects/my-test-
> > /poky/bitbake/lib/bb/utils.py',
> > > lineno: 420, function: better_eval
> > >       0416:    if extraglobals:
> > >       0417:        ctx = copy.copy(ctx)
> > >       0418:        for g in extraglobals:
> > >       0419:            ctx[g] = extraglobals[g]
> > >   *** 0420:    return eval(source, ctx, locals)
> > >       0421:
> > >       0422:@contextmanager
> > >       0423:def fileslocked(files):
> > >       0424:    """Context manager for locking and unlocking file
> > locks."""
> > > File: '<string>', lineno: 1, function: <module>
> > >    File "<string>", line 1, in <module>
> > > 
> > > File: '/home/ubuntu/projects/my-test-
> > /poky/meta/lib/oe/sstatesig.py',
> > > lineno: 595, function: OEOuthashBasic
> > >       0591:            process(root)
> > >       0592:            for f in files:
> > >       0593:                if f == 'fixmepath':
> > >       0594:                    continue
> > >   *** 0595:                process(os.path.join(root, f))
> > >       0596:    finally:
> > >       0597:        os.chdir(prev_dir)
> > >       0598:
> > >       0599:    return h.hexdigest()
> > > File: '/home/ubuntu/projects/my-test-
> > /poky/meta/lib/oe/sstatesig.py',
> > > lineno: 551, function: process
> > >       0547:                    add_perm(stat.S_IXOTH, 'x')
> > >       0548:
> > >       0549:                if include_owners:
> > >       0550:                    try:
> > >   *** 0551:                        update_hash(" %10s" %
> > > pwd.getpwuid(s.st_uid).pw_name)
> > >       0552:                        update_hash(" %10s" %
> > > grp.getgrgid(s.st_gid).gr_name)
> > >       0553:                    except KeyError:
> > >       0554:                        bb.warn("KeyError in %s" %
> > path)
> > >       0555:                        raise
> > > Exception: KeyError: 'getpwuid(): uid not found: 1000'
> > > 
> > > ERROR: Logfile of failure stored in:
> > > /home/ubuntu/projects/my-test-/build/tmp/work/aarch64-poky-
> > linux/cv-my-test/1.0-r0/temp/log.do_package.27454
> > > 
> > > Is this known issue or something related to my host setup?
> > > 
> > > This means the recipe is having host contamination (where the UID
> > of the user doing the build is leaking into the file system).
> > Some ideas what can be the source of that. This recipe is basically
> > just copying files from archive to final rootfs without any special
> > processing or so.
> > > 
> > > Thanks and BR,
> > > 
> > > marek
> > > 
> > > 
> > > 
> > > 
> > 
> > BR,
> > 
> > marek
> > 
> > 
> > 
> 


-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#51407): https://lists.yoctoproject.org/g/yocto/message/51407
Mute This Topic: https://lists.yoctoproject.org/mt/78301741/21656
Group Owner: [email protected]
Unsubscribe: https://lists.yoctoproject.org/g/yocto/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to