Bug 6985

Summary: configure task for qemu-native 1.7 cannot find sdl feature on OpenSuse 13.2
Product: [Build System, Metadata & Runtime] OE-Core Reporter: Ionut Chisanovici <ionutx.chisanovici>
Component: coreAssignee: Saul Wold <sgw>
Status: RESOLVED WONTFIX QA Contact: Ionut Chisanovici <ionutx.chisanovici>
Severity: normal    
Priority: Medium CC: anders.darander, bogdanx.a.voiculescu, meta.mr.watcher, meta.watcher, ross.burton
Version: 1.6.2   
Target Milestone: 1.6.3   
Hardware: x86   
OS: Multiple   
Whiteboard: Add this as a release note for 1.6.2
OS type for building Yocto: --- Type of Regression: Regression (Used to work)
Verified: Documentation change: No (bug/feature does not impact docs)

Description Ionut Chisanovici 2014-11-20 12:55:17 UTC
Hi,

On our OpensSuse 13.2 AB machine all builds failed at the task do_confiure for qemu_native 1.7:

ERROR: Function failed: do_configure (log file is located at /home/autobuilder/poky/build/tmp/work/x86_64-linux/qemu-native/1.7.0-r0/temp/log.do_configure.16930)
ERROR: Logfile of failure stored in: /home/autobuilder/poky/build/tmp/work/x86_64-linux/qemu-native/1.7.0-r0/temp/log.do_configure.16930
Log data follows:
| DEBUG: Executing python function sysroot_cleansstate
| DEBUG: Python function sysroot_cleansstate finished
| DEBUG: Executing shell function autotools_preconfigure
| DEBUG: Shell function autotools_preconfigure finished
| DEBUG: Executing python function autotools_copy_aclocals
| DEBUG: Python function autotools_copy_aclocals finished
| DEBUG: Executing shell function do_configure
| 
| ERROR: User requested feature sdl
|        configure was not able to find it
| 
| WARNING: /home/autobuilder/poky/build/tmp/work/x86_64-linux/qemu-native/1.7.0-r0/temp/run.do_configure.16930:1 exit 1 from
|   /home/autobuilder/poky/build/tmp/work/x86_64-linux/qemu-native/1.7.0-r0/qemu-1.7.0/configure --prefix=/home/autobuilder/poky/build/tmp/sysroots/x86_64-linux/usr --sysconfdir=/home/autobuilder/poky/build/tmp/sysroots/x86_64-linux/etc --libexecdir=/home/autobuilder/poky/build/tmp/sysroots/x86_64-linux/usr/lib/qemu --localstatedir=/home/autobuilder/poky/build/tmp/sysroots/x86_64-linux/var --disable-strip --target-list=arm-linux-user,arm-softmmu,i386-linux-user,i386-softmmu,mips-linux-user,mips-softmmu,mipsel-linux-user,mipsel-softmmu,ppc-linux-user,ppc-softmmu,x86_64-linux-user,x86_64-softmmu --disable-werror --audio-drv-list=oss,alsa --disable-bluez --disable-libiscsi --with-system-pixman --extra-cflags='-isystem/home/autobuilder/poky/build/tmp/sysroots/x86_64-linux/usr/include -O2 -pipe' --disable-linux-aio --disable-curses --disable-gtk --disable-cap-ng --disable-curl --disable-smartcard-nss --enable-sdl --disable-libssh2 --disable-uuid --disable-virtfs --disable-vnc-jpeg --disable-vnc-png --disable-vnc-sasl --disable-vnc-tls --disable-vnc-ws --disable-xen --disable-xfsctl $KVMOPTS
| ERROR: Function failed: do_configure (log file is located at /home/autobuilder/poky/build/tmp/work/x86_64-linux/qemu-native/1.7.0-r0/temp/log.do_configure.16930)
ERROR: Task 153 (virtual:native:/home/autobuilder/yocto-autobuilder/yocto-worker/nightly-arm/build/meta/recipes-devtools/qemu/qemu_1.7.0.bb, do_configure) failed with exit code '1'

I have to mention that libsdl-devel package is installed (v.1.2).

Cheers,
Ionut C
Comment 1 Ross Burton 2014-11-20 13:13:02 UTC
My guess is that cherry-picking 1ea36c8cd3b0d54621440962395d6cae6cb96e96 and b2a93c will fix this.
Comment 2 Ionut Chisanovici 2014-11-20 13:59:02 UTC
Forgot to mention that the builds are for 1.6.2 daisy, commit: 30b8d9378b8260e452552b806610dc9b6fe0b69f

Cheers,
Ionut C
Comment 3 Anders Darander 2015-01-09 13:01:23 UTC
I debugged the same issue on an internal build-machine just before Christmas. Well, I guess that it's the same issue, as you really need the config.log to be able to state anything. The bitbake error message is at least identical.


What I found was that libsdl 1.2 from OpenSuse couldn't find one symbol from libgpg-error (which was build as part of the build process). A quick test revealed that updateing libgpg-error from 1.12 to 1.5 solved the issue. Though, before submitting such a patch, I saw that Saul had already submitted a patch to upgrade libgpg-error to 1.16.

The steps to reproduce this was:

bitbake qemu-native
bitbake libgpg-error-native
bitbake qemu-native -c cleansstate
bitbake qemu-native

The first build succeeds, as nothing have build libgpg-error-native. This means that the host native libsdl links against libgpg-error from OpenSuse.

Building libgpg-error-native, and then rebuilding qemu-native fails, as the version of libgpg-error-native is too old.

I'd guess that we either would need to backport the update of libgpg-error (at least the -native version) to daisy et al, or patch the linking of qemu-native to search for the host libgpg-error prior to the one from the sysroot.
Comment 4 Saul Wold 2015-02-12 19:45:12 UTC
This also occurs with Debian8, Anders has it correct. A little further 
amplification, libSDL depends on a version'ed libgcrypt (0.20), which in turn 
depends on libgpg-error, but it is unversion'ed, so if libgpg-error-native is 
built before qemu-native then the -native version which has the older API is 
preferred over the host's newer version.

We should add a release note that: libgpg-error-native needs to be cleaned 
first if that error appears, updating libgpg-error in a dot release could cause 
other issues.