On 12-07-30 10:02 AM, Andreas Müller wrote: > On Sun, Jul 22, 2012 at 12:43 PM, <g...@git.openembedded.org> wrote: >> Module: openembedded-core.git >> Branch: master >> Commit: a2e554f731437545e9483a7a73e6847c03f6f48a >> URL: >> http://git.openembedded.org/?p=openembedded-core.git&a=commit;h=a2e554f731437545e9483a7a73e6847c03f6f48a >> >> Author: Morgan Little <morgan.lit...@windriver.com> >> Date: Thu Jul 19 13:46:06 2012 -0400 >> >> python-native: Put binaries in seperate directory >> >> Update python-native to install the binaries in the python-native directory, >> add pythonnative.bbclass to let recipes that need python-native use the >> binaries and update disutils access the new binaries. Update distutils-base >> to inherit pythonnative. >> >> Signed-off-by: Richard Purdie <richard.pur...@linuxfoundation.org> >> >> --- >> >> meta/classes/distutils-base.bbclass | 2 +- >> meta/classes/distutils.bbclass | 8 ++++---- >> meta/classes/pythonnative.bbclass | 3 +++ >> .../recipes-devtools/python/python-native_2.7.3.bb | 10 ++++++---- >> 4 files changed, 14 insertions(+), 9 deletions(-) >> >> diff --git a/meta/classes/distutils-base.bbclass >> b/meta/classes/distutils-base.bbclass >> index 6d18e08..c761b36 100644 >> --- a/meta/classes/distutils-base.bbclass >> +++ b/meta/classes/distutils-base.bbclass >> @@ -1,5 +1,5 @@ >> DEPENDS += "${@["python-native python", ""][(d.getVar('PACKAGES', True) == >> '')]}" >> RDEPENDS_${PN} += "${@['', 'python-core']['${PN}' == '${BPN}']}" >> >> -inherit distutils-common-base >> +inherit distutils-common-base pythonnative >> >> diff --git a/meta/classes/distutils.bbclass b/meta/classes/distutils.bbclass >> index bcddf8d..690df73 100644 >> --- a/meta/classes/distutils.bbclass >> +++ b/meta/classes/distutils.bbclass >> @@ -11,14 +11,14 @@ distutils_do_compile() { >> STAGING_INCDIR=${STAGING_INCDIR} \ >> STAGING_LIBDIR=${STAGING_LIBDIR} \ >> BUILD_SYS=${BUILD_SYS} HOST_SYS=${HOST_SYS} \ >> - ${STAGING_BINDIR_NATIVE}/python setup.py build >> ${DISTUTILS_BUILD_ARGS} || \ >> + ${STAGING_BINDIR_NATIVE}/python-native/python setup.py build >> ${DISTUTILS_BUILD_ARGS} || \ >> bbfatal "python setup.py build_ext execution failed." >> } >> >> distutils_stage_headers() { >> install -d ${STAGING_DIR_HOST}${PYTHON_SITEPACKAGES_DIR} >> BUILD_SYS=${BUILD_SYS} HOST_SYS=${HOST_SYS} \ >> - ${STAGING_BINDIR_NATIVE}/python setup.py install_headers >> ${DISTUTILS_STAGE_HEADERS_ARGS} || \ >> + ${STAGING_BINDIR_NATIVE}/python-native/python setup.py >> install_headers ${DISTUTILS_STAGE_HEADERS_ARGS} || \ >> bbfatal "python setup.py install_headers execution failed." >> } >> >> @@ -28,7 +28,7 @@ distutils_stage_all() { >> install -d ${STAGING_DIR_HOST}${PYTHON_SITEPACKAGES_DIR} >> PYTHONPATH=${STAGING_DIR_HOST}${PYTHON_SITEPACKAGES_DIR} \ >> BUILD_SYS=${BUILD_SYS} HOST_SYS=${HOST_SYS} \ >> - ${STAGING_BINDIR_NATIVE}/python setup.py install >> ${DISTUTILS_STAGE_ALL_ARGS} || \ >> + ${STAGING_BINDIR_NATIVE}/python-native/python setup.py install >> ${DISTUTILS_STAGE_ALL_ARGS} || \ >> bbfatal "python setup.py install (stage) execution failed." >> } >> >> @@ -38,7 +38,7 @@ distutils_do_install() { >> STAGING_LIBDIR=${STAGING_LIBDIR} \ >> PYTHONPATH=${D}/${PYTHON_SITEPACKAGES_DIR} \ >> BUILD_SYS=${BUILD_SYS} HOST_SYS=${HOST_SYS} \ >> - ${STAGING_BINDIR_NATIVE}/python setup.py install >> ${DISTUTILS_INSTALL_ARGS} || \ >> + ${STAGING_BINDIR_NATIVE}/python-native/python setup.py install >> ${DISTUTILS_INSTALL_ARGS} || \ >> bbfatal "python setup.py install execution failed." >> >> for i in `find ${D} -name "*.py"` ; do \ >> diff --git a/meta/classes/pythonnative.bbclass >> b/meta/classes/pythonnative.bbclass >> new file mode 100644 >> index 0000000..bc346da >> --- /dev/null >> +++ b/meta/classes/pythonnative.bbclass >> @@ -0,0 +1,3 @@ >> +PYTHON="${STAGING_BINDIR_NATIVE}/python-native/python" >> +PATH_prepend = "${STAGING_BINDIR_NATIVE}/python-native:" >> +DEPENDS += " python-native " >> diff --git a/meta/recipes-devtools/python/python-native_2.7.3.bb >> b/meta/recipes-devtools/python/python-native_2.7.3.bb >> index 50bf894..bfdcd12 100644 >> --- a/meta/recipes-devtools/python/python-native_2.7.3.bb >> +++ b/meta/recipes-devtools/python/python-native_2.7.3.bb >> @@ -1,6 +1,6 @@ >> require python.inc >> DEPENDS = "openssl-native bzip2-full-native zlib-native readline-native >> sqlite3-native" >> -PR = "${INC_PR}.0" >> +PR = "${INC_PR}.1" >> >> SRC_URI += "file://04-default-is-optimized.patch \ >> file://05-enable-ctypes-cross-build.patch \ >> @@ -20,6 +20,8 @@ inherit native >> >> RPROVIDES += "python-distutils-native python-compression-native >> python-textutils-native python-core-native" >> >> +EXTRA_OECONF += " --bindir=${bindir}/${PN}" >> + >> EXTRA_OEMAKE = '\ >> BUILD_SYS="" \ >> HOST_SYS="" \ >> @@ -34,11 +36,11 @@ do_configure_prepend() { >> >> do_install() { >> oe_runmake 'DESTDIR=${D}' install >> - install -d ${D}${bindir}/ >> - install -m 0755 Parser/pgen ${D}${bindir}/ >> + install -d ${D}${bindir}/${PN} >> + install -m 0755 Parser/pgen ${D}${bindir}/${PN} >> >> # Make sure we use /usr/bin/env python >> - for PYTHSCRIPT in `grep -rIl ${bindir}/python ${D}${bindir}`; do >> + for PYTHSCRIPT in `grep -rIl ${bindir}/${PN}/python >> ${D}${bindir}/${PN}`; do >> sed -i -e '1s|^#!.*|#!/usr/bin/env python|' $PYTHSCRIPT >> done >> } >> >> > Could somebody enlighten me please: What is the benefit in moving > python-native into a subdirectory and causing tons of recipe changes? > The commit message does not help me much. > To me it is just another build breaker after gobject-introspection & > gtk-doc. Please tell me how many further weeks we have to suffer for > innovations like this so I can come back then. > > Andreas > > _______________________________________________ > Openembedded-core mailing list > Openembedded-core@lists.openembedded.org > http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core
The reason for the change was when python-native was built with other packages in parallel it would sometimes hit a case where the python binary was installed but the usr/lib/libpython2.7.so* was not installed yet. This would cause failures because of the missing library. This would also cause some issues with importing modules as they might not always be there when needed if python-native was being installed. Richard suggested that we change it to do something similar to perl-native, http://lists.linuxtogo.org/pipermail/openembedded-core/2012-June/024644.html. This method solves the issue but means that everything that depends on python-native needs to be updated to inherit the new pythonnative class. I tried to get all of the recipes that depended on python-native and anything that failed when I built and needed to inherit pythonnative. I can't say how long it will cause issues. //Morgan _______________________________________________ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core