[OE-core] python: wrong config/Makefile when reused sstate from other machine build

Martin Jansa martin.jansa at gmail.com
Mon Nov 7 09:34:03 UTC 2011


While testing basichash signature generator and multimachine builds (qemuarm and qemuarmcopy as MACHINE) I got few errors like:

| arm-oe-linux-gnueabi-gcc -march=armv5te -mthumb -mthumb-interwork -mtune=arm926ej-s --sysroot=/OE/shr-core/tmp/sysroots/qemuarm -DNDEBUG -g -O3 -Wall -Wstrict-prototypes -O2 -pipe -g -feliminate-unused-debug-types -fPIC -I/OE/shr-core/tmp/sysroots/arm-oe-linux-gnueabi/usr/include/python2.7 -I/OE/shr-core/tmp/sysroots/qemuarm/usr/include/python2.7 -c alsaaudio.c -o build/temp.linux-x86_64-2.7/alsaaudio.o
| alsaaudio.c:19:0: warning: "PyUnicode_FromString" redefined [enabled by default]
| /OE/shr-core/tmp/sysroots/qemuarm/usr/include/python2.7/unicodeobject.h:194:0: note: this is the location of the previous definition
| alsaaudio.c: In function 'initalsaaudio':
| alsaaudio.c:1929:5: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
| alsaaudio.c:1932:5: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
| creating build/lib.linux-x86_64-2.7
| arm-oe-linux-gnueabi-gcc -march=armv5te -mthumb -mthumb-interwork -mtune=arm926ej-s --sysroot=/OE/shr-core/tmp/sysroots/qemuarmcopy -shared -L. -L/OE/shr-core/tmp/sysroots/qemuarmcopy/usr/lib -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -O2 -pipe -g -feliminate-unused-debug-types build/temp.linux-x86_64-2.7/alsaaudio.o -L/OE/shr-core/tmp/sysroots/qemuarmcopy/usr/lib -lasound -lpython2.7 -o build/lib.linux-x86_64-2.7/alsaaudio.so
| /OE/shr-core/tmp/sysroots/x86_64-linux/usr/libexec/armv5te-oe-linux-gnueabi/gcc/arm-oe-linux-gnueabi/4.6.2/ld: cannot find -lasound
| collect2: ld returned 1 exit status
| error: command 'arm-oe-linux-gnueabi-gcc' failed with exit status 1
| + bbfatal 'python setup.py build_ext execution failed.'
| + echo 'ERROR: python setup.py build_ext execution failed.'
| ERROR: python setup.py build_ext execution failed.
| + exit 1
NOTE: package python-pyalsaaudio-0.4-ml1: task do_compile: Failed
ERROR: Task 7853 (/OE/shr-core/meta-openembedded/meta-oe/recipes-devtools/python/python-pyalsaaudio_0.4.bb, do_compile) failed with exit code '1'
NOTE: Running task 7164 of 8028 (ID: 7857, /OE/shr-core/meta-openembedded/meta-oe/recipes-devtools/python/python-pyalsaaudio_0.4.bb, do_populate_lic)

And that's caused by machine specific sysroot while reusing python's config/Makefile 
which points to wrong sysroot (ie to qemuarmcopy's sysroot while building for qemuarm).

What's even worse is that if I did build alsa for qemuarmcopy 
before building python-pyalsaaudio I wouldn't get this error at all
and qemuarm python-pyalsaaudio will be linked agains (possibly different)
libasound from qemuarmcopy sysroot..

OE @ ~/shr-core $ diff tmp/sysroots/qemuarmcopy/usr/lib/python2.7/config/Makefile tmp/sysroots/qemuarm/usr/lib/python2.7/config/Makefile

OE @ ~/shr-core $ grep qemuarmcopy tmp/sysroots/qemuarm/usr/lib/python2.7/config/Makefile
CC=             arm-oe-linux-gnueabi-gcc  -march=armv5te  -mthumb -mthumb-interwork  -mtune=arm926ej-s --sysroot=/OE/shr-core/tmp/sysroots/qemuarmcopy
CXX=            arm-oe-linux-gnueabi-g++  -march=armv5te  -mthumb -mthumb-interwork  -mtune=arm926ej-s --sysroot=/OE/shr-core/tmp/sysroots/qemuarmcopy
LDFLAGS=-L. -L/OE/shr-core/tmp/sysroots/qemuarmcopy/usr/lib     -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed
LIBDIR=         /OE/shr-core/tmp/sysroots/qemuarmcopy/usr/lib
INCLUDEDIR=     /OE/shr-core/tmp/sysroots/qemuarmcopy/usr/include
CONFIG_ARGS=     '--build=x86_64-linux' '--host=arm-oe-linux-gnueabi' '--target=arm-oe-linux-gnueabi' '--prefix=/usr' '--exec_prefix=/usr' '--bindir=/usr/bin' '--sbindir=/usr/sbin' '--libexecdir=/OE/shr-core/tmp/sysroots/qemuarmcopy/usr/libexec' '--datadir=/usr/share' '--sysconfdir=/etc' '--sharedstatedir=/com' '--localstatedir=/var' '--libdir=/usr/lib' '--includedir=/OE/shr-core/tmp/sysroots/qemuarmcopy/usr/include' '--oldincludedir=/usr/include' '--infodir=/usr/share/info' '--mandir=/usr/share/man' '--disable-silent-rules' '--disable-dependency-tracking' '--with-libtool-sysroot=/OE/shr-core/tmp/sysroots/qemuarmcopy' '--with-threads' '--with-pymalloc' '--with-cyclic-gc' '--without-cxx' '--with-signal-module' '--with-wctype-functions' '--enable-shared' 'build_alias=x86_64-linux' 'host_alias=arm-oe-linux-gnueabi' 'target_alias=arm-oe-linux-gnueabi' 'CC=arm-oe-linux-gnueabi-gcc  -march=armv5te  -mthumb -mthumb-interwork  -mtune=arm926ej-s --sysroot=/OE/shr-core/tmp/sysroots/qemuarmcopy' 'CFLAGS=-O2 -pipe -g -feliminate-unused-debug-types' 'LDFLAGS=-L. -L/OE/shr-core/tmp/sysroots/qemuarmcopy/usr/lib-Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed' 'CPPFLAGS=' 'CPP=arm-oe-linux-gnueabi-gcc -E --sysroot=/OE/shr-core/tmp/sysroots/qemuarmcopy  -march=armv5te  -mthumb -mthumb-interwork  -mtune=arm926ej-s'
                $(RUNSHARED) /OE/shr-core/tmp/sysroots/qemuarmcopy/usr/libexec/oah/translate ./$(BUILDPYTHON) -E -tt $(TESTPROG) -uall $(TESTOPTS)

What's proper fix? Make python machine specific so it's never reused from sstate?

Regards,

-- 
Martin 'JaMa' Jansa     jabber: Martin.Jansa at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
URL: <http://lists.openembedded.org/pipermail/openembedded-core/attachments/20111107/945057c5/attachment-0002.sig>


More information about the Openembedded-core mailing list