aboutsummaryrefslogtreecommitdiffstats
path: root/meta-python/classes/distutils3.bbclass
diff options
context:
space:
mode:
authorTim Orling <ticotimo@gmail.com>2021-10-29 11:40:01 -0700
committerTim Orling <ticotimo@gmail.com>2021-10-29 13:50:44 -0700
commiteed9aa7c682178b4dd9416c9726b5d93a8ecc8c8 (patch)
tree86f02fe7422cba56a5181aae9dd11f3953846908 /meta-python/classes/distutils3.bbclass
parent2f6797d8d6356d6e0556b53f14514e57ce309350 (diff)
downloadmeta-openembedded-contrib-eed9aa7c682178b4dd9416c9726b5d93a8ecc8c8.tar.gz
meta-openembedded-contrib-eed9aa7c682178b4dd9416c9726b5d93a8ecc8c8.tar.bz2
meta-openembedded-contrib-eed9aa7c682178b4dd9416c9726b5d93a8ecc8c8.zip
distutils*.bbclass: move from oe-coretimo/move-distutils
distutils has been deprecated in Python 3.10 and will be removed in Python 3.12 (predicted release date October 2023). For now, move these classes from oe-core to allow users to migrate. Also add deprecation warning to these classes. [YOCTO #14610] Signed-off-by: Tim Orling <ticotimo@gmail.com>
Diffstat (limited to 'meta-python/classes/distutils3.bbclass')
-rw-r--r--meta-python/classes/distutils3.bbclass71
1 files changed, 71 insertions, 0 deletions
diff --git a/meta-python/classes/distutils3.bbclass b/meta-python/classes/distutils3.bbclass
new file mode 100644
index 0000000000..a6d8e8763f
--- /dev/null
+++ b/meta-python/classes/distutils3.bbclass
@@ -0,0 +1,71 @@
+inherit distutils3-base
+
+B = "${WORKDIR}/build"
+distutils_do_configure[cleandirs] = "${B}"
+
+DISTUTILS_BUILD_ARGS ?= ""
+DISTUTILS_INSTALL_ARGS ?= "--root=${D} \
+ --prefix=${prefix} \
+ --install-lib=${PYTHON_SITEPACKAGES_DIR} \
+ --install-data=${datadir}"
+
+DISTUTILS_PYTHON = "python3"
+DISTUTILS_PYTHON:class-native = "nativepython3"
+
+DISTUTILS_SETUP_PATH ?= "${S}"
+
+python __anonymous() {
+ bb.warn("distutils3.bbclass is deprecated, please use setuptools3.bbclass instead")
+}
+
+distutils3_do_configure() {
+ :
+}
+
+distutils3_do_compile() {
+ cd ${DISTUTILS_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} ${DISTUTILS_BUILD_ARGS} || \
+ bbfatal_log "'${PYTHON_PN} setup.py build ${DISTUTILS_BUILD_ARGS}' execution failed."
+}
+distutils3_do_compile[vardepsexclude] = "MACHINE"
+
+distutils3_do_install() {
+ cd ${DISTUTILS_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 ${DISTUTILS_INSTALL_ARGS} || \
+ bbfatal_log "'${PYTHON_PN} setup.py install ${DISTUTILS_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\ ${DISTUTILS_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
+}
+distutils3_do_install[vardepsexclude] = "MACHINE"
+
+EXPORT_FUNCTIONS do_configure do_compile do_install
+
+export LDSHARED="${CCLD} -shared"