Well, I'm wrong yet again. A 'which python2.7' shows that it's pointing to a native version of Python:
*| which python2.7* *| /projects/yocto-git/build/tmp/sysroots/x86_64-linux/usr/bin/python-native/python2.7* | _PYTHON_PROJECT_BASE=/projects/yocto-git/build/tmp/work/haswell-diags-linux/python/2.7.9-r1/build _PYTHON_HOST_PLATFORM=linux2-x86_64 PYTHONPATH=/projects/yocto-git/build/tmp/work/haswell-diags-linux/python/2.7.9-r1/build/build/lib.linux2-x86_64-2.7:/projects/yocto-git/build/tmp/work/haswell-diags-linux/python/2.7.9-r1/Python-2.7.9/Lib:/projects/yocto-git/build/tmp/work/haswell-diags-linux/python/2.7.9-r1/Python-2.7.9/Lib/plat-linux2 python2.7 -S -m sysconfig --generate-posix-vars ;\ | if test $? -ne 0 ; then \ | echo "generate-posix-vars failed" ; \ | rm -f ./pybuilddir.txt ; \ | exit 1 ; \ | fi | Illegal instruction (core dumped) | make: *** [sharedmods] Error 132 I guess one of the environmental variables being passed in is screwing up what it's doing. Unfortunately I don't know enough about the inner workings of Python to be of much help moving forward. I gave it my best shot! On Wed, Nov 25, 2015 at 10:01 AM, Michael Habibi <mikehab...@gmail.com> wrote: > Ah sorry, I misspoke. I walked through the Makefile and configure scripts > a bit more, and $(PYTHON_FOR_BUILD) should in fact be a host version of > Python. It seems it's not being configured correctly. Either the path is > setup wrong and python2.7 is not pointing to the right version, or > python2.7 needs to be pointing to the absolute path instead of relying on > $PATH. > > > > > On Wed, Nov 25, 2015 at 9:45 AM, Michael Habibi <mikehab...@gmail.com> > wrote: > >> For what it's worth, this is the offending portion of Makefile.pre:452: >> >> # Create build directory and generate the sysconfig build-time data there. >> # pybuilddir.txt contains the name of the build dir and is used for >> # sys.path fixup -- see Modules/getpath.c. >> # Since this step runs before shared modules are built, try to avoid >> bootstrap >> # problems by creating a dummy pybuilddir.txt just to allow interpreter >> # initialization to succeed. It will be overwritten by >> generate-posix-vars >> # or removed in case of failure. >> pybuilddir.txt: $(BUILDPYTHON) >> → @echo "none" > ./pybuilddir.txt >> → $(RUNSHARED) $(PYTHON_FOR_BUILD) -S -m sysconfig --generate-posix-vars >> ;\ >> → if test $$? -ne 0 ; then \ >> → → echo "generate-posix-vars failed" ; \ >> → → rm -f ./pybuilddir.txt ; \ >> → → exit 1 ; \ >> → fi >> >> I don't know enough about the Python build to understand what it's trying >> to do, but perhaps replacing PYTHON_FOR_BUILD with HOSTPYTHON may be >> acceptable? >> >> I'm surprised this seems to work for other people, since this should be >> failing for anyone using Python on a target platform different from their >> host. >> >> On Wed, Nov 25, 2015 at 9:02 AM, Mark Hatle <mark.ha...@windriver.com> >> wrote: >> >>> On 11/24/15 3:23 PM, Mark Hatle wrote: >>> > My guess is that there is a bug in the python integration where it's >>> not >>> > realizing the host and target are different systems, so it's trying to >>> run a >>> > target program on your host. Your host isn't haswell, so... Illegal >>> Instruction >>> > -- and the system stops. >>> >>> Just an FYI, I hit the same problem today. I suspect it is the host >>> trying to >>> run target software and I'm looking into it. >>> >>> --Mark >>> >>> > The alternative would be something is running QEMU to execute a target >>> binary >>> > and QEMU doesn't have instruction support -- but that doesn't look >>> like the case >>> > here. >>> > >>> > --Mark >>> > >>> > On 11/24/15 3:06 PM, Michael Habibi wrote: >>> >> All, >>> >> >>> >> I added a new machine definition with tuning parameters for haswell >>> >> microarchitectures (basically just duplicated corei7 but tuned it for >>> haswell). >>> >> This seems to work correctly, but failed when running do_install for >>> python >>> >> toward the end of the build process. I am running with the Yocto 2.0 >>> framework, >>> >> with very minimal changes to create a new distribution and machine >>> for our >>> >> custom embedded device. Note I had this distro configuration working >>> before, and >>> >> the only difference is I added a new machine with this tuning. >>> >> >>> >> I believe the issue is because, as part of the do_install step for >>> Python, it >>> >> attempts to run python on the local host, despite being >>> cross-compiled. However, >>> >> it is tuned for a processor that my host machine doesn't run, so I >>> get an >>> >> instruction exception. >>> >> >>> >> Did I do something weird? I figure python would be configured for >>> >> cross-compiling and therefore wouldn't try to run the target version >>> on the >>> >> host, even for sanity tests. Here is the output of the failure: >>> >> >>> >> $ tail -20 >>> >> >>> /projects/yocto-git/build/tmp/work/haswell-diags-linux/python/2.7.9-r1/temp/log.do_install.17258 >>> >> >>> >> x86_64-diags-linux-ar rc libpython2.7.a Modules/threadmodule.o >>> >> Modules/signalmodule.o Modules/posixmodule.o Modules/errnomodule.o >>> >> Modules/pwdmodule.o Modules/_sre.o Modules/_codecsmodule.o >>> >> Modules/_weakref.o Modules/zipimport.o Modules/symtablemodule.o >>> >> Modules/md5module.o Modules/md5.o Modules/xxsubtype.o >>> >> x86_64-diags-linux-ranlib libpython2.7.a >>> >> Modules/posixmodule.o: In function `posix_tmpnam': >>> >> >>> /projects/yocto-git/build/tmp/work/haswell-diags-linux/python/2.7.9-r1/Python-2.7.9/Modules/posixmodule.c:7575: >>> >> warning: the use of `tmpnam_r' is dangerous, better use `mkstemp' >>> >> Modules/posixmodule.o: In function `posix_tempnam': >>> >> >>> /projects/yocto-git/build/tmp/work/haswell-diags-linux/python/2.7.9-r1/Python-2.7.9/Modules/posixmodule.c:7522: >>> >> warning: the use of `tempnam' is dangerous, better use `mkstemp' >>> >> x86_64-diags-linux-gcc -m64 -march=haswell -mtune=haswell >>> -mfpmath=sse -mavx2 >>> >> --sysroot=/projects/yocto-git/build/tmp/sysroots/continental -Wl,-O1 >>> >> -Wl,--hash-style=gnu -Wl,--as-needed -Xlinker -export-dynamic -o >>> python \ >>> >> Modules/python.o \ >>> >> -L. -lpython2.7 -lpthread -ldl -lpthread >>> -lutil -lm >>> >> >>> _PYTHON_PROJECT_BASE=/projects/yocto-git/build/tmp/work/haswell-diags-linux/python/2.7.9-r1/build >>> >> _PYTHON_HOST_PLATFORM=linux2-x86_64 >>> >> >>> PYTHONPATH=/projects/yocto-git/build/tmp/work/haswell-diags-linux/python/2.7.9-r1/build/build/lib.linux2-x86_64-2.7:/projects/yocto-git/build/tmp/work/haswell-diags-linux/python/2.7.9-r1/Python-2.7.9/Lib:/projects/yocto-git/build/tmp/work/haswell-diags-linux/python/2.7.9-r1/Python-2.7.9/Lib/plat-linux2 >>> >> python2.7 -S -m sysconfig --generate-posix-vars ;\ >>> >> if test $? -ne 0 ; then \ >>> >> echo "generate-posix-vars failed" ; \ >>> >> rm -f ./pybuilddir.txt ; \ >>> >> exit 1 ; \ >>> >> fi >>> >> Illegal instruction (core dumped) >>> >> make: *** [sharedmods] Error 132 >>> >> WARNING: exit code 1 from a shell command. >>> >> ERROR: oe_runmake failed >>> >> ERROR: Function failed: do_install (log file is located at >>> >> >>> /projects/yocto-git/build/tmp/work/haswell-diags-linux/python/2.7.9-r1/temp/log.do_install.17258) >>> >> >>> >> Here is my tune-haswell.inc (ignore some copy/paste comment issues >>> right now =): >>> >> >>> >> # Settings for the GCC(1) cpu-type "haswell": >>> >> # >>> >> # Intel Core i7 CPU with 64-bit extensions, MOVBE, MMX, SSE, >>> SSE2, SSE3,· >>> >> # SSSE3, SSE4.1, SSE4.2, POPCNT, AVX, AVX2, AES, PCLMUL, FSGSBASE, >>> >> # RDRND, FMA, BMI, BMI2 and F16C instruction set support. >>> >> # >>> >> # This tune is recommended for Intel Nehalem and Silvermont (e.g. Bay >>> Trail) CPUs >>> >> # (and beyond). >>> >> # >>> >> DEFAULTTUNE ?= "haswell" >>> >> >>> >> # Pull in the previous tune in to pull in PACKAGE_EXTRA_ARCHS >>> >> require conf/machine/include/tune-corei7.inc >>> >> >>> >> # Extra tune features >>> >> TUNEVALID[haswell] = "Enable haswell specific processor optimizations" >>> >> TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "haswell", " >>> >> -march=haswell -mtune=haswell -mfpmath=sse -mavx2", "", d)}" >>> >> >>> >> # Extra tune selections >>> >> AVAILTUNES += "haswell" >>> >> TUNE_FEATURES_tune-haswell = "${TUNE_FEATURES_tune-x86-64} haswell" >>> >> BASE_LIB_tune-haswell = "lib" >>> >> TUNE_PKGARCH_tune-haswell = "haswell" >>> >> PACKAGE_EXTRA_ARCHS_tune-haswell = >>> "${PACKAGE_EXTRA_ARCHS_tune-corei7} haswell" >>> >> >>> >> >>> >> >>> > >>> >>> -- >>> _______________________________________________ >>> yocto mailing list >>> yocto@yoctoproject.org >>> https://lists.yoctoproject.org/listinfo/yocto >>> >> >> >
-- _______________________________________________ yocto mailing list yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/yocto