]> code.ossystems Code Review - openembedded-core.git/commitdiff
distutils3: do out of tree builds
authorRoss Burton <ross.burton@intel.com>
Tue, 10 Dec 2019 13:42:06 +0000 (13:42 +0000)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Sat, 28 Dec 2019 23:25:34 +0000 (23:25 +0000)
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 <ross.burton@intel.com>
meta/classes/distutils3.bbclass

index a277921dd03db342b2f3d42a1924dbfcd1ce70ba..7356b5245aa6e817ecd375d4aff44382282924d7 100644 (file)
@@ -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*