Skip to contentSkip to conversation

Morgan Little : python-native: Put binaries in seperate directory

oe-commits Andreas Müller 3 participants 5 messages Jul 30, 2012 – Jul 31, 2012 1 message not in the archive

lore
Share & tools
lore

A message that is not in the archive (sent off-list or not yet received): 20120722104353.A204B1032B@opal

#1 lore raw
Quoted 112 lines · On Sun, Jul 22, 2012 at 12:43 PM, <[email protected]> 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 <[email protected]>
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.

---

 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(-)
meta/classes/distutils-base.bbclass +1 -1
index 6d18e08..c761b36 100644
@@ -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
 
meta/classes/distutils.bbclass +4 -4
index bcddf8d..690df73 100644
@@ -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 \
meta/classes/pythonnative.bbclass new file +3 -0
new file mode 100644
index 0000000..bc346da
@@ -0,0 +1,3 @@
+PYTHON="${STAGING_BINDIR_NATIVE}/python-native/python"
+PATH_prepend = "${STAGING_BINDIR_NATIVE}/python-native:"
+DEPENDS += " python-native "
meta/recipes-devtools/python/python-native_2.7.3.bb +3 -2
index 50bf894..bfdcd12 100644
@@ -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}/

meta/recipes-devtools/python/python-native_2.7.3.bb do_configure_prepend() { · line 46

Quoted 10 lines
meta/recipes-devtools/python/python-native_2.7.3.bb +3 -2
-       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

Andreas

#2 lore raw
Quoted 112 lines · On Sun, Jul 22, 2012 at 12:43 PM, <[email protected]> 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 <[email protected]>
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.

---

 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(-)
meta/classes/distutils-base.bbclass +1 -1
index 6d18e08..c761b36 100644
@@ -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
 
meta/classes/distutils.bbclass +4 -4
index bcddf8d..690df73 100644
@@ -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 \
meta/classes/pythonnative.bbclass new file +3 -0
new file mode 100644
index 0000000..bc346da
@@ -0,0 +1,3 @@
+PYTHON="${STAGING_BINDIR_NATIVE}/python-native/python"
+PATH_prepend = "${STAGING_BINDIR_NATIVE}/python-native:"
+DEPENDS += " python-native "
meta/recipes-devtools/python/python-native_2.7.3.bb +3 -2
index 50bf894..bfdcd12 100644
@@ -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}/

meta/recipes-devtools/python/python-native_2.7.3.bb do_configure_prepend() { · line 46

Quoted 10 lines
meta/recipes-devtools/python/python-native_2.7.3.bb +3 -2
-       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

#3 lore raw
Quoted 115 lines · Andreas Müller
Quoted 114 lines · On Sun, Jul 22, 2012 at 12:43 PM, <[email protected]> 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 <[email protected]>
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.

---

 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(-)
meta/classes/distutils-base.bbclass +1 -1
index 6d18e08..c761b36 100644
@@ -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
 
meta/classes/distutils.bbclass +4 -4
index bcddf8d..690df73 100644
@@ -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 \
meta/classes/pythonnative.bbclass new file +3 -0
new file mode 100644
index 0000000..bc346da
@@ -0,0 +1,3 @@
+PYTHON="${STAGING_BINDIR_NATIVE}/python-native/python"
+PATH_prepend = "${STAGING_BINDIR_NATIVE}/python-native:"
+DEPENDS += " python-native "
meta/recipes-devtools/python/python-native_2.7.3.bb +5 -3
index 50bf894..bfdcd12 100644
@@ -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}
 
Quoted 15 lines

meta/recipes-devtools/python/python-native_2.7.3.bb do_configure_prepend() { · line 46

Quoted 8 lines
meta/recipes-devtools/python/python-native_2.7.3.bb +1 -1
        # 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.

I forgot webkit-gtk PARALLEL_MAKE in my list

Andreas

#4 lore raw
Quoted 2 lines · Andreas Müller
Quoted 2 lines

Could somebody enlighten me please: What is the benefit in moving python-native into a subdirectory and causing tons of recipe changes?

People were running into a problem where python-native might be installed or uninstalled from the sysroot whilst it was being executed.

The trouble is not everything using python-native actually lists it as a dependency. Its complicated by the fact we have the system provided python to consider.

In general most things can use the system python. There are some which need "our" python since they need our python libraries or deal with their own python modules.

The best way to deal with these issue is to disentangle the python from the system from that in sysroot and the only way I'm aware of is to change the paths. We're unfortunately having to figure out which pieces need the sysroot python and this is causing a few bumps. I'm sorry about that and we're all doing our best to sort that out.

If you want stability, please use the stable release branch. We do our best with master but we accept changes there and there is a risk that things can break. We've always been clear about this.

Quoted 1 line
Quoted 1 line

The commit message does not help me much.

There was significant mailing list discussion about this and perlnative which shares a similar problem.

Quoted 5 lines
Quoted 4 lines

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.

I forgot webkit-gtk PARALLEL_MAKE in my list

Well, gtk-doc is a sensible cleanup to make the metadata easier and most sustainable, likewise the introspection change. We've adopting an approach to building them endorsed by the upstream project.

The webkit-gtk parallel make issues are a pain. It takes an age to build, parallel make speeds it up but something is broken, probably make 3.82. I'm at a loss as to how to deal with it. You can easily disable parallel make for that recipe in your local.conf as a workaround for now if its causing a problem (PARALLEL_MAKE_pn-webkit-gtk = "").

I'm sorry there has been some disruption, this is unfortunate but a consequence of trying to develop things and we're all doing our best to resolve the issues.

Cheers,

Richard

#5 lore raw
In reply to Andreas Müller
Quoted 130 lines · Andreas Müller
Quoted 112 lines · On Sun, Jul 22, 2012 at 12:43 PM, <[email protected]> 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 <[email protected]>
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.

---

 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(-)
meta/classes/distutils-base.bbclass +1 -1
index 6d18e08..c761b36 100644
@@ -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
 
meta/classes/distutils.bbclass +4 -4
index bcddf8d..690df73 100644
@@ -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 \
meta/classes/pythonnative.bbclass new file +3 -0
new file mode 100644
index 0000000..bc346da
@@ -0,0 +1,3 @@
+PYTHON="${STAGING_BINDIR_NATIVE}/python-native/python"
+PATH_prepend = "${STAGING_BINDIR_NATIVE}/python-native:"
+DEPENDS += " python-native "
meta/recipes-devtools/python/python-native_2.7.3.bb +3 -2
index 50bf894..bfdcd12 100644
@@ -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}/

meta/recipes-devtools/python/python-native_2.7.3.bb do_configure_prepend() { · line 46

Quoted 10 lines
meta/recipes-devtools/python/python-native_2.7.3.bb +3 -2
-       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.

Quoted 6 lines

Andreas

_______________________________________________
Openembedded-core mailing list
[email protected]
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