Bug 4358

Summary: Race condition for autoconf files in alsa-tools
Product: [Build System, Metadata & Runtime] OE-Core Reporter: Saul Wold <sgw>
Component: multimediaAssignee: Cristian Iorga <cristian.iorga>
Status: RESOLVED FIXED QA Contact:
Severity: normal    
Priority: Medium CC: meta.mr.watcher, meta.watcher, richard.purdie
Version: 1.5   
Target Milestone: 1.4.1   
Hardware: x86   
OS: Multiple   
Whiteboard:
OS type for building Yocto: --- Type of Regression: ---
Verified: Documentation change: ---

Description Saul Wold 2013-04-19 21:24:50 UTC
While building world for dylan with multilib enabled.

| make[1]: Entering directory `/srv/home/pokybuild/yocto-autobuilder-new/yocto-slave/nightly-world/build/build/tmp/work/x86-pokymllib32-linux/lib32-alsa-tools/1.0.26.1-r1/alsa-tools-1.0.26.1/mixartloader'
| make[1]: warning: jobserver unavailable: using -j1.  Add `+' to parent make rule.
| make[1]: Nothing to be done for `all'.
| make[1]: Leaving directory `/srv/home/pokybuild/yocto-autobuilder-new/yocto-slave/nightly-world/build/build/tmp/work/x86-pokymllib32-linux/lib32-alsa-tools/1.0.26.1-r1/alsa-tools-1.0.26.1/mixartloader'
| ./pcxhrloader
| aclocal: warning: autoconf input should be named 'configure.ac', not 'configure.in'
| aclocal: error: aclocal: file '/srv/home/pokybuild/yocto-autobuilder-new/yocto-slave/nightly-world/build/build/tmp/sysroots/lib32-qemux86/usr/share/aclocal/guile.m4' does not exist
| make: *** [all] Error 1
| ERROR: oe_runmake failed
| ERROR: Function failed: do_compile (see /srv/home/pokybuild/yocto-autobuilder-new/yocto-slave/nightly-world/build/build/tmp/work/x86-pokymllib32-linux/lib32-alsa-tools/1.0.26.1-r1/temp/log.do_compile.31124 for further information)
NOTE: recipe lib32-alsa-tools-1.0.26.1-r1: task do_compile: Failed
Comment 1 Cristian Iorga 2013-05-17 14:55:54 UTC
WIP. For now, while trying to reproduce this issue, I hit another one:

| make[4]: Entering directory `/mnt/Yo/yoctoproject/build/tmp/work/x86_64-poky-linux/gnutls/2.12.23-r8.4/gnutls-2.12.23/lib/gcrypt'
| make[4]: Nothing to be done for `all'.
| make[4]: Leaving directory `/mnt/Yo/yoctoproject/build/tmp/work/x86_64-poky-linux/gnutls/2.12.23-r8.4/gnutls-2.12.23/lib/gcrypt'
| make[4]: Entering directory `/mnt/Yo/yoctoproject/build/tmp/work/x86_64-poky-linux/gnutls/2.12.23-r8.4/gnutls-2.12.23/lib'
| ./x86_64-poky-linux-libtool  --tag=CC   --mode=link x86_64-poky-linux-gcc  -m64 --sysroot=/mnt/Yo/yoctoproject/build/tmp/sysroots/qemux86-64    -O2 -pipe -g -feliminate-unused-debug-types -no-undefined -version-info 48:6:22 -Wl,--version-script=./libgnutls.map    -L/mnt/Yo/yoctoproject/build/tmp/sysroots/qemux86-64/usr/lib64 -lgcrypt -L/mnt/Yo/yoctoproject/build/tmp/sysroots/qemux86-64/usr/lib64 -lgpg-error -lcap  -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -o libgnutls.la -rpath /usr/lib64  gnutls_record.lo gnutls_compress.lo debug.lo gnutls_cipher.lo gnutls_mbuffers.lo gnutls_buffers.lo gnutls_handshake.lo gnutls_num.lo gnutls_errors.lo gnutls_algorithms.lo gnutls_dh.lo gnutls_kx.lo gnutls_priority.lo gnutls_hash_int.lo gnutls_cipher_int.lo gnutls_session.lo gnutls_db.lo x509_b64.lo auth_anon.lo gnutls_extensions.lo gnutls_auth.lo gnutls_v2_compat.lo gnutls_datum.lo auth_rsa.lo gnutls_session_pack.lo gnutls_mpi.lo gnutls_pk.lo gnutls_cert.lo gnutls_global.lo gnutls_constate.lo gnutls_anon_cred.lo pkix_asn1_tab.lo gnutls_asn1_tab.lo gnutls_mem.lo auth_cert.lo gnutls_ui.lo gnutls_sig.lo auth_dhe.lo gnutls_dh_primes.lo ext_max_record.lo gnutls_alert.lo gnutls_str.lo gnutls_state.lo gnutls_x509.lo ext_cert_type.lo gnutls_rsa_export.lo auth_rsa_export.lo ext_server_name.lo auth_dh_common.lo gnutls_helper.lo gnutls_supplemental.lo crypto.lo random.lo ext_signature.lo cryptodev.lo system.lo crypto-api.lo ext_safe_renegotiation.lo gnutls_privkey.lo gnutls_pubkey.lo locks.lo  ext_srp.lo gnutls_srp.lo auth_srp.lo auth_srp_passwd.lo auth_srp_sb64.lo auth_srp_rsa.lo auth_psk.lo auth_psk_passwd.lo gnutls_psk.lo auth_dhe_psk.lo gnutls_psk_netconf.lo ext_session_ticket.lo gl/liblgnu.la x509/libgnutls_x509.la -L/mnt/Yo/yoctoproject/build/tmp/sysroots/qemux86-64/usr/lib64 -lz    -L/mnt/Yo/yoctoproject/build/tmp/sysroots/qemux86-64/usr/lib64 -lpthread openpgp/libgnutls_openpgp.la opencdk/libminiopencdk.la  -L/mnt/Yo/yoctoproject/build/tmp/sysroots/qemux86-64/usr/lib64 -ltasn1   gcrypt/libcrypto.la
| x86_64-poky-linux-libtool: link: warning: library `/mnt/Yo/yoctoproject/build/tmp/sysroots/qemux86-64/usr/lib64/libgcrypt.la' was moved.
| /bin/grep: /mnt/Yo/yoctoproject/build/tmp/sysroots/qemux86-64/usr/lib/libgpg-error.la: No such file or directory
| /bin/sed: can't read /mnt/Yo/yoctoproject/build/tmp/sysroots/qemux86-64/usr/lib/libgpg-error.la: No such file or directory
| x86_64-poky-linux-libtool: link: `/mnt/Yo/yoctoproject/build/tmp/sysroots/qemux86-64/usr/lib/libgpg-error.la' is not a valid libtool archive
| make[4]: *** [libgnutls.la] Error 1
| make[4]: Leaving directory `/mnt/Yo/yoctoproject/build/tmp/work/x86_64-poky-linux/gnutls/2.12.23-r8.4/gnutls-2.12.23/lib'
| make[3]: *** [all-recursive] Error 1
| make[3]: Leaving directory `/mnt/Yo/yoctoproject/build/tmp/work/x86_64-poky-linux/gnutls/2.12.23-r8.4/gnutls-2.12.23/lib'
| make[2]: *** [all] Error 2
| make[2]: Leaving directory `/mnt/Yo/yoctoproject/build/tmp/work/x86_64-poky-linux/gnutls/2.12.23-r8.4/gnutls-2.12.23/lib'
| make[1]: *** [all-recursive] Error 1
| make[1]: Leaving directory `/mnt/Yo/yoctoproject/build/tmp/work/x86_64-poky-linux/gnutls/2.12.23-r8.4/gnutls-2.12.23'
| make: *** [all] Error 2
| ERROR: oe_runmake failed
| ERROR: Function failed: do_compile (see /mnt/Yo/yoctoproject/build/tmp/work/x86_64-poky-linux/gnutls/2.12.23-r8.4/temp/log.do_compile.4110 for further information)
ERROR: Task 2160 (/mnt/Yo/yoctoproject/poky/meta/recipes-support/gnutls/gnutls_2.12.23.bb, do_compile) failed with exit code '1'
NOTE: Tasks Summary: Attempted 2065 tasks of which 2056 didn't need to be rerun and 1 failed.
Waiting for 0 running tasks to finish:

Summary: 1 task failed:
  /mnt/Yo/yoctoproject/poky/meta/recipes-support/gnutls/gnutls_2.12.23.bb, do_compile
Summary: There was 1 ERROR message shown, returning a non-zero exit code.
ubik@sentry:/mnt/Yo/yoctoproject/build$
Comment 2 Cristian Iorga 2013-05-23 09:20:58 UTC
Tested this with the following local.conf:

....
#testcase for YB4358
require conf/multilib.conf
MULTILIBS = "multilib:lib32"
DEFAULTTUNE_virtclass-multilib-lib32 = "x86"
MULTILIB_IMAGE_INSTALL = "lib32-alsa-tools"

core-image-sato target for qemux86-64 machine build correctly (started from a "fresh" build dir).

Is this reproducible only on autobuilder?
If so, what is the test case?

Regards,
Cristian
Comment 3 Richard Purdie 2013-05-29 10:16:46 UTC
The issue here is that aclocal is being called directly, not called by our wrapper in autotools.bbclass. We go to significant lengths to ensure the aclocal directory is "atomic" and that files in there can't change whilst aclocal is running.

The issue is that guile was installed in the sysroot and was uninstalled whilst the build was running. alsa-tools is running configure without the wrapper protection code.
Comment 4 Richard Purdie 2013-05-29 10:18:18 UTC
the second problem you found is likely from changing the multilib configuration on an existing build directory. That problem is known about and is more a case of "don't do that!", its a problem in autotools not noticing changes in libdir and there is little we can do about it.