Message ID | ccb8f5e5b91450066e8cd677ba7552b0518df760.1637900380.git.timothy.t.orling@intel.com |
---|---|
State | New |
Headers | show |
Series | [RFC,01/26] classes/distutils-*: add warning of deprecation | expand |
On 26.11.21 05:35, Tim Orling wrote: > Signed-off-by: Tim Orling <timothy.t.orling@intel.com> > --- > meta/classes/setuptools3-base.bbclass | 31 +++++++++++++ > meta/classes/setuptools3.bbclass | 67 ++++++++++++++++++++++++++- > 2 files changed, 97 insertions(+), 1 deletion(-) > create mode 100644 meta/classes/setuptools3-base.bbclass > > diff --git a/meta/classes/setuptools3-base.bbclass b/meta/classes/setuptools3-base.bbclass > new file mode 100644 > index 00000000000..5098ae9d64e > --- /dev/null > +++ b/meta/classes/setuptools3-base.bbclass > @@ -0,0 +1,31 @@ > +DEPENDS:append:class-target = " ${PYTHON_PN}-native ${PYTHON_PN}" > +DEPENDS:append:class-nativesdk = " ${PYTHON_PN}-native ${PYTHON_PN}" > +RDEPENDS:${PN} += "${@['', '${PYTHON_PN}-core']['${CLASSOVERRIDE}' == 'class-target']}" > + > +export STAGING_INCDIR > +export STAGING_LIBDIR > + > +# LDSHARED is the ld *command* used to create shared library > +export LDSHARED = "${CCLD} -shared" > +# LDXXSHARED is the ld *command* used to create shared library of C++ > +# objects > +export LDCXXSHARED = "${CXX} -shared" > +# CCSHARED are the C *flags* used to create objects to go into a shared > +# library (module) > +export CCSHARED = "-fPIC -DPIC" > +# LINKFORSHARED are the flags passed to the $(CC) command that links > +# the python executable > +export LINKFORSHARED = "${SECURITY_CFLAGS} -Xlinker -export-dynamic" > + > +FILES:${PN} += "${libdir}/* ${libdir}/${PYTHON_DIR}/*" > + > +FILES:${PN}-staticdev += "\ > + ${PYTHON_SITEPACKAGES_DIR}/*.a \ > +" > +FILES:${PN}-dev += "\ > + ${datadir}/pkgconfig \ > + ${libdir}/pkgconfig \ > + ${PYTHON_SITEPACKAGES_DIR}/*.la \ > +" > +inherit python3native python3targetconfig > + > diff --git a/meta/classes/setuptools3.bbclass b/meta/classes/setuptools3.bbclass > index 8ca66ee708e..4b8eca3f96e 100644 > --- a/meta/classes/setuptools3.bbclass > +++ b/meta/classes/setuptools3.bbclass > @@ -1,4 +1,69 @@ > -inherit distutils3 > +inherit setuptools3-base > > +B = "${WORKDIR}/build" > +distutils_do_configure[cleandirs] = "${B}" I hope this will be removed in a later patch, as the function name doesn't match the rest of the class code function naming. Or this here deserves a in code explantion > + > +SETUPTOOLS_BUILD_ARGS ?= "" > +SETUPTOOLS_INSTALL_ARGS ?= "--root=${D} \ > + --prefix=${prefix} \ > + --install-lib=${PYTHON_SITEPACKAGES_DIR} \ > + --install-data=${datadir}" > + > +SETUPTOOLS_PYTHON = "python3" > +SETUPTOOLS_PYTHON:class-native = "nativepython3" > + > +SETUPTOOLS_SETUP_PATH ?= "${S}" > + > +setuptools3_do_configure() { > + : > +} Why do we need to export an empty function? Wouldn't it make sense to use noexec here? > + > +setuptools3_do_compile() { > + cd ${SETUPTOOLS_SETUP_PATH} > + NO_FETCH_BUILD=1 \ > + STAGING_INCDIR=${STAGING_INCDIR} \ > + STAGING_LIBDIR=${STAGING_LIBDIR} \ > + ${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN} setup.py \ > + build --build-base=${B} ${SETUPTOOLS_BUILD_ARGS} || \ > + bbfatal_log "'${PYTHON_PN} setup.py build ${SETUPTOOLS_BUILD_ARGS}' execution failed." > +} > +setuptools3_do_compile[vardepsexclude] = "MACHINE" Please append or += here otherwise manipulation done to this function vardepexclude done *before* the inherit in the recipe will be lost, without people noticing that easily > + > +setuptools3_do_install() { > + cd ${SETUPTOOLS_SETUP_PATH} > + install -d ${D}${PYTHON_SITEPACKAGES_DIR} > + STAGING_INCDIR=${STAGING_INCDIR} \ > + STAGING_LIBDIR=${STAGING_LIBDIR} \ > + PYTHONPATH=${D}${PYTHON_SITEPACKAGES_DIR} \ > + ${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN} setup.py \ > + build --build-base=${B} install --skip-build ${SETUPTOOLS_INSTALL_ARGS} || \ > + bbfatal_log "'${PYTHON_PN} setup.py install ${SETUPTOOLS_INSTALL_ARGS}' execution failed." > + > + # support filenames with *spaces* > + find ${D} -name "*.py" -exec grep -q ${D} {} \; \ > + -exec sed -i -e s:${D}::g {} \; > + > + for i in ${D}${bindir}/* ${D}${sbindir}/*; do > + if [ -f "$i" ]; then > + sed -i -e s:${PYTHON}:${USRBINPATH}/env\ ${SETUPTOOLS_PYTHON}:g $i > + sed -i -e s:${STAGING_BINDIR_NATIVE}:${bindir}:g $i > + fi > + done > + > + rm -f ${D}${PYTHON_SITEPACKAGES_DIR}/easy-install.pth > + > + # > + # FIXME: Bandaid against wrong datadir computation > + # > + if [ -e ${D}${datadir}/share ]; then > + mv -f ${D}${datadir}/share/* ${D}${datadir}/ > + rmdir ${D}${datadir}/share > + fi > +} > +setuptools3_do_install[vardepsexclude] = "MACHINE" Same here about the vardepexclude > + > +EXPORT_FUNCTIONS do_configure do_compile do_install > + > +export LDSHARED="${CCLD} -shared" > DEPENDS += "python3-setuptools-native" > > > > > -=-=-=-=-=-=-=-=-=-=-=- > Links: You receive all messages sent to this group. > View/Reply Online (#158798): https://lists.openembedded.org/g/openembedded-core/message/158798 > Mute This Topic: https://lists.openembedded.org/mt/87313857/3647476 > Group Owner: openembedded-core+owner@lists.openembedded.org > Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [kweihmann@outlook.com] > -=-=-=-=-=-=-=-=-=-=-=- >
On Thu, Nov 25, 2021 at 11:37 PM Konrad Weihmann <kweihmann@outlook.com> wrote: > > > On 26.11.21 05:35, Tim Orling wrote: > > Signed-off-by: Tim Orling <timothy.t.orling@intel.com> > > --- > > meta/classes/setuptools3-base.bbclass | 31 +++++++++++++ > > meta/classes/setuptools3.bbclass | 67 ++++++++++++++++++++++++++- > > 2 files changed, 97 insertions(+), 1 deletion(-) > > create mode 100644 meta/classes/setuptools3-base.bbclass > > > > diff --git a/meta/classes/setuptools3-base.bbclass > b/meta/classes/setuptools3-base.bbclass > > new file mode 100644 > > index 00000000000..5098ae9d64e > > --- /dev/null > > +++ b/meta/classes/setuptools3-base.bbclass > > @@ -0,0 +1,31 @@ > > +DEPENDS:append:class-target = " ${PYTHON_PN}-native ${PYTHON_PN}" > > +DEPENDS:append:class-nativesdk = " ${PYTHON_PN}-native ${PYTHON_PN}" > > +RDEPENDS:${PN} += "${@['', '${PYTHON_PN}-core']['${CLASSOVERRIDE}' == > 'class-target']}" > > + > > +export STAGING_INCDIR > > +export STAGING_LIBDIR > > + > > +# LDSHARED is the ld *command* used to create shared library > > +export LDSHARED = "${CCLD} -shared" > > +# LDXXSHARED is the ld *command* used to create shared library of C++ > > +# objects > > +export LDCXXSHARED = "${CXX} -shared" > > +# CCSHARED are the C *flags* used to create objects to go into a shared > > +# library (module) > > +export CCSHARED = "-fPIC -DPIC" > > +# LINKFORSHARED are the flags passed to the $(CC) command that links > > +# the python executable > > +export LINKFORSHARED = "${SECURITY_CFLAGS} -Xlinker -export-dynamic" > > + > > +FILES:${PN} += "${libdir}/* ${libdir}/${PYTHON_DIR}/*" > > + > > +FILES:${PN}-staticdev += "\ > > + ${PYTHON_SITEPACKAGES_DIR}/*.a \ > > +" > > +FILES:${PN}-dev += "\ > > + ${datadir}/pkgconfig \ > > + ${libdir}/pkgconfig \ > > + ${PYTHON_SITEPACKAGES_DIR}/*.la \ > > +" > > +inherit python3native python3targetconfig > > + > > diff --git a/meta/classes/setuptools3.bbclass > b/meta/classes/setuptools3.bbclass > > index 8ca66ee708e..4b8eca3f96e 100644 > > --- a/meta/classes/setuptools3.bbclass > > +++ b/meta/classes/setuptools3.bbclass > > @@ -1,4 +1,69 @@ > > -inherit distutils3 > > +inherit setuptools3-base > > > > +B = "${WORKDIR}/build" > > +distutils_do_configure[cleandirs] = "${B}" > > I hope this will be removed in a later patch, as the function name > doesn't match the rest of the class code function naming. > Or this here deserves a in code explantion > > This was a copy-paste oversight and needs to be changed in a v2. I believe I was trying to contemplate if it was still needed and forgot to loop back. https://git.yoctoproject.org/poky/tree/meta/classes/distutils3.bbclass#n4 > + > > +SETUPTOOLS_BUILD_ARGS ?= "" > > +SETUPTOOLS_INSTALL_ARGS ?= "--root=${D} \ > > + --prefix=${prefix} \ > > + --install-lib=${PYTHON_SITEPACKAGES_DIR} \ > > + --install-data=${datadir}" > > + > > +SETUPTOOLS_PYTHON = "python3" > > +SETUPTOOLS_PYTHON:class-native = "nativepython3" > > + > > +SETUPTOOLS_SETUP_PATH ?= "${S}" > > + > > +setuptools3_do_configure() { > > + : > > +} > > Why do we need to export an empty function? > Wouldn't it make sense to use noexec here? > > This is what was in the original distutils3.bbclass https://git.yoctoproject.org/poky/tree/meta/classes/distutils3.bbclass#n18 The colon (:) makes it a no-op (not empty). I believe this is our version of defining an "interface" that can be implemented by subsequent recipes inheriting the class. > + > > +setuptools3_do_compile() { > > + cd ${SETUPTOOLS_SETUP_PATH} > > + NO_FETCH_BUILD=1 \ > > + STAGING_INCDIR=${STAGING_INCDIR} \ > > + STAGING_LIBDIR=${STAGING_LIBDIR} \ > > + ${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN} > setup.py \ > > + build --build-base=${B} ${SETUPTOOLS_BUILD_ARGS} || \ > > + bbfatal_log "'${PYTHON_PN} setup.py build > ${SETUPTOOLS_BUILD_ARGS}' execution failed." > > +} > > +setuptools3_do_compile[vardepsexclude] = "MACHINE" > > Please append or += here otherwise manipulation done to this function > vardepexclude done *before* the inherit in the recipe will be lost, > without people noticing that easily > > This is directly from the original distutils3.bbclass https://git.yoctoproject.org/poky/tree/meta/classes/distutils3.bbclass#n30 > + > > +setuptools3_do_install() { > > + cd ${SETUPTOOLS_SETUP_PATH} > > + install -d ${D}${PYTHON_SITEPACKAGES_DIR} > > + STAGING_INCDIR=${STAGING_INCDIR} \ > > + STAGING_LIBDIR=${STAGING_LIBDIR} \ > > + PYTHONPATH=${D}${PYTHON_SITEPACKAGES_DIR} \ > > + ${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN} > setup.py \ > > + build --build-base=${B} install --skip-build > ${SETUPTOOLS_INSTALL_ARGS} || \ > > + bbfatal_log "'${PYTHON_PN} setup.py install > ${SETUPTOOLS_INSTALL_ARGS}' execution failed." > > + > > + # support filenames with *spaces* > > + find ${D} -name "*.py" -exec grep -q ${D} {} \; \ > > + -exec sed -i -e s:${D}::g {} \; > > + > > + for i in ${D}${bindir}/* ${D}${sbindir}/*; do > > + if [ -f "$i" ]; then > > + sed -i -e s:${PYTHON}:${USRBINPATH}/env\ > ${SETUPTOOLS_PYTHON}:g $i > > + sed -i -e s:${STAGING_BINDIR_NATIVE}:${bindir}:g $i > > + fi > > + done > > + > > + rm -f ${D}${PYTHON_SITEPACKAGES_DIR}/easy-install.pth > > + > > + # > > + # FIXME: Bandaid against wrong datadir computation > > + # > > + if [ -e ${D}${datadir}/share ]; then > > + mv -f ${D}${datadir}/share/* ${D}${datadir}/ > > + rmdir ${D}${datadir}/share > > + fi > > +} > > +setuptools3_do_install[vardepsexclude] = "MACHINE" > > Same here about the vardepexclude > > Again, this is directly from the distutil3.bbclass https://git.yoctoproject.org/poky/tree/meta/classes/distutils3.bbclass#n63 > + > > +EXPORT_FUNCTIONS do_configure do_compile do_install > > + > > +export LDSHARED="${CCLD} -shared" > > DEPENDS += "python3-setuptools-native" > > > > > > > > > > -=-=-=-=-=-=-=-=-=-=-=- > > Links: You receive all messages sent to this group. > > View/Reply Online (#158798): > https://lists.openembedded.org/g/openembedded-core/message/158798 > > Mute This Topic: https://lists.openembedded.org/mt/87313857/3647476 > > Group Owner: openembedded-core+owner@lists.openembedded.org > > Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [ > kweihmann@outlook.com] > > -=-=-=-=-=-=-=-=-=-=-=- > > >
diff --git a/meta/classes/setuptools3-base.bbclass b/meta/classes/setuptools3-base.bbclass new file mode 100644 index 00000000000..5098ae9d64e --- /dev/null +++ b/meta/classes/setuptools3-base.bbclass @@ -0,0 +1,31 @@ +DEPENDS:append:class-target = " ${PYTHON_PN}-native ${PYTHON_PN}" +DEPENDS:append:class-nativesdk = " ${PYTHON_PN}-native ${PYTHON_PN}" +RDEPENDS:${PN} += "${@['', '${PYTHON_PN}-core']['${CLASSOVERRIDE}' == 'class-target']}" + +export STAGING_INCDIR +export STAGING_LIBDIR + +# LDSHARED is the ld *command* used to create shared library +export LDSHARED = "${CCLD} -shared" +# LDXXSHARED is the ld *command* used to create shared library of C++ +# objects +export LDCXXSHARED = "${CXX} -shared" +# CCSHARED are the C *flags* used to create objects to go into a shared +# library (module) +export CCSHARED = "-fPIC -DPIC" +# LINKFORSHARED are the flags passed to the $(CC) command that links +# the python executable +export LINKFORSHARED = "${SECURITY_CFLAGS} -Xlinker -export-dynamic" + +FILES:${PN} += "${libdir}/* ${libdir}/${PYTHON_DIR}/*" + +FILES:${PN}-staticdev += "\ + ${PYTHON_SITEPACKAGES_DIR}/*.a \ +" +FILES:${PN}-dev += "\ + ${datadir}/pkgconfig \ + ${libdir}/pkgconfig \ + ${PYTHON_SITEPACKAGES_DIR}/*.la \ +" +inherit python3native python3targetconfig + diff --git a/meta/classes/setuptools3.bbclass b/meta/classes/setuptools3.bbclass index 8ca66ee708e..4b8eca3f96e 100644 --- a/meta/classes/setuptools3.bbclass +++ b/meta/classes/setuptools3.bbclass @@ -1,4 +1,69 @@ -inherit distutils3 +inherit setuptools3-base +B = "${WORKDIR}/build" +distutils_do_configure[cleandirs] = "${B}" + +SETUPTOOLS_BUILD_ARGS ?= "" +SETUPTOOLS_INSTALL_ARGS ?= "--root=${D} \ + --prefix=${prefix} \ + --install-lib=${PYTHON_SITEPACKAGES_DIR} \ + --install-data=${datadir}" + +SETUPTOOLS_PYTHON = "python3" +SETUPTOOLS_PYTHON:class-native = "nativepython3" + +SETUPTOOLS_SETUP_PATH ?= "${S}" + +setuptools3_do_configure() { + : +} + +setuptools3_do_compile() { + cd ${SETUPTOOLS_SETUP_PATH} + NO_FETCH_BUILD=1 \ + STAGING_INCDIR=${STAGING_INCDIR} \ + STAGING_LIBDIR=${STAGING_LIBDIR} \ + ${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN} setup.py \ + build --build-base=${B} ${SETUPTOOLS_BUILD_ARGS} || \ + bbfatal_log "'${PYTHON_PN} setup.py build ${SETUPTOOLS_BUILD_ARGS}' execution failed." +} +setuptools3_do_compile[vardepsexclude] = "MACHINE" + +setuptools3_do_install() { + cd ${SETUPTOOLS_SETUP_PATH} + install -d ${D}${PYTHON_SITEPACKAGES_DIR} + STAGING_INCDIR=${STAGING_INCDIR} \ + STAGING_LIBDIR=${STAGING_LIBDIR} \ + PYTHONPATH=${D}${PYTHON_SITEPACKAGES_DIR} \ + ${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN} setup.py \ + build --build-base=${B} install --skip-build ${SETUPTOOLS_INSTALL_ARGS} || \ + bbfatal_log "'${PYTHON_PN} setup.py install ${SETUPTOOLS_INSTALL_ARGS}' execution failed." + + # support filenames with *spaces* + find ${D} -name "*.py" -exec grep -q ${D} {} \; \ + -exec sed -i -e s:${D}::g {} \; + + for i in ${D}${bindir}/* ${D}${sbindir}/*; do + if [ -f "$i" ]; then + sed -i -e s:${PYTHON}:${USRBINPATH}/env\ ${SETUPTOOLS_PYTHON}:g $i + sed -i -e s:${STAGING_BINDIR_NATIVE}:${bindir}:g $i + fi + done + + rm -f ${D}${PYTHON_SITEPACKAGES_DIR}/easy-install.pth + + # + # FIXME: Bandaid against wrong datadir computation + # + if [ -e ${D}${datadir}/share ]; then + mv -f ${D}${datadir}/share/* ${D}${datadir}/ + rmdir ${D}${datadir}/share + fi +} +setuptools3_do_install[vardepsexclude] = "MACHINE" + +EXPORT_FUNCTIONS do_configure do_compile do_install + +export LDSHARED="${CCLD} -shared" DEPENDS += "python3-setuptools-native"
Signed-off-by: Tim Orling <timothy.t.orling@intel.com> --- meta/classes/setuptools3-base.bbclass | 31 +++++++++++++ meta/classes/setuptools3.bbclass | 67 ++++++++++++++++++++++++++- 2 files changed, 97 insertions(+), 1 deletion(-) create mode 100644 meta/classes/setuptools3-base.bbclass