[OE-core] [DO-NOT-MERGE][RFC][PATCH] DO-NOT-MERGE: distutils3.bbclass: Don't use MACHINE variable

Martin Jansa martin.jansa at gmail.com
Wed Jul 23 19:03:26 UTC 2014


On Wed, Jul 23, 2014 at 11:04:18AM -0700, Khem Raj wrote:
> On Thu, Jun 19, 2014 at 4:18 AM, Martin Jansa <martin.jansa at gmail.com> wrote:
> > The original patch says this about MACHINE variables:
> >
> >     Use MACHINE for sysroot when not building for build host
> >
> >     Python's machinery replaces directories in sysroot path to match OE's
> >     staging area sysroots. Earlier we use to have HOST_SYS represent sysroot
> >     always but now we use MACHINE to represent target sysroots but HOST_SYS
> >     to represent host sysroot. This patch caters to that difference
> >
> > But I think we need to find some different solution, because right now the only
> > user of distutils3 bbclass python3-distribute becames effectivelly MACHINE_ARCH
> > because of this. Detected with sstate-diff-machines.sh script:
> >
> >  == Comparing signatures for python3-distribute.do_populate_sysroot.sigdata between qemux86 and qemux86copy ==
> >   Hash for dependent task python3-distribute_0.6.32.bb.do_install changed from ef2f64ea6aecf1f9c2c6a0f201c52f67 to 7afd17fd366b28cf4a0353c7dd5e1c5b
> >
> >   $ bitbake-diffsigs sstate-diff/1403174194/qemux86*/i586*/python3-distribute*/*do_install*
> >     basehash changed from 5311d29c25ff324645de9c17cdefe083 to 2f079b81b13427faddeb040e7a115965
> >     Variable MACHINE value changed from 'qemux86copy' to 'qemux86'
> >     Hash for dependent task python3-distribute_0.6.32.bb.do_compile changed from 4fcb29eb2a0df7bef2f9806a0d9cdd92 to e7df3cdd7b82733d69c87f1822b7177b
> >
> >   $ bitbake-diffsigs sstate-diff/1403174194/qemux86*/i586*/python3-distribute*/*do_compile*
> >     basehash changed from 870a9e01c2c4eb73dd57451eeb2a7f0c to c061ae11d7f16d74d49f667243a21be0
> >     Variable MACHINE value changed from 'qemux86copy' to 'qemux86'
> >
> > Signed-off-by: Martin Jansa <Martin.Jansa at gmail.com>
> 
> 
> BUILD_SYS is needed in python machinery to construct proper sys root
> especially with python3 versions the cross build infra in python is
> different. I think this patch would fail to build python3, either we
> have to patch it in such a way that whatever sys root OE constructs is
> passed directly and used and thereby remove depending on referring to
> MACHINE but that would need a bigger patch for python which I was not
> willing to carry. if there is another check that can deduce difference
> of being compiled native or for target then we can use that check
> instead of comparing BUILD_SYS to MACHINE

FWIW: I've this patch in my world builds and I haven't seen any issue
caused by it (python3 builds fine there).

> > ---
> >  meta/classes/distutils3.bbclass | 28 ++++------------------------
> >  1 file changed, 4 insertions(+), 24 deletions(-)
> >
> > diff --git a/meta/classes/distutils3.bbclass b/meta/classes/distutils3.bbclass
> > index bbd645c..8cf29d5 100644
> > --- a/meta/classes/distutils3.bbclass
> > +++ b/meta/classes/distutils3.bbclass
> > @@ -9,14 +9,9 @@ DISTUTILS_INSTALL_ARGS ?= "--prefix=${D}/${prefix} \
> >      --install-data=${D}/${datadir}"
> >
> >  distutils3_do_compile() {
> > -        if [ ${BUILD_SYS} != ${HOST_SYS} ]; then
> > -                SYS=${MACHINE}
> > -        else
> > -                SYS=${HOST_SYS}
> > -        fi
> >          STAGING_INCDIR=${STAGING_INCDIR} \
> >          STAGING_LIBDIR=${STAGING_LIBDIR} \
> > -        BUILD_SYS=${BUILD_SYS} HOST_SYS=${SYS} \
> > +        BUILD_SYS=${BUILD_SYS} HOST_SYS=${HOST_SYS} \
> >          ${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN} setup.py \
> >          build ${DISTUTILS_BUILD_ARGS} || \
> >          bbfatal "${PYTHON_PN} setup.py build_ext execution failed."
> > @@ -24,42 +19,27 @@ distutils3_do_compile() {
> >
> >  distutils3_stage_headers() {
> >          install -d ${STAGING_DIR_HOST}${PYTHON_SITEPACKAGES_DIR}
> > -        if [ ${BUILD_SYS} != ${HOST_SYS} ]; then
> > -                SYS=${MACHINE}
> > -        else
> > -                SYS=${HOST_SYS}
> > -        fi
> > -        BUILD_SYS=${BUILD_SYS} HOST_SYS=${SYS} \
> > +        BUILD_SYS=${BUILD_SYS} HOST_SYS=${HOST_SYS} \
> >          ${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN} setup.py install_headers ${DISTUTILS_STAGE_HEADERS_ARGS} || \
> >          bbfatal "${PYTHON_PN} setup.py install_headers execution failed."
> >  }
> >
> >  distutils3_stage_all() {
> > -        if [ ${BUILD_SYS} != ${HOST_SYS} ]; then
> > -                SYS=${MACHINE}
> > -        else
> > -                SYS=${HOST_SYS}
> > -        fi
> >          STAGING_INCDIR=${STAGING_INCDIR} \
> >          STAGING_LIBDIR=${STAGING_LIBDIR} \
> >          install -d ${STAGING_DIR_HOST}${PYTHON_SITEPACKAGES_DIR}
> >          PYTHONPATH=${STAGING_DIR_HOST}${PYTHON_SITEPACKAGES_DIR} \
> > -        BUILD_SYS=${BUILD_SYS} HOST_SYS=${SYS} \
> > +        BUILD_SYS=${BUILD_SYS} HOST_SYS=${HOST_SYS} \
> >          ${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN} setup.py install ${DISTUTILS_STAGE_ALL_ARGS} || \
> >          bbfatal "${PYTHON_PN} setup.py install (stage) execution failed."
> >  }
> >
> >  distutils3_do_install() {
> >          install -d ${D}${PYTHON_SITEPACKAGES_DIR}
> > -        if [ ${BUILD_SYS} != ${HOST_SYS} ]; then
> > -                SYS=${MACHINE}
> > -        else
> > -                SYS=${HOST_SYS}
> > -        fi
> >          STAGING_INCDIR=${STAGING_INCDIR} \
> >          STAGING_LIBDIR=${STAGING_LIBDIR} \
> >          PYTHONPATH=${D}${PYTHON_SITEPACKAGES_DIR} \
> > -        BUILD_SYS=${BUILD_SYS} HOST_SYS=${SYS} \
> > +        BUILD_SYS=${BUILD_SYS} HOST_SYS=${HOST_SYS} \
> >          ${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN} setup.py install --install-lib=${D}/${PYTHON_SITEPACKAGES_DIR} ${DISTUTILS_INSTALL_ARGS} || \
> >          bbfatal "${PYTHON_PN} setup.py install execution failed."
> >
> > --
> > 2.0.0
> >
> > --
> > _______________________________________________
> > Openembedded-core mailing list
> > Openembedded-core at lists.openembedded.org
> > http://lists.openembedded.org/mailman/listinfo/openembedded-core

-- 
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: 181 bytes
Desc: Digital signature
URL: <http://lists.openembedded.org/pipermail/openembedded-core/attachments/20140723/f4538138/attachment-0002.sig>


More information about the Openembedded-core mailing list