[OE-core] [PATCH v2] uninative: Update to 2.7 release

Stefan Agner stefan at agner.ch
Fri Oct 11 08:26:46 UTC 2019


On 2019-10-07 18:47, Michael Halstead wrote:
> The 2.7 release updates glibc to version 2.30. Recently added to openSUSE
> Tumbleweed and needed for Fedora Core 31.

Since we updated master to include this commit we see regularly the following
issues:


WARNING: Disabling uninative as unable to install uninative tarball: Command 'mkdir -p /workdir/oe/tmp/sysroots-uninative; cd /workdir/oe/tmp/sysroots-uninative; tar -xJf
/workdir/downloads/uninative//9498d8bba047499999a7310ac2576d0796461184965351a56f6d32c888a1f216/x86_64-nativesdk-libc.tar.xz; /workdir/oe/tmp/sysroots-uninative/relocate_sdk.py   /workdir/oe/tmp/sysroots-uninative/x86_64-linux  
/workdir/oe/tmp/sysroots-uninative/x86_64-linux/lib/ld-linux-x86-64.so.2   /workdir/oe/tmp/sysroots-uninative/x86_64-linux/lib/ld-linux-x86-64.so.2   /workdir/oe/tmp/sysroots-uninative/x86_64-linux//usr/bin/patchelf-uninative  
/workdir/oe/tmp/sysroots-uninative/x86_64-linux/lib/libc*.so' returned non-zero exit status 1.
WARNING: To build your own uninative loader, please bitbake uninative-tarball and set UNINATIVE_TARBALL appropriately.

[...]

ERROR: ldconfig-native-2.12.1-r2 do_populate_sysroot_setscene: 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:uninative_changeinterp(d)
     0003:
File: '/workdir/oe/build/conf/../../layers/openembedded-core/meta/classes/uninative.bbclass', lineno: 165, function: uninative_changeinterp
     0161:                continue
     0162:            if not elf.isDynamic():
     0163:                continue
     0164:
 *** 0165:            subprocess.check_output(("patchelf-uninative", "--set-interpreter", d.getVar("UNINATIVE_LOADER"), f), stderr=subprocess.STDOUT)
     0166:}
File: '/usr/lib/python3.6/subprocess.py', lineno: 336, function: check_output
     0332:        # empty string. That is maintained here for backwards compatibility.
     0333:        kwargs['input'] = '' if kwargs.get('universal_newlines', False) else b''
     0334:
     0335:    return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
 *** 0336:               **kwargs).stdout
     0337:
     0338:
     0339:class CompletedProcess(object):
     0340:    """A process that has finished running.
File: '/usr/lib/python3.6/subprocess.py', lineno: 403, function: run
     0399:        if 'stdin' in kwargs:
     0400:            raise ValueError('stdin and input arguments may not both be used.')
     0401:        kwargs['stdin'] = PIPE
     0402:
 *** 0403:    with Popen(*popenargs, **kwargs) as process:
     0404:        try:
     0405:            stdout, stderr = process.communicate(input, timeout=timeout)
     0406:        except TimeoutExpired:
     0407:            process.kill()
File: '/usr/lib/python3.6/subprocess.py', lineno: 709, function: __init__
     0705:                                startupinfo, creationflags, shell,
     0706:                                p2cread, p2cwrite,
     0707:                                c2pread, c2pwrite,
     0708:                                errread, errwrite,
 *** 0709:                                restore_signals, start_new_session)
     0710:        except:
     0711:            # Cleanup if the child failed starting.
     0712:            for f in filter(None, (self.stdin, self.stdout, self.stderr)):
     0713:                try:
File: '/usr/lib/python3.6/subprocess.py', lineno: 1344, function: _execute_child
     1340:                    if errno_num != 0:
     1341:                        err_msg = os.strerror(errno_num)
     1342:                        if errno_num == errno.ENOENT:
     1343:                            err_msg += ': ' + repr(err_filename)
 *** 1344:                    raise child_exception_type(errno_num, err_msg, err_filename)
     1345:                raise child_exception_type(err_msg)
     1346:
     1347:
     1348:        def _handle_exitstatus(self, sts, _WIFSIGNALED=os.WIFSIGNALED,
Exception: FileNotFoundError: [Errno 2] No such file or directory: 'patchelf-uninative': 'patchelf-uninative'

ERROR: Logfile of failure stored in: /workdir/oe/tmp/work/x86_64-linux/ldconfig-native/2.12.1-r2/temp/log.do_populate_sysroot_setscene.14967



Looking into the directory shows that uninative only got extracted half-way:
$ find /workdir/oe/tmp/sysroots-uninative
/workdir/oe/tmp/sysroots-uninative
/workdir/oe/tmp/sysroots-uninative/x86_64-linux
/workdir/oe/tmp/sysroots-uninative/x86_64-linux/lib
/workdir/oe/tmp/sysroots-uninative/x86_64-linux/lib/libresolv-2.30.so
/workdir/oe/tmp/sysroots-uninative/x86_64-linux/lib/libnsl.so.1
/workdir/oe/tmp/sysroots-uninative/x86_64-linux/lib/libanl.so.1
/workdir/oe/tmp/sysroots-uninative/x86_64-linux/lib/libnss_compat-2.30.so
/workdir/oe/tmp/sysroots-uninative/x86_64-linux/lib/libpthread-2.30.so
/workdir/oe/tmp/sysroots-uninative/x86_64-linux/lib/ld-2.30.so
/workdir/oe/tmp/sysroots-uninative/x86_64-linux/lib/libutil-2.30.so
/workdir/oe/tmp/sysroots-uninative/x86_64-linux/lib/libnss_compat.so.2
/workdir/oe/tmp/sysroots-uninative/x86_64-linux/lib/libdl.so.2
/workdir/oe/tmp/sysroots-uninative/x86_64-linux/lib/libc-2.30.so
/workdir/oe/tmp/sysroots-uninative/x86_64-linux/lib/ld-linux-x86-64.so.2
/workdir/oe/tmp/sysroots-uninative/x86_64-linux/lib/librt.so.1
/workdir/oe/tmp/sysroots-uninative/x86_64-linux/lib/libBrokenLocale.so.1
/workdir/oe/tmp/sysroots-uninative/x86_64-linux/var
/workdir/oe/tmp/sysroots-uninative/x86_64-linux/var/lib
/workdir/oe/tmp/sysroots-uninative/x86_64-linux/var/lib/rpm
/workdir/oe/tmp/sysroots-uninative/relocate_sdk.py
<end of output...>

We run several build in parallel using the same downloads folder, it seems to me that
there is a race condition. The history shows the warning several times already with
exit code 127, but in those instances the bulid succeeded 

What I don't understand is how the update to 2.7 release could affect the behavior
such that it suddenly leads to issues. Any idea?

--
Stefan


> 
> Signed-off-by: Michael Halstead <mhalstead at linuxfoundation.org>
> ---
>  meta/conf/distro/include/yocto-uninative.inc | 10 +++++-----
>  1 file changed, 5 insertions(+), 5 deletions(-)
> 
> diff --git a/meta/conf/distro/include/yocto-uninative.inc
> b/meta/conf/distro/include/yocto-uninative.inc
> index df24346855..ad75d3e2a3 100644
> --- a/meta/conf/distro/include/yocto-uninative.inc
> +++ b/meta/conf/distro/include/yocto-uninative.inc
> @@ -6,9 +6,9 @@
>  # to the distro running on the build machine.
>  #
>  
> -UNINATIVE_MAXGLIBCVERSION = "2.29"
> +UNINATIVE_MAXGLIBCVERSION = "2.30"
>  
> -UNINATIVE_URL ?= "http://downloads.yoctoproject.org/releases/uninative/2.6/"
> -UNINATIVE_CHECKSUM[aarch64] ?=
> "a37118fc8b423f48146120707b81dd15017512c3e8ef9e6ca2cb3a033f4f4046"
> -UNINATIVE_CHECKSUM[i686] ?=
> "3234fc3ded810225071f23a0e9a99f4f8c2480059945a848eff076ce78122ade"
> -UNINATIVE_CHECKSUM[x86_64] ?=
> "133387753a9acf3e1b788103c59fac91e968e2ee331d7a4b9498e926ada7be57"
> +UNINATIVE_URL ?= "http://downloads.yoctoproject.org/releases/uninative/2.7/"
> +UNINATIVE_CHECKSUM[aarch64] ?=
> "e76a45886ee8a0b3904b761c17ac8ff91edf9811ee455f1832d10763ba794dfc"
> +UNINATIVE_CHECKSUM[i686] ?=
> "810d027dfb1c7675226afbcec07808770516c969ee7378f6d8240281083f8924"
> +UNINATIVE_CHECKSUM[x86_64] ?=
> "9498d8bba047499999a7310ac2576d0796461184965351a56f6d32c888a1f216"
> -- 
> 2.21.0


More information about the Openembedded-core mailing list