distutils3.bbclass 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. inherit distutils3-base
  2. B = "${WORKDIR}/build"
  3. distutils_do_configure[cleandirs] = "${B}"
  4. DISTUTILS_BUILD_ARGS ?= ""
  5. DISTUTILS_INSTALL_ARGS ?= "--root=${D} \
  6. --prefix=${prefix} \
  7. --install-lib=${PYTHON_SITEPACKAGES_DIR} \
  8. --install-data=${datadir}"
  9. DISTUTILS_PYTHON = "python3"
  10. DISTUTILS_PYTHON_class-native = "nativepython3"
  11. distutils3_do_configure() {
  12. :
  13. }
  14. distutils3_do_compile() {
  15. cd ${S}
  16. NO_FETCH_BUILD=1 \
  17. STAGING_INCDIR=${STAGING_INCDIR} \
  18. STAGING_LIBDIR=${STAGING_LIBDIR} \
  19. ${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN} ${S}/setup.py \
  20. build --build-base=${B} ${DISTUTILS_BUILD_ARGS} || \
  21. bbfatal_log "'${PYTHON_PN} setup.py build ${DISTUTILS_BUILD_ARGS}' execution failed."
  22. }
  23. distutils3_do_compile[vardepsexclude] = "MACHINE"
  24. distutils3_do_install() {
  25. cd ${S}
  26. install -d ${D}${PYTHON_SITEPACKAGES_DIR}
  27. STAGING_INCDIR=${STAGING_INCDIR} \
  28. STAGING_LIBDIR=${STAGING_LIBDIR} \
  29. PYTHONPATH=${D}${PYTHON_SITEPACKAGES_DIR} \
  30. ${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN} ${S}/setup.py \
  31. build --build-base=${B} install --skip-build ${DISTUTILS_INSTALL_ARGS} || \
  32. bbfatal_log "'${PYTHON_PN} setup.py install ${DISTUTILS_INSTALL_ARGS}' execution failed."
  33. # support filenames with *spaces*
  34. find ${D} -name "*.py" -exec grep -q ${D} {} \; \
  35. -exec sed -i -e s:${D}::g {} \;
  36. for i in ${D}${bindir}/* ${D}${sbindir}/*; do
  37. if [ -f "$i" ]; then
  38. sed -i -e s:${PYTHON}:${USRBINPATH}/env\ ${DISTUTILS_PYTHON}:g $i
  39. sed -i -e s:${STAGING_BINDIR_NATIVE}:${bindir}:g $i
  40. fi
  41. done
  42. rm -f ${D}${PYTHON_SITEPACKAGES_DIR}/easy-install.pth
  43. #
  44. # FIXME: Bandaid against wrong datadir computation
  45. #
  46. if [ -e ${D}${datadir}/share ]; then
  47. mv -f ${D}${datadir}/share/* ${D}${datadir}/
  48. rmdir ${D}${datadir}/share
  49. fi
  50. }
  51. distutils3_do_install[vardepsexclude] = "MACHINE"
  52. EXPORT_FUNCTIONS do_configure do_compile do_install
  53. export LDSHARED="${CCLD} -shared"