--- trunk/core/include/python.sminc 2008/10/10 13:29:42 2 +++ trunk/include/python.sminc 2017/10/13 08:08:12 29817 @@ -1,39 +1,132 @@ -# $Header: /magellan-cvs/smage/include/python.sminc,v 1.4 2007/01/23 20:46:41 niro Exp $ +# $Id$ + +# simulate the old behavior +if [[ -z ${MAGE_PYTHON_EXEC} ]] +then + MAGE_PYTHON_EXEC="python" + + SDEPEND="${SDEPEND} + >= dev-lang/python-2.7" +fi # get the major.minor current installed python version # -> ex 2.4 -get_python_version() +mget-python-version() { -# PYVER="$(python -V 2>&1 | cut -d' ' -f2 | cut -d. -f1-2)" - PYVER=$(python -c "import sys ; print sys.version[:3]") - [[ -z ${PYVER} ]] && return 1 - echo "${PYVER}" + local pyver +# pyver="$(${MAGE_PYTHON_EXEC} -V 2>&1 | cut -d' ' -f2 | cut -d. -f1-2)" + pyver=$(${MAGE_PYTHON_EXEC} -c "import sys ; (print sys.version[:3])") + [[ -z ${pyver} ]] && return 1 + echo "${pyver}" return 0 } -get_python_libdir() +mget-python-libdir() { local pylib - pylib=$(python -c 'from distutils import sysconfig; print sysconfig.get_python_version()') + pylib=$(${MAGE_PYTHON_EXEC} -c 'from distutils import sysconfig; print (sysconfig.get_python_lib())') + [[ -z ${pylib} ]] && return 1 echo "${pylib}" return 0 } +mget-python-includedir() +{ + local pyinc + pyinc=$(${MAGE_PYTHON_EXEC} -c 'from distutils import sysconfig; print (sysconfig.get_python_inc())') + [[ -z ${pyinc} ]] && return 1 + echo "${pyinc}" + return 0 +} + +# fallback functions to support old smage scripts, dropped in near future +get_python_version() +{ + echo -e "${COLYELLOW}Warning: get_python_version() is depcrecated, please use mget-python-version() instead${COLDEFAULT}" >&2 + mget-python-version +} +get_python_libdir() +{ + echo -e "${COLYELLOW}Warning: get_python_libdir() is depcrecated, please use mget-python-libdir() instead${COLDEFAULT}" >&2 + mget-python-libdir +} +get_python_includedir() +{ + echo -e "${COLYELLOW}Warning: get_python_includedir() is depcrecated, please use mget-python-includedir() instead${COLDEFAULT}" >&2 + mget-python-includedir +} + python_src_prepare() { munpack ${SRCFILE} || die } +python_docompile() +{ + if [[ -e setup.py ]] + then + ${MAGE_PYTHON_EXEC} setup.py build $@ || die + elif [[ -e waf ]] + then + ${MAGE_PYTHON_EXEC} waf configure --prefix=/usr --libdir=/usr/$(mlibdir) $@ || die + ${MAGE_PYTHON_EXEC} waf build $@ || die + elif [[ -e configure ]] + then + mconfigure $@ || die + mmake || die + elif [[ -e install.py ]] + then + echo "install.py found - nothing to compile here." + else + mmake || die + fi +} + +python_doinstall() +{ + if [[ -e setup.py ]] + then + ${MAGE_PYTHON_EXEC} setup.py install --no-compile --root ${BINDIR} $@ || die + elif [[ -e waf ]] + then + ${MAGE_PYTHON_EXEC} waf install --destdir=${BINDIR} $@ || die + elif [[ -e install.py ]] + then + ${MAGE_PYTHON_EXEC} install.py --prefix=/usr --files-only --destdir=${BINDIR} $@ || die + else + mmake DESTDIR=${BINDIR} install || die + fi +} + python_src_compile() { cd ${SRCDIR} - python setup.py build "$@" || die + python_docompile $@ || die +} + +python_multilib_src_compile() +{ + local abi + local saved_SRCDIR="${SRCDIR}" + + for abi in ${MULTILIB_ABIS} + do + SRCDIR="${saved_SRCDIR}-${abi}/${SRCSUBDIR}" + cd ${SRCDIR} + abi-${abi} python_docompile $@ || die + done + SRCDIR="${saved_SRCDIR}" +} + +python_src_check() +{ + return 0 } python_src_install() { cd ${SRCDIR} - python setup.py install --no-compile --root ${BINDIR} "$@" || die + python_doinstall $@ || die local i for i in ABOUT-NLS AUTHORS BUGS CHANGES ChangeLog COPYING \ @@ -46,4 +139,34 @@ done } -export_inherits python src_prepare src_compile src_install +python_multilib_src_install() +{ + local abi + local saved_SRCDIR="${SRCDIR}" + + for abi in ${MULTILIB_ABIS} + do + SRCDIR="${saved_SRCDIR}-${abi}/${SRCSUBDIR}" + cd ${SRCDIR} + abi-${abi} python_doinstall $@ || die + + local i + for i in ABOUT-NLS AUTHORS BUGS CHANGES ChangeLog COPYING \ + FAQ LICENSE NEWS README TODO + do + if [ -f ${SRCDIR}/${i} ] + then + oldminstalldocs ${i} || die + fi + done + done + SRCDIR="${saved_SRCDIR}" +} + +export_inherits python src_prepare src_check +if [[ ${MULTILIB_BUILD} = true ]] +then + export_inherits python_multilib src_compile src_install +else + export_inherits python src_compile src_install +fi