fix .pyc/.pyo buildpaths issue
cover fix .pyc/.pyo buildpaths issue
The following changes since commit 26e04b23ba1b6942aa7c7df478d41dfe7b73e6e0:
oeqa/selftest/wic: Split tests into two class groups (2018-07-15 16:36:09 +0100)
are available in the git repository at:
git://git.openembedded.org/openembedded-core-contrib hongxu/pyc-buildpath
http://cgit.openembedded.org/openembedded-core-contrib/log/?h=hongxu/pyc-buildpath
Hongxu Jia (3):
distutils/setuptools, distutils3/setuptools3: improve reproducibility python-setuptools.inc: clean up useless local
var-DISTUTILS_INSTALL_ARGS
python3-pip: clean up obsolete
meta/classes/distutils.bbclass | 8 +++++--- meta/classes/distutils3.bbclass | 8 +++++--- meta/classes/setuptools.bbclass | 5 ----- meta/classes/setuptools3.bbclass | 4 ---- meta/recipes-devtools/python/python-setuptools.inc | 3 --- meta/recipes-devtools/python/python3-pip_10.0.1.bb | 18 ------------------ 6 files changed, 10 insertions(+), 36 deletions(-)
Signature · 1 line
2.7.4
PATCH 1/3 distutils/setuptools, distutils3/setuptools3: improve reproducibility
- Unify var-DISTUTILS_INSTALL_ARGS in distutils and setuptools
- Supply "--root" directory to the "install" command, and use it as a prefix to strip off the purported filename encoded in bytecode files. (It strips build path prefix from .pyc files)
[YOCTO #8446]
[YOCTO #12084]
--- meta/classes/distutils.bbclass | 8 +++++--- meta/classes/distutils3.bbclass | 8 +++++--- meta/classes/setuptools.bbclass | 5 ----- meta/classes/setuptools3.bbclass | 4 ---- 4 files changed, 10 insertions(+), 15 deletions(-)
meta/classes/distutils.bbclass +5 -3
@@ -4,8 +4,10 @@ DISTUTILS_BUILD_ARGS ?= "" DISTUTILS_STAGE_HEADERS_ARGS ?= "--install-dir=${STAGING_INCDIR}/${PYTHON_DIR}" DISTUTILS_STAGE_ALL_ARGS ?= "--prefix=${STAGING_DIR_HOST}${prefix} \ --install-data=${STAGING_DATADIR}" -DISTUTILS_INSTALL_ARGS ?= "--prefix=${D}/${prefix} \ - --install-data=${D}/${datadir}" +DISTUTILS_INSTALL_ARGS ?= "--root=${D} \ + --prefix=${prefix} \ + --install-lib=${PYTHON_SITEPACKAGES_DIR} \ + --install-data=${datadir}" distutils_do_compile() { STAGING_INCDIR=${STAGING_INCDIR} \
@@ -34,7 +36,7 @@ distutils_do_install() { STAGING_INCDIR=${STAGING_INCDIR} \ STAGING_LIBDIR=${STAGING_LIBDIR} \ PYTHONPATH=${D}${PYTHON_SITEPACKAGES_DIR} \ - ${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN} setup.py install --install-lib=${D}/${PYTHON_SITEPACKAGES_DIR} ${DISTUTILS_INSTALL_ARGS} || \ + ${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN} setup.py install ${DISTUTILS_INSTALL_ARGS} || \ bbfatal_log "${PYTHON_PN} setup.py install execution failed." # support filenames with *spaces*
meta/classes/distutils3.bbclass +5 -3
@@ -5,8 +5,10 @@ DISTUTILS_BUILD_EXT_ARGS ?= "" DISTUTILS_STAGE_HEADERS_ARGS ?= "--install-dir=${STAGING_INCDIR}/${PYTHON_DIR}" DISTUTILS_STAGE_ALL_ARGS ?= "--prefix=${STAGING_DIR_HOST}${prefix} \ --install-data=${STAGING_DATADIR}" -DISTUTILS_INSTALL_ARGS ?= "--prefix=${D}/${prefix} \ - --install-data=${D}/${datadir}" +DISTUTILS_INSTALL_ARGS ?= "--root=${D} \ + --prefix=${prefix} \ + --install-lib=${PYTHON_SITEPACKAGES_DIR} \ + --install-data=${datadir}" distutils3_do_configure() { if [ "${CLEANBROKEN}" != "1" ] ; then
@@ -45,7 +47,7 @@ distutils3_do_install() { STAGING_INCDIR=${STAGING_INCDIR} \ STAGING_LIBDIR=${STAGING_LIBDIR} \ PYTHONPATH=${D}${PYTHON_SITEPACKAGES_DIR} \ - ${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN} setup.py install --install-lib=${D}/${PYTHON_SITEPACKAGES_DIR} ${DISTUTILS_INSTALL_ARGS} || \ + ${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN} setup.py install ${DISTUTILS_INSTALL_ARGS} || \ bbfatal_log "${PYTHON_PN} setup.py install execution failed." # support filenames with *spaces*
meta/classes/setuptools.bbclass +0 -5
@@ -1,8 +1,3 @@ inherit distutils DEPENDS += "python-setuptools-native" - -DISTUTILS_INSTALL_ARGS = "--root=${D} \ - --prefix=${prefix} \ - --install-lib=${PYTHON_SITEPACKAGES_DIR} \ - --install-data=${datadir}"
meta/classes/setuptools3.bbclass +0 -4
@@ -2,7 +2,3 @@ inherit distutils3 DEPENDS += "python3-setuptools-native" -DISTUTILS_INSTALL_ARGS = "--root=${D} \ - --prefix=${prefix} \ - --install-lib=${PYTHON_SITEPACKAGES_DIR} \ - --install-data=${datadir}"
Signature · 1 line
2.7.4
Re: [PATCH 1/3] distutils/setuptools, distutils3/setuptools3: improve reproducibility
Hi Hongxu,
Can you rebase this to current master?
Cheers,
Ross
Quoted 97 lines · Hongxu Jia
- Unify var-DISTUTILS_INSTALL_ARGS in distutils and setuptools
- Supply "--root" directory to the "install" command, and use it as a prefix to strip off the purported filename encoded in bytecode files. (It strips build path prefix from .pyc files)
[YOCTO #8446]
[YOCTO #12084]Signed-off-by Hongxu Jia <[email protected]>--- meta/classes/distutils.bbclass | 8 +++++--- meta/classes/distutils3.bbclass | 8 +++++--- meta/classes/setuptools.bbclass | 5 ----- meta/classes/setuptools3.bbclass | 4 ---- 4 files changed, 10 insertions(+), 15 deletions(-)meta/classes/distutils.bbclass +5
-3@@ -4,8 +4,10 @@ DISTUTILS_BUILD_ARGS ?= "" DISTUTILS_STAGE_HEADERS_ARGS ?= "--install-dir=${STAGING_INCDIR}/${PYTHON_DIR}" DISTUTILS_STAGE_ALL_ARGS ?= "--prefix=${STAGING_DIR_HOST}${prefix} \ --install-data=${STAGING_DATADIR}" -DISTUTILS_INSTALL_ARGS ?= "--prefix=${D}/${prefix} \ - --install-data=${D}/${datadir}" +DISTUTILS_INSTALL_ARGS ?= "--root=${D} \ + --prefix=${prefix} \ + --install-lib=${PYTHON_SITEPACKAGES_DIR} \ + --install-data=${datadir}" distutils_do_compile() { STAGING_INCDIR=${STAGING_INCDIR} \@@ -34,7 +36,7 @@ distutils_do_install() { STAGING_INCDIR=${STAGING_INCDIR} \ STAGING_LIBDIR=${STAGING_LIBDIR} \ PYTHONPATH=${D}${PYTHON_SITEPACKAGES_DIR} \ - ${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN} setup.py install --install-lib=${D}/${PYTHON_SITEPACKAGES_DIR} ${DISTUTILS_INSTALL_ARGS} || \ + ${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN} setup.py install ${DISTUTILS_INSTALL_ARGS} || \ bbfatal_log "${PYTHON_PN} setup.py install execution failed." # support filenames with *spaces*meta/classes/distutils3.bbclass +5
-3@@ -5,8 +5,10 @@ DISTUTILS_BUILD_EXT_ARGS ?= "" DISTUTILS_STAGE_HEADERS_ARGS ?= "--install-dir=${STAGING_INCDIR}/${PYTHON_DIR}" DISTUTILS_STAGE_ALL_ARGS ?= "--prefix=${STAGING_DIR_HOST}${prefix} \ --install-data=${STAGING_DATADIR}" -DISTUTILS_INSTALL_ARGS ?= "--prefix=${D}/${prefix} \ - --install-data=${D}/${datadir}" +DISTUTILS_INSTALL_ARGS ?= "--root=${D} \ + --prefix=${prefix} \ + --install-lib=${PYTHON_SITEPACKAGES_DIR} \ + --install-data=${datadir}" distutils3_do_configure() { if [ "${CLEANBROKEN}" != "1" ] ; then@@ -45,7 +47,7 @@ distutils3_do_install() { STAGING_INCDIR=${STAGING_INCDIR} \ STAGING_LIBDIR=${STAGING_LIBDIR} \ PYTHONPATH=${D}${PYTHON_SITEPACKAGES_DIR} \ - ${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN} setup.py install --install-lib=${D}/${PYTHON_SITEPACKAGES_DIR} ${DISTUTILS_INSTALL_ARGS} || \ + ${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN} setup.py install ${DISTUTILS_INSTALL_ARGS} || \ bbfatal_log "${PYTHON_PN} setup.py install execution failed." # support filenames with *spaces*meta/classes/setuptools.bbclass +0
-5@@ -1,8 +1,3 @@ inherit distutils DEPENDS += "python-setuptools-native" - -DISTUTILS_INSTALL_ARGS = "--root=${D} \ - --prefix=${prefix} \ - --install-lib=${PYTHON_SITEPACKAGES_DIR} \ - --install-data=${datadir}"meta/classes/setuptools3.bbclass +0
-5@@ -2,7 +2,3 @@ inherit distutils3 DEPENDS += "python3-setuptools-native" -DISTUTILS_INSTALL_ARGS = "--root=${D} \ - --prefix=${prefix} \ - --install-lib=${PYTHON_SITEPACKAGES_DIR} \ - --install-data=${datadir}" --2.7.4
Re: [PATCH 1/3] distutils/setuptools, distutils3/setuptools3: improve reproducibility
Quoted 3 lines · Ross
Hi Hongxu,
Can you rebase this to current master?
No problem, V2 incoming
//Hongxu
Quoted 101 lines
Cheers,
RossQuoted 97 lines · Hongxu Jia
- Unify var-DISTUTILS_INSTALL_ARGS in distutils and setuptools
- Supply "--root" directory to the "install" command, and use it as a prefix to strip off the purported filename encoded in bytecode files. (It strips build path prefix from .pyc files)
[YOCTO #8446]
[YOCTO #12084]Signed-off-by Hongxu Jia <[email protected]>--- meta/classes/distutils.bbclass | 8 +++++--- meta/classes/distutils3.bbclass | 8 +++++--- meta/classes/setuptools.bbclass | 5 ----- meta/classes/setuptools3.bbclass | 4 ---- 4 files changed, 10 insertions(+), 15 deletions(-)meta/classes/distutils.bbclass +5
-3@@ -4,8 +4,10 @@ DISTUTILS_BUILD_ARGS ?= "" DISTUTILS_STAGE_HEADERS_ARGS ?= "--install-dir=${STAGING_INCDIR}/${PYTHON_DIR}" DISTUTILS_STAGE_ALL_ARGS ?= "--prefix=${STAGING_DIR_HOST}${prefix} \ --install-data=${STAGING_DATADIR}" -DISTUTILS_INSTALL_ARGS ?= "--prefix=${D}/${prefix} \ - --install-data=${D}/${datadir}" +DISTUTILS_INSTALL_ARGS ?= "--root=${D} \ + --prefix=${prefix} \ + --install-lib=${PYTHON_SITEPACKAGES_DIR} \ + --install-data=${datadir}" distutils_do_compile() { STAGING_INCDIR=${STAGING_INCDIR} \@@ -34,7 +36,7 @@ distutils_do_install() { STAGING_INCDIR=${STAGING_INCDIR} \ STAGING_LIBDIR=${STAGING_LIBDIR} \ PYTHONPATH=${D}${PYTHON_SITEPACKAGES_DIR} \ - ${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN} setup.py install --install-lib=${D}/${PYTHON_SITEPACKAGES_DIR} ${DISTUTILS_INSTALL_ARGS} || \ + ${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN} setup.py install ${DISTUTILS_INSTALL_ARGS} || \ bbfatal_log "${PYTHON_PN} setup.py install execution failed." # support filenames with *spaces*meta/classes/distutils3.bbclass +5
-3@@ -5,8 +5,10 @@ DISTUTILS_BUILD_EXT_ARGS ?= "" DISTUTILS_STAGE_HEADERS_ARGS ?= "--install-dir=${STAGING_INCDIR}/${PYTHON_DIR}" DISTUTILS_STAGE_ALL_ARGS ?= "--prefix=${STAGING_DIR_HOST}${prefix} \ --install-data=${STAGING_DATADIR}" -DISTUTILS_INSTALL_ARGS ?= "--prefix=${D}/${prefix} \ - --install-data=${D}/${datadir}" +DISTUTILS_INSTALL_ARGS ?= "--root=${D} \ + --prefix=${prefix} \ + --install-lib=${PYTHON_SITEPACKAGES_DIR} \ + --install-data=${datadir}" distutils3_do_configure() { if [ "${CLEANBROKEN}" != "1" ] ; then@@ -45,7 +47,7 @@ distutils3_do_install() { STAGING_INCDIR=${STAGING_INCDIR} \ STAGING_LIBDIR=${STAGING_LIBDIR} \ PYTHONPATH=${D}${PYTHON_SITEPACKAGES_DIR} \ - ${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN} setup.py install --install-lib=${D}/${PYTHON_SITEPACKAGES_DIR} ${DISTUTILS_INSTALL_ARGS} || \ + ${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN} setup.py install ${DISTUTILS_INSTALL_ARGS} || \ bbfatal_log "${PYTHON_PN} setup.py install execution failed." # support filenames with *spaces*meta/classes/setuptools.bbclass +0
-5@@ -1,8 +1,3 @@ inherit distutils DEPENDS += "python-setuptools-native" - -DISTUTILS_INSTALL_ARGS = "--root=${D} \ - --prefix=${prefix} \ - --install-lib=${PYTHON_SITEPACKAGES_DIR} \ - --install-data=${datadir}"meta/classes/setuptools3.bbclass +0
-5@@ -2,7 +2,3 @@ inherit distutils3 DEPENDS += "python3-setuptools-native" -DISTUTILS_INSTALL_ARGS = "--root=${D} \ - --prefix=${prefix} \ - --install-lib=${PYTHON_SITEPACKAGES_DIR} \ - --install-data=${datadir}" --2.7.4
PATCH 2/3 python-setuptools.inc: clean up useless local var-DISTUTILS_INSTALL_ARGS
In reply to Hongxu JiaSince unify var-DISTUTILS_INSTALL_ARGS in distutils and setuptools, The local var-DISTUTILS_INSTALL_ARGS broke do_install
...
error: option --script-dir not recognized
ERROR: python3 setup.py install execution failed.
...
[YOCTO #8446]
--- meta/recipes-devtools/python/python-setuptools.inc | 3 --- 1 file changed, 3 deletions(-)
meta/recipes-devtools/python/python-setuptools.inc +0 -3
@@ -16,9 +16,6 @@ DEPENDS += "${PYTHON_PN}" DEPENDS_class-native += "${PYTHON_PN}-native" DEPENDS_class-nativesdk += "nativesdk-${PYTHON_PN}" -DISTUTILS_INSTALL_ARGS += "--install-lib=${D}${PYTHON_SITEPACKAGES_DIR} \ - --script-dir=${bindir}" - RDEPENDS_${PN}_class-native = "\ ${PYTHON_PN}-distutils \ ${PYTHON_PN}-compression \
Signature · 1 line
2.7.4
PATCH 3/3 python3-pip: clean up obsolete
In reply to Hongxu JiaSince unify var-DISTUTILS_INSTALL_ARGS in distutils and setuptools,
- The local DISTUTILS_INSTALL_ARGS assignment is obsolete;
- The site.py is not be generated any more;
- The layout is in a standard pip dir (such as /usr/lib/python3.5/site- packages/pip rather than /lib/python3.5/site-packages/pip-10.0.1- py3.5.egg/pip), the pth file is not required;
`#!/usr/bin/env python3' is already used, do not manually sed.
[YOCTO #8446]
--- meta/recipes-devtools/python/python3-pip_10.0.1.bb | 18 ------------------ 1 file changed, 18 deletions(-)
meta/recipes-devtools/python/python3-pip_10.0.1.bb +0 -18
@@ -11,27 +11,9 @@ SRC_URI[sha256sum] = "f2bd08e0cd1b06e10218feaf6fef299f473ba706582eb3bd9d52203fdb inherit pypi distutils3 -DISTUTILS_INSTALL_ARGS += "--install-lib=${D}${PYTHON_SITEPACKAGES_DIR}" - -do_install_prepend() { - install -d ${D}${PYTHON_SITEPACKAGES_DIR} -} - -# Use setuptools site.py instead, avoid shared state issue do_install_append() { - rm ${D}${PYTHON_SITEPACKAGES_DIR}/site.py - rm ${D}${PYTHON_SITEPACKAGES_DIR}/__pycache__/site.cpython-*.pyc - # Install as pip3 and leave pip2 as default rm ${D}/${bindir}/pip - - # Installed eggs need to be passed directly to the interpreter via a pth file - echo "./${PYPI_PACKAGE}-${PV}-py${PYTHON_BASEVERSION}.egg" > ${D}${PYTHON_SITEPACKAGES_DIR}/${PYPI_PACKAGE}-${PV}.pth - - # Make sure we use /usr/bin/env python3 - for PYTHSCRIPT in `grep -rIl ${bindir} ${D}${bindir}/pip3*`; do - sed -i -e '1s|^#!.*|#!/usr/bin/env python3|' $PYTHSCRIPT - done } RDEPENDS_${PN} = "\
Signature · 1 line
2.7.4