[OE-core] Fwd: [oe-commits] Morgan Little : python-native: Put binaries in seperate directory

Little, Morgan Morgan.Little at windriver.com
Mon Jul 30 16:11:14 UTC 2012


On 12-07-30 10:02 AM, Andreas Müller wrote:
> On Sun, Jul 22, 2012 at 12:43 PM,  <git at 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.little at 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.purdie at 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 at 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



More information about the Openembedded-core mailing list