From de1b57acedaaf01e10059792eb0031ceafcc8b97 Mon Sep 17 00:00:00 2001 From: Ross Burton Date: Tue, 10 Dec 2019 13:42:06 +0000 Subject: distutils3: do out of tree builds Pass --build-base so the build tree is a location we specify, which we can ensure is empty when building. This means we can stub out do_configure entirely and use cleandirs instead. When installing we need to tell it to do a build so that we can pass --build-base, so also pass --skip-build to avoid the potential rebuild. Signed-off-by: Ross Burton --- meta/classes/distutils3.bbclass | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) (limited to 'meta/classes/distutils3.bbclass') diff --git a/meta/classes/distutils3.bbclass b/meta/classes/distutils3.bbclass index a277921dd0..7356b5245a 100644 --- a/meta/classes/distutils3.bbclass +++ b/meta/classes/distutils3.bbclass @@ -1,5 +1,8 @@ inherit distutils3-base +B = "${WORKDIR}/build" +distutils_do_configure[cleandirs] = "${B}" + DISTUTILS_BUILD_ARGS ?= "" DISTUTILS_INSTALL_ARGS ?= "--root=${D} \ --prefix=${prefix} \ @@ -10,28 +13,28 @@ DISTUTILS_PYTHON = "python3" DISTUTILS_PYTHON_class-native = "nativepython3" distutils3_do_configure() { - if [ "${CLEANBROKEN}" != "1" ] ; then - NO_FETCH_BUILD=1 \ - ${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN} setup.py clean ${DISTUTILS_BUILD_ARGS} - fi + : } distutils3_do_compile() { + cd ${S} NO_FETCH_BUILD=1 \ STAGING_INCDIR=${STAGING_INCDIR} \ STAGING_LIBDIR=${STAGING_LIBDIR} \ - ${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN} setup.py \ - build ${DISTUTILS_BUILD_ARGS} || \ + ${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN} ${S}/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 ${S} 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 install ${DISTUTILS_INSTALL_ARGS} || \ + ${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN} ${S}/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* -- cgit 1.2.3-korg