diff options
31 files changed, 827 insertions, 791 deletions
@@ -10,6 +10,29 @@ in the release notes and/or placed into UPDATING. All ports committers are allowed to commit to this file. +20140809: +AUTHOR: mva@FreeBSD.org + + The Python language bits of the poorts framework have been converted + to USES. Instead of USE_PYTHON, please use USES=python instead. + + USE_PYTHON=yes becomes USES=python + USE_PYTHON=2.7+ becomes USES=python:2.7+ + USE_PYTHON_BUILD=3.3 becomes USES=python:3.3,build + ... + + Additionally, several Python specific feeatures have been converted + to USES-inspired PYTHON_FEATURES=<featureA>,<featureB>. + + USE_PYDISTUTILS becomes PYTHON_FEATURES=distutils + PYDISTUTILS_AUTOPLIST becomes PYTHON_FEATURES=autoplist + ... + + Please read the header comments of Uses/python.mk for more details + about the new and changed bits and pieces. You will find a list of + deprecated variables and how to replace them in your own ports at + the end of the header comment. + 20140715: AUTHOR: bapt@FreeBSD.org diff --git a/Mk/Uses/python.mk b/Mk/Uses/python.mk new file mode 100644 index 0000000..8e15bdc9 --- /dev/null +++ b/Mk/Uses/python.mk @@ -0,0 +1,676 @@ +# $FreeBSD$ +# +# Provide support for Python related ports. This includes detecting Python +# interpreters, ports providing package and modules for python as well as +# consumer ports requiring Python at build or run time. +# +# Feature: python +# Usage: USES=python or USES=python:args +# Valid ARGS: <version>, build, run +# +# version If your port requires only some set of Python versions, you +# can set this to [min]-[max] or min+ or -max or as an +# explicit version or as a meta port version (eg. 3.2-3.3 for +# [min]-[max], 2.7+ or -3.2 for min+ and -max, 2.7 for an +# explicit version or 3 for a meta port version). Example: +# +# USES=python:2.7 # Only use Python 2.7 +# USES=python:3.2+ # Use Python 3.2 or newer +# USES=python:3.2-3.3 # Use Python 3.2 or 3.3 +# USES=python:-3.2 # Use any Python up to 3.2 +# USES=python:2 # Use the Python 2 meta port +# USES=python # Use the set default Python +# # version +# +# build Indicates that Python is needed at build time and adds +# it as BUILD_DEPENDS. +# run Indicates that Python is needed at run time and adds +# it as RUN_DEPENDS. +# +# If build and run are omitted, Python will be added as BUILD_DEPENDS and +# RUN_DEPENDS. +# +# Variables, which can be set by a user: +# +# PYTHON_VERSION - The chosen Python interpreter including the version, +# e.g. python2.7, python3.3, etc. This allows the user +# to override the currently chosen default version and +# to install the port for a specific Python version. +# It must not be set by a port. +# +# Variables, which can be set by the port: +# +# PYTHON_FEATURES - A list of additional features and functionality to +# enable. Supported features are: +# +# concurrent - Indicates that the port can be installed for +# different python versions at the same time. The port +# is supposed to use a unique prefix for certain +# directories using USES=uniquefiles:dirs (see the +# uniquefiles.mk Uses for details about the +# directories), if set to yes. Binaries receive an +# additional suffix, based on ${PYTHON_VER}. +# +# The values for the uniquefiles USES are set as +# follows: +# +# UNIQUE_PREFIX= ${PYTHON_PKGNAMEPREFIX} +# UNIQUE_SUFFIX= -${PYTHON_VER} +# +# If the port is installed for the current default +# python version, scripts and binaries in +# +# ${PREFIX}/bin +# ${PREFIX}/sbin +# ${PREFIX}/libexec +# +# are linked from the prefixed version to the +# prefix-less original name, e.g. +# bin/foo-2.7 --> bin/foo. +# +# distutils - Use distutils as do-configure, do-build and +# do-install targets. +# +# autoplist - Automatically generates the packaging list for a +# port that uses distutils when defined. +# requires: distutils +# +# py3kplist - Automatically generates Python 3.x compatible +# __pycache__ entries from a Python 2.x packaging list +# when defined. Use this for ports that do *not* use +# standard Python packaging mechanisms such as +# distutils, and support *both* Python 2.x and 3.x. +# Not needed, if PYTHON_FEATURES=autoplist is set. +# +# pythonprefix - Says that the port installs in ${PYTHONBASE} instead +# of ${PREFIX}. +# +# noegginfo - Skip an egg-info entry from plist, if defined. +# +# PYTHON_CMD - Python's command line file name, including the +# version number (used for dependencies). +# default: ${PYTHONBASE}/bin/${PYTHON_VERSION} +# +# PYSETUP - Name of the setup script used by the distutils +# package. +# default: setup.py +# +# PYDISTUTILS_PKGNAME +# - Internal name in the distutils for egg-info. +# default: ${PORTNAME} +# +# PYDISTUTILS_PKGVERSION +# - Internal version in the distutils for egg-info. +# default: ${PORTVERSION} +# +# PYDISTUTILS_CONFIGURE_TARGET +# - Pass this command to distutils on configure stage. +# default: config +# +# PYDISTUTILS_BUILD_TARGET +# - Pass this command to distutils on build stage. +# default: build +# +# PYDISTUTILS_INSTALL_TARGET +# - Pass this command to distutils on install stage. +# default: install +# +# PYDISTUTILS_CONFIGUREARGS +# - Arguments to config with distutils. +# default: <empty> +# +# PYDISTUTILS_BUILDARGS +# - Arguments to build with distutils. +# default: <empty> +# +# PYDISTUTILS_INSTALLARGS +# - Arguments to install with distutils. +# default: -c -O1 --prefix=${PREFIX} --single-version-externally-managed --root=${STAGEDIR} +# +# PYDISTUTILS_EGGINFO +# - Canonical name for egg-info. +# default: ${PYDISTUTILS_PKGNAME:C/[^A-Za-z0-9.]+/_/g}-${PYDISTUTILS_PKGVERSION:C/[^A-Za-z0-9.]+/_/g}-py${PYTHON_VER}.egg-info +# +# The following variables can be read by ports and must not be modified: +# +# PYTHONBASE - The installation prefix of the chosen Python +# interpreter, e.g. /usr/local +# +# PYTHON_PORTVERSION +# - Version number suitable for ${PORTVERSION}. +# +# PYTHON_PORTSDIR - The port directory of the chosen Python interpreter +# +# PYTHON_REL - The release number of the chosen Python interpreter +# without dots, e.g. 276, 341, ... +# +# PYTHON_SUFFIX - The major-minor release number of the chosen Python +# interpreter without dots, e.g. 27, 34, ... +# Used for prefixes and suffixes. +# +# PYTHON_MAJOR_VER - The major release version of the chosen Python +# interpreter, e.g. 2, 3, ... +# +# PYTHON_VER - The major-minor release version of the chosen Python +# interpreter, e.g. 2.7, 3.4, ... +# +# PYTHON_ABIVER - Additional ABI flags set by the chosen Python +# interpreter, e.g. md +# +# PYTHON_INCLUDEDIR - Location of the Python include files. +# default: ${PYTHONBASE}/include/${PYTHON_VERSION} +# +# PYTHON_LIBDIR - Base of the python library tree +# default: ${PYTHONBASE}/lib/${PYTHON_VERSION} +# +# PYTHON_SITELIBDIR - Location of the site-packages tree. Don't change, +# unless you know what you do. +# default: ${PYTHON_LIBDIR}/site-packages +# +# There are PREFIX-clean variants of the PYTHON_*DIR variables above. +# They are meant to be used by ports instead of the above variables, so the +# ports respect ${PREFIX} (unless PYTHON_FEATURES=pythonprefix is specified). +# +# PYTHONPREFIX_INCLUDEDIR default: ${PREFIX}/include/${PYTHON_VERSION} +# PYTHONPREFIX_LIBDIR default: ${PREFIX}/lib/${PYTHON_VERSION} +# PYTHONPREFIX_SITELIBDIR default: ${PYTHONPREFIX_LIBDIR}/site-packages +# +# PYTHON_PLATFORM - Python's idea of the OS release. +# This is faked with ${OPSYS} and ${OSREL} until we +# find out how to delay defining a variable until +# after a certain target has been built. +# +# PYTHON_PKGNAMEPREFIX +# - Use this as a ${PKGNAMEPREFIX} to distinguish +# packages for different Python versions. +# default: py${PYTHON_SUFFIX}- +# +# Using USES=python.mk also will add some useful entries to PLIST_SUB: +# +# PYTHON_INCLUDEDIR=${PYTHONPREFIX_INCLUDEDIR:S;${PREFIX}/;;} +# PYTHON_LIBDIR=${PYTHONPREFIX_LIBDIR:S;${PREFIX}/;;} +# PYTHON_PLATFORM=${PYTHON_PLATFORM} +# PYTHON_SITELIBDIR=${PYTHONPREFIX_SITELIBDIR:S;${PREFIX}/;;} +# PYTHON_VERSION=${PYTHON_VERSION} +# +# +# Deprecated variables, which exist for compatibility and will be removed +# soon: +# +# USE_PYDISTUTILS - Deprecated, use PYTHON_FEATURES=distutils instead +# +# PYDISTUTILS_AUTOPLIST +# - Deprecated, use PYTHON_FEATURES=autoplist instead +# +# PYTHON_PY3K_PLIST_HACK +# - Deprecated, use PYTHON_FEATURES=py3kplist instead +# +# PYDISTUTILS_NOEGGINFO +# - Deprecated, use PYTHON_FEATURES=noegginfo instead +# +# PYTHON_MASTER_SITES +# - Deprecated, use MASTER_SITE_PYTHON instead, +# see bsd.sites.mk +# +# PYTHON_DEFAULT_VERSION +# PYTHON2_DEFAULT_VERSION +# PYTHON3_DEFAULT_VERSION +# - Deprecated, use PYTHON[2,3]_DEFAULT instead, +# see bsd.default-versions.mk +# +# PYTHON_PKGNAMESUFFIX +# - Deprecated, use PYTHON_PKGNAMEPREFIX instead +# default: -py${PYTHON_SUFFIX} +# +# PYTHON_CONCURRENT_INSTALL +# - Deprecated, use PYTHON_FEATURES=concurrent instead +# +# USE_PYTHON_PREFIX - Deprecated, use PYTHON_FEATURES=pythonprefix instead +# +# PYDISTUTILS_INSTALLNOSINGLE +# - Deprecated without replacement +# +# MAINTAINER: python@FreeBSD.org + +.if !defined(_INCLUDE_USES_PYTHON_MK) +_INCLUDE_USES_PYTHON_MK= yes + +# What Python version and what Python interpreters are currently supported? +_PYTHON_VERSIONS= 2.7 3.4 3.3 3.2 # preferred first +_PYTHON_PORTBRANCH= 2.7 # ${_PYTHON_VERSIONS:[1]} +_PYTHON_BASECMD= ${LOCALBASE}/bin/python +_PYTHON_RELPORTDIR= ${PORTSDIR}/lang/python + +# Check the passed arguments +.if !defined(python_ARGS) +python_ARGS= #empty +.endif + +# COMPAT KNOBS, remove them, once the tree is cleaned +.if defined(USE_PYTHON) +.if ${USE_PYTHON} != "yes" +python_ARGS= ${USE_PYTHON} +.endif +.elif defined(USE_PYTHON_BUILD) +.if ${USE_PYTHON_BUILD} != "yes" +python_ARGS= ${USE_PYTHON_BUILD},build +.endif +.elif defined(USE_PYTHON_RUN) +.if ${USE_PYTHON_RUN} != "yes" +python_ARGS= ${USE_PYTHON_RUN},run +.endif +.endif # defined(USE_PYTHON) +.if !defined(PYTHON_FEATURES) +PYTHON_FEATURES= +.if defined(USE_PYDISTUTILS) +PYTHON_FEATURES+= distutils +.endif +.if defined(PYDISTUTILS_AUTOPLIST) +PYTHON_FEATURES+= autoplist +.endif +.if defined(PYTHON_PY3K_PLIST_HACK) +PYTHON_FEATURES+= py3kplist +.endif +.if defined(PYTHON_CONCURRENT_INSTALL) +PYTHON_FEATURES+= concurrent +.endif +.if defined(USE_PYTHON_PREFIX) +PYTHON_FEATURES+= pythonprefix +.endif +.if defined(PYDISTUTILS_NOEGGINFO) +PYTHON_FEATURES+= noegginfo +.endif +.endif # !defined(PYTHON_FEATURES) +# COMPAT KNOBS END + +# Make each individual feature available as _PYTHON_FEATURE_<FEATURENAME> +.for var in ${PYTHON_FEATURES:S/,/ /g} +_PYTHON_FEATURE_${var:tu}= yes +.endfor + +# Make sure that no dependency or some other environment variable +# pollutes the build/run dependency detection +.undef _PYTHON_BUILD_DEP +.undef _PYTHON_RUN_DEP +_PYTHON_ARGS= ${python_ARGS:S/,/ /g} +.if ${_PYTHON_ARGS:Mbuild} +_PYTHON_BUILD_DEP= yes +_PYTHON_ARGS:= ${_PYTHON_ARGS:Nbuild} +.endif +.if ${_PYTHON_ARGS:Mrun} +_PYTHON_RUN_DEP= yes +_PYTHON_ARGS:= ${_PYTHON_ARGS:Nrun} +.endif + +# The port does not specify a build or run dependency, assume both are +# required. +.if !defined(_PYTHON_BUILD_DEP) && !defined(_PYTHON_RUN_DEP) +_PYTHON_BUILD_DEP= yes +_PYTHON_RUN_DEP= yes +.endif + +# Determine version number of Python to use +.include "${PORTSDIR}/Mk/bsd.default-versions.mk" + +.if defined(PYTHON_DEFAULT_VERSION) +WARNING+= "PYTHON_DEFAULT_VERSION is defined, consider using DEFAULT_VERSIONS=python=${PYTHON_DEFAULT_VERSION:S/^python//} instead" +.endif +.if defined(PYTHON2_DEFAULT_VERSION) +WARNING+= "PYTHON2_DEFAULT_VERSION is defined, consider using DEFAULT_VERSIONS=python2=${PYTHON2_DEFAULT_VERSION:S/^python//} instead" +.endif +.if defined(PYTHON3_DEFAULT_VERSION) +WARNING+= "PYTHON3_DEFAULT_VERSION is defined, consider using DEFAULT_VERSIONS=python3=${PYTHON3_DEFAULT_VERSION:S/^python//} instead" +.endif + +.if exists(${LOCALBASE}/bin/python) +_PYTHON_DEFAULT_VERSION!= (${LOCALBASE}/bin/python -c \ + 'import sys; print("%d.%d" % sys.version_info[:2])' 2> /dev/null \ + || ${ECHO_CMD} ${_PYTHON_PORTBRANCH}) | ${TAIL} -1 +.if defined(PYTHON_DEFAULT) && (${PYTHON_DEFAULT} != ${_PYTHON_DEFAULT_VERSION}) +WARNING+= "Your requested default python version ${PYTHON_DEFAULT} is different from the installed default python interpreter version ${_PYTHON_DEFAULT_VERSION}" +.endif +PYTHON_DEFAULT_VERSION= python${_PYTHON_DEFAULT_VERSION} +.else +PYTHON_DEFAULT_VERSION= python${PYTHON_DEFAULT} +.endif # exists(${LOCALBASE}/bin/python) + +# Is only a meta-port version defined? +.if ${PYTHON_DEFAULT_VERSION} == "python2" +PYTHON2_DEFAULT_VERSION?= python${PYTHON2_DEFAULT} +.elif ${PYTHON_DEFAULT_VERSION:R} == "python2" +PYTHON2_DEFAULT_VERSION= ${PYTHON_DEFAULT_VERSION} +.else +PYTHON2_DEFAULT_VERSION?= python${PYTHON2_DEFAULT} +.endif +.if ${PYTHON_DEFAULT_VERSION} == "python3" +PYTHON3_DEFAULT_VERSION?= python${PYTHON3_DEFAULT} +.elif ${PYTHON_DEFAULT_VERSION:R} == "python3" + PYTHON3_DEFAULT_VERSION= ${PYTHON_DEFAULT_VERSION} +.else +PYTHON3_DEFAULT_VERSION?= python${PYTHON3_DEFAULT} +.endif + +.if ${_PYTHON_ARGS} == "2" +_PYTHON_ARGS= ${PYTHON2_DEFAULT_VERSION:S/^python//} +_WANTS_META_PORT= 2 +.elif ${_PYTHON_ARGS} == "3" +_PYTHON_ARGS= ${PYTHON3_DEFAULT_VERSION:S/^python//} +_WANTS_META_PORT= 3 +.endif # ${_PYTHON_ARGS} == "2" + +.if defined(PYTHON_VERSION) +# A port/user requests a specific python version for its dependencies via +# DEPENDS_ARGS, since it requires the specific python version itself. +# Several things can happen now: +# a) the dependency supports the requested version -> everything's fine +# b) the dependency does not support the requested version +# 1) the dependency works in a way that the different python +# versions do not matter -> everything's fine +# 2) the dependency is likely to break due to the conflict +# nothing's fine +# +# b.2) needs to be resolved. Due to the complexity of how different pieces of +# software are built, we can't solve this automatically. Instead, let's assume +# that maintainers know what they are doing and assume PYTHON_VERSION to be a +# hint. Just warn maintainers, if the versions do not match +# (_PYTHON_VERSION_NONSUPPORTED). +_PYTHON_VERSION:= ${PYTHON_VERSION:S/^python//} +_PYTHON_CMD= ${LOCALBASE}/bin/${PYTHON_VERSION} +.else +_PYTHON_VERSION:= ${PYTHON_DEFAULT_VERSION:S/^python//} +_PYTHON_CMD= ${LOCALBASE}/bin/${PYTHON_DEFAULT_VERSION} +.endif # defined(PYTHON_VERSION) + +# Validate Python version whether it meets the version restriction. +_PYTHON_VERSION_CHECK:= ${_PYTHON_ARGS:C/^([1-9]\.[0-9])$/\1-\1/} +_PYTHON_VERSION_MINIMUM_TMP:= ${_PYTHON_VERSION_CHECK:C/([1-9]\.[0-9])[-+].*/\1/} +_PYTHON_VERSION_MINIMUM:= ${_PYTHON_VERSION_MINIMUM_TMP:M[1-9].[0-9]} +_PYTHON_VERSION_MAXIMUM_TMP:= ${_PYTHON_VERSION_CHECK:C/.*-([1-9]\.[0-9])/\1/} +_PYTHON_VERSION_MAXIMUM:= ${_PYTHON_VERSION_MAXIMUM_TMP:M[1-9].[0-9]} + +.undef _PYTHON_VERSION_NONSUPPORTED +.if !empty(_PYTHON_VERSION_MINIMUM) && (${_PYTHON_VERSION} < ${_PYTHON_VERSION_MINIMUM}) +_PYTHON_VERSION_NONSUPPORTED= ${_PYTHON_VERSION_MINIMUM} at least +.elif !empty(_PYTHON_VERSION_MAXIMUM) && (${_PYTHON_VERSION} > ${_PYTHON_VERSION_MAXIMUM}) +_PYTHON_VERSION_NONSUPPORTED= ${_PYTHON_VERSION_MAXIMUM} at most +.endif + +# If we have an unsupported version of Python, try another. +.if defined(_PYTHON_VERSION_NONSUPPORTED) +WARNING+= "needs Python ${_PYTHON_VERSION_NONSUPPORTED}. But a port depending on this one specified ${_PYTHON_VERSION}" +.undef _PYTHON_VERSION +.for ver in ${PYTHON2_DEFAULT} ${PYTHON3_DEFAULT} ${_PYTHON_VERSIONS} +__VER= ${ver} +.if !defined(_PYTHON_VERSION) && \ + !(!empty(_PYTHON_VERSION_MINIMUM) && ( \ + ${__VER} < ${_PYTHON_VERSION_MINIMUM})) && \ + !(!empty(_PYTHON_VERSION_MAXIMUM) && ( \ + ${__VER} > ${_PYTHON_VERSION_MAXIMUM})) +_PYTHON_VERSION= ${ver} +_PYTHON_CMD= ${LOCALBASE}/bin/python${ver} +.endif +.endfor +.if !defined(_PYTHON_VERSION) +IGNORE= needs an unsupported version of Python +.endif +.endif # defined(_PYTHON_VERSION_NONSUPPORTED) + +# Pass PYTHON_VERSION down the dependency chain. This ensures that +# port A -> B -> C all will use the same python version and do not +# try to find a different one, if the passed version fits into +# the supported version range. +PYTHON_VERSION?= python${_PYTHON_VERSION} +DEPENDS_ARGS+= PYTHON_VERSION=${PYTHON_VERSION} + +# Got the correct python version, set some publicly accessible variables +PYTHON_VER= ${_PYTHON_VERSION} +PYTHON_SUFFIX= ${_PYTHON_VERSION:S/.//g} +PYTHON_MAJOR_VER= ${PYTHON_VER:R} +PYTHON_REL= # empty +PYTHON_ABIVER= # empty +PYTHON_PORTSDIR= ${_PYTHON_RELPORTDIR}${PYTHON_SUFFIX} +PYTHON_PORTVERSION!= ${MAKE} -V PORTVERSION -C ${PYTHON_PORTSDIR} +PYTHON_REL= ${PYTHON_PORTVERSION:S/.//g} + +# Might be overridden by calling ports +PYTHON_CMD?= ${_PYTHON_BASECMD}${_PYTHON_VERSION} +.if exists(${PYTHON_CMD}-config) && ${PYTHON_VER} != 2.7 +PYTHON_ABIVER!= ${PYTHON_CMD}-config --abiflags +.endif + +PYTHONBASE!= (${PYTHON_CMD} -c 'import sys; print(sys.prefix)' \ + 2> /dev/null || ${ECHO_CMD} ${LOCALBASE}) | ${TAIL} -1 + +PYTHON_INCLUDEDIR= ${PYTHONBASE}/include/${PYTHON_VERSION}${PYTHON_ABIVER} +PYTHON_LIBDIR= ${PYTHONBASE}/lib/${PYTHON_VERSION} +PYTHON_PLATFORM= ${OPSYS:tl}${OSREL:C/\.[0-9.]*//} +PYTHON_SITELIBDIR= ${PYTHON_LIBDIR}/site-packages +PYTHON_PKGNAMEPREFIX= py${PYTHON_SUFFIX}- +PYTHON_PKGNAMESUFFIX= -py${PYTHON_SUFFIX} + +PYTHONPREFIX_INCLUDEDIR= ${PYTHON_INCLUDEDIR:S;${PYTHONBASE};${PREFIX};} +PYTHONPREFIX_LIBDIR= ${PYTHON_LIBDIR:S;${PYTHONBASE};${PREFIX};} +PYTHONPREFIX_SITELIBDIR= ${PYTHON_SITELIBDIR:S;${PYTHONBASE};${PREFIX};} + +# Used for recording the installed files. +_PYTHONPKGLIST= ${WRKDIR}/.PLIST.pymodtmp + +# Ports bound to a certain python version SHOULD +# - use the PYTHON_PKGNAMEPREFIX +# - use directories using the PYTHON_PKGNAMEPREFIX +# - install binaries using the required PYTHON_VER, with +# the default python version creating a symlink to the original binary +# name (for staging-aware ports). +# +# What makes a port 'bound' to a certain python version? +# - it installs data into PYTHON_SITELIBDIR, PYTHON_INCLUDEDIR, ... +# - it links against libpython*.so +# - it uses PYTHON_FEATURES=distutils +# +.if defined(NO_STAGE) && defined(_PYTHON_FEATURE_CONCURRENT) +BROKEN= PYTHON_FEATURES=concurrent uses USES=uniquefiles, which is not stage-safe +.endif + +.if defined(_PYTHON_FEATURE_CONCURRENT) +_USES_POST+= uniquefiles:dirs +.if ${PYTHON_VERSION} == ${PYTHON_DEFAULT_VERSION} +UNIQUE_DEFAULT_LINKS= yes +.else +UNIQUE_DEFAULT_LINKS= no +.endif +UNIQUE_PREFIX= ${PYTHON_PKGNAMEPREFIX} +UNIQUE_SUFFIX= -${PYTHON_VER} + +.if defined(_PYTHON_FEATURE_AUTOPLIST) +UNIQUE_FIND_SUFFIX_FILES= \ + ${SED} -e 's|^${PREFIX}/||' ${_PYTHONPKGLIST} ${TMPPLIST} | \ + ${GREP} -e '^bin/.*$$\|^sbin/.*$$\|^libexec/.*$$' +.else +UNIQUE_FIND_SUFFIX_FILES= \ + ${GREP} -he '^bin/.*$$\|^sbin/.*$$\|^libexec/.*$$' ${TMPPLIST} 2>/dev/null +.endif +.endif # defined(_PYTHON_FEATURE_CONCURRENT) + +_CURRENTPORT:= ${PKGNAMEPREFIX}${PORTNAME}${PKGNAMESUFFIX} +.if defined(_PYTHON_FEATURE_DISTUTILS) && \ + ${_CURRENTPORT:S/${PYTHON_SUFFIX}$//} != ${PYTHON_PKGNAMEPREFIX}setuptools +BUILD_DEPENDS+= ${PYTHON_PKGNAMEPREFIX}setuptools${PYTHON_SUFFIX}>0:${PORTSDIR}/devel/py-setuptools${PYTHON_SUFFIX} +RUN_DEPENDS+= ${PYTHON_PKGNAMEPREFIX}setuptools${PYTHON_SUFFIX}>0:${PORTSDIR}/devel/py-setuptools${PYTHON_SUFFIX} +.endif + +# distutils support +PYSETUP?= setup.py +PYDISTUTILS_SETUP?= -c \ + "import sys; import setuptools; \ + __file__='${PYSETUP}'; sys.argv[0]='${PYSETUP}'; \ + exec(compile(open(__file__, 'rb').read().replace(b'\\r\\n', b'\\n'), __file__, 'exec'))" +PYDISTUTILS_CONFIGUREARGS?= # empty +PYDISTUTILS_BUILDARGS?= # empty +PYDISTUTILS_INSTALLARGS?= -c -O1 --prefix=${PREFIX} +.if defined(_PYTHON_FEATURE_DISTUTILS) +. if !defined(PYDISTUTILS_INSTALLNOSINGLE) +PYDISTUTILS_INSTALLARGS+= --single-version-externally-managed +. endif +. if !defined(NO_STAGE) +PYDISTUTILS_INSTALLARGS+= --root=${STAGEDIR} +. endif +.endif +PYDISTUTILS_INSTALLARGS:= --record ${_PYTHONPKGLIST} \ + ${PYDISTUTILS_INSTALLARGS} + +PYDISTUTILS_PKGNAME?= ${PORTNAME} +PYDISTUTILS_PKGVERSION?=${PORTVERSION} +PYDISTUTILS_EGGINFO?= ${PYDISTUTILS_PKGNAME:C/[^A-Za-z0-9.]+/_/g}-${PYDISTUTILS_PKGVERSION:C/[^A-Za-z0-9.]+/_/g}-py${PYTHON_VER}.egg-info +PYDISTUTILS_EGGINFODIR?=${STAGEDIR}${PYTHONPREFIX_SITELIBDIR} + +add-plist-egginfo: +.if !defined(_PYTHON_FEATURE_NOEGGINFO) && \ + !defined(_PYTHON_FEATURE_AUTOPLIST) && \ + (defined(INSTALLS_EGGINFO) || defined(_PYTHON_FEATURE_DISTUTILS)) && \ + defined(PYTHON_REL) +. for egginfo in ${PYDISTUTILS_EGGINFO} + if [ -d "${PYDISTUTILS_EGGINFODIR}/${egginfo}" ]; then \ + ${LS} ${PYDISTUTILS_EGGINFODIR}/${egginfo} | while read f; do \ + ${ECHO_CMD} ${PYDISTUTILS_EGGINFODIR:S;^${STAGEDIR}${PYTHONBASE}/;;}/${egginfo}/$${f} >> ${TMPPLIST}; \ + done; \ + ${ECHO_CMD} "@dirrmtry ${PYDISTUTILS_EGGINFODIR:S;${STAGEDIR}${PYTHONBASE}/;;}/${egginfo}" >> ${TMPPLIST}; \ + fi; +. endfor +.else + @${DO_NADA} +.endif + +.if defined(_PYTHON_FEATURE_AUTOPLIST) && defined(_PYTHON_FEATURE_DISTUTILS) +_RELSITELIBDIR= ${PYTHONPREFIX_SITELIBDIR:S;${PREFIX}/;;} +_RELLIBDIR= ${PYTHONPREFIX_LIBDIR:S;${PREFIX}/;;} + +add-plist-post: add-plist-pymod +add-plist-pymod: + @{ ${ECHO_CMD} "#mtree"; ${CAT} ${MTREE_FILE}; } | ${TAR} tf - | \ + ${SED} '/^\.$$/d' > ${WRKDIR}/.localmtree + @${ECHO_CMD} "${_RELSITELIBDIR}" >> ${WRKDIR}/.localmtree + @${ECHO_CMD} "${_RELLIBDIR}" >> ${WRKDIR}/.localmtree + @${SED} -e 's|^${STAGEDIR}${PREFIX}/||' \ + -e 's|^${PREFIX}/||' \ + -e 's|^\(man/.*man[0-9]\)/\(.*\.[0-9]\)$$|\1/\2${MANEXT}|' \ + ${_PYTHONPKGLIST} | ${SORT} >> ${TMPPLIST} + @${SED} -e 's|^${STAGEDIR}${PREFIX}/\(.*\)/\(.*\)|\1|' \ + -e 's|^${PREFIX}/\(.*\)/\(.*\)|\1|' ${_PYTHONPKGLIST} | \ + ${AWK} '{ num = split($$0, a, "/"); res=""; \ + for(i = 1; i <= num; ++i) { \ + if (i == 1) res = a[i]; \ + else res = res "/" a[i]; \ + print res; \ + } \ + }' | \ + while read line; do \ + ${GREP} -qw "^$${line}$$" ${WRKDIR}/.localmtree || { \ + [ -n "$${line}" ] && \ + ${ECHO_CMD} "@dirrmtry $${line}"; \ + }; \ + done | ${SORT} | uniq | ${SORT} -r >> ${TMPPLIST} +.if ${PREFIX} != ${LOCALBASE} + @${ECHO_CMD} "@dirrmtry ${PYTHON_SITELIBDIR:S;${PYTHONBASE}/;;}" >> ${TMPPLIST} + @${ECHO_CMD} "@dirrmtry ${PYTHON_LIBDIR:S;${PYTHONBASE}/;;}" >> ${TMPPLIST} +.endif + +.else +.if ${PYTHON_REL} >= 320 && defined(_PYTHON_FEATURE_PY3KPLIST) +# When Python version is 3.2+ we rewrite all the filenames +# of TMPPLIST that end with .py[co], so that they conform +# to PEP 3147 (see http://www.python.org/dev/peps/pep-3147/) +PYMAGICTAG= ${PYTHON_CMD} -c 'import imp; print(imp.get_tag())' +add-plist-post: + @${AWK} '\ + /\.py[co]$$/ && !($$0 ~ "/" pc "/") {id = match($$0, /\/[^\/]+\.py[co]$$/); if (id != 0) {d = substr($$0, 1, RSTART - 1); dirs[d] = 1}; sub(/\.py[co]$$/, "." mt "&"); sub(/[^\/]+\.py[co]$$/, pc "/&"); print; next} \ + /^@dirrm / {d = substr($$0, 8); if (d in dirs) {print $$0 "/" pc}; print $$0; next} \ + /^@dirrmtry / {d = substr($$0, 11); if (d in dirs) {print $$0 "/" pc}; print $$0; next} \ + {print} \ + END {if (sp in dirs) {print "@dirrm " sp "/" pc}} \ + ' \ + pc="__pycache__" mt="$$(${PYMAGICTAG})" sp="${PYTHON_SITELIBDIR:S,${PYTHONBASE}/,,g}" \ + ${TMPPLIST} > ${TMPPLIST}.pyc_tmp + @${MV} ${TMPPLIST}.pyc_tmp ${TMPPLIST} +.endif # ${PYTHON_REL} >= 320 && defined(_PYTHON_FEATURE_PY3KPLIST) +.endif # defined(_PYTHON_FEATURE_AUTOPLIST) && defined(_PYTHON_FEATURE_DISTUTILS) + +# Fix for programs that build python from a GNU auto* environment +CONFIGURE_ENV+= PYTHON="${PYTHON_CMD}" + +# Python 3rd-party modules +PYGAME= ${PYTHON_PKGNAMEPREFIX}game>0:${PORTSDIR}/devel/py-game +PYNUMERIC= ${PYTHON_SITELIBDIR}/Numeric/Numeric.py:${PORTSDIR}/math/py-numeric +PYNUMPY= ${PYTHON_SITELIBDIR}/numpy/core/numeric.py:${PORTSDIR}/math/py-numpy +PYXML= ${PYTHON_SITELIBDIR}/_xmlplus/__init__.py:${PORTSDIR}/textproc/py-xml + +# dependencies +.if defined(_PYTHON_BUILD_DEP) +BUILD_DEPENDS+= ${PYTHON_CMD}:${PYTHON_PORTSDIR} +.if defined(_WANTS_META_PORT) +BUILD_DEPENDS+= python${_WANTS_META_PORT}:${_PYTHON_RELPORTDIR}${_WANTS_META_PORT} +.endif +.endif +.if defined(_PYTHON_RUN_DEP) +RUN_DEPENDS+= ${PYTHON_CMD}:${PYTHON_PORTSDIR} +.if defined(_WANTS_META_PORT) +RUN_DEPENDS+= python${_WANTS_META_PORT}:${_PYTHON_RELPORTDIR}${_WANTS_META_PORT} +.endif +.endif + +# set $PREFIX as Python's one +.if defined(_PYTHON_FEATURE_PYTHONPREFIX) +PREFIX= ${PYTHONBASE} +.endif + +# Substitutions for pkg-plist +# Use a short form of the PYTHONPREFIX_*DIR variables; we don't need the +# base directory in the plist file. +PLIST_SUB+= PYTHON_INCLUDEDIR=${PYTHONPREFIX_INCLUDEDIR:S;${PREFIX}/;;} \ + PYTHON_LIBDIR=${PYTHONPREFIX_LIBDIR:S;${PREFIX}/;;} \ + PYTHON_PLATFORM=${PYTHON_PLATFORM} \ + PYTHON_SITELIBDIR=${PYTHONPREFIX_SITELIBDIR:S;${PREFIX}/;;} \ + PYTHON_VERSION=${PYTHON_VERSION} + +# If multiple Python versions are installed and cmake is used, it might +# happen that a cmake-enabled port using find_package(PythonLibs) and +# find_package(PythonInterp) detects different Python versions. +# This in turn might cause it to link against version X while using the +# includes of version Y, leading to a broken port. +# Enforce a certain Python version by using PYTHON_VER for cmake. +CMAKE_ARGS+= \ + -DPythonLibs_FIND_VERSION:STRING="${PYTHON_VER}" \ + -DPythonInterp_FIND_VERSION:STRING="${PYTHON_VER}" + +_USES_POST+= python +.endif # _INCLUDE_USES_PYTHON_MK + +.if defined(_POSTMKINCLUDED) && !defined(_INCLUDE_USES_PYTHON_POST_MK) +_INCLUDE_USES_PYTHON_POST_MK= yes + +# py-distutils support +PYDISTUTILS_CONFIGURE_TARGET?= config +PYDISTUTILS_BUILD_TARGET?= build +PYDISTUTILS_INSTALL_TARGET?= install + +.if defined(_PYTHON_FEATURE_DISTUTILS) +LDSHARED?= ${CC} -shared +MAKE_ENV+= LDSHARED="${LDSHARED}" PYTHONDONTWRITEBYTECODE= PYTHONOPTIMIZE= + +.if !target(do-configure) && !defined(HAS_CONFIGURE) && !defined(GNU_CONFIGURE) +do-configure: + @(cd ${BUILD_WRKSRC}; ${SETENV} ${MAKE_ENV} ${PYTHON_CMD} ${PYDISTUTILS_SETUP} ${PYDISTUTILS_CONFIGURE_TARGET} ${PYDISTUTILS_CONFIGUREARGS}) +.endif + +.if !target(do-build) +do-build: + @(cd ${BUILD_WRKSRC}; ${SETENV} ${MAKE_ENV} ${PYTHON_CMD} ${PYDISTUTILS_SETUP} ${PYDISTUTILS_BUILD_TARGET} ${PYDISTUTILS_BUILDARGS}) +.endif + +.if !target(do-install) +do-install: + @(cd ${INSTALL_WRKSRC}; ${SETENV} ${MAKE_ENV} ${PYTHON_CMD} ${PYDISTUTILS_SETUP} ${PYDISTUTILS_INSTALL_TARGET} ${PYDISTUTILS_INSTALLARGS}) +.endif + +add-plist-post: add-plist-egginfo +.endif # defined(_PYTHON_FEATURE_DISTUTILS) +.endif # defined(_POSTMKINCLUDED) && !defined(_INCLUDE_USES_PYTHON_POST_MK) diff --git a/Mk/bsd.port.mk b/Mk/bsd.port.mk index 0e596f3..d864c92 100644 --- a/Mk/bsd.port.mk +++ b/Mk/bsd.port.mk @@ -394,10 +394,6 @@ FreeBSD_MAINTAINER= portmgr@FreeBSD.org # USE_OCAML - If set, this port relies on the OCaml language. # Implies inclusion of bsd.ocaml.mk. (Also see # that file for more information on USE_OCAML*). -# USE_PYTHON - If set, this port relies on the Python language. -# Implies inclusion of bsd.python.mk. (Also see -# that file for more information on USE_PYTHON_* -# and USE_PYDISTUTILS). # USE_RUBY - If set, this port relies on the Ruby language. # Implies inclusion of bsd.ruby.mk. (Also see # that file for more information on USE_RUBY_*). @@ -1444,7 +1440,7 @@ PKGCOMPATDIR?= ${LOCALBASE}/lib/compat/pkg .endif .if defined(USE_PYTHON) || defined(USE_PYTHON_BUILD) || defined(USE_PYTHON_RUN) -.include "${PORTSDIR}/Mk/bsd.python.mk" +USES+= python .endif .if defined(USE_EFL) || defined(WANT_EFL) || defined(USE_EFL_ESMART) @@ -1890,10 +1886,6 @@ IGNORE= Do not define STAGEDIR in command line .include "${PORTSDIR}/Mk/bsd.php.mk" .endif -.if defined(USE_PYTHON) -.include "${PORTSDIR}/Mk/bsd.python.mk" -.endif - .if defined(USE_WX) || defined(USE_WX_NOT) .include "${PORTSDIR}/Mk/bsd.wx.mk" .endif diff --git a/Mk/bsd.port.subdir.mk b/Mk/bsd.port.subdir.mk index cd51cc1..cb2ecd4 100644 --- a/Mk/bsd.port.subdir.mk +++ b/Mk/bsd.port.subdir.mk @@ -106,20 +106,6 @@ HAVE_COMPAT_IA32_KERN!= if ${SYSCTL} -n compat.ia32.maxvmem >/dev/null 2>&1; the CONFIGURE_MAX_CMD_LEN!= ${SYSCTL} -n kern.argmax .endif -.if !defined(PYTHON_DEFAULT_VERSION) -PYTHON_DEFAULT_VERSION!= ${MAKE} -V PYTHON_DEFAULT_VERSION USE_PYTHON=1 -f ${PORTSDIR}/Mk/bsd.port.mk -.endif - -.if !defined(PYTHON_DEFAULT_PORTVERSION) -# We are caching the PYTHON_PORTVERSION of the default python version so we can reuse it in the -# common case. -PYTHON_DEFAULT_PORTVERSION!= ${MAKE} -V PYTHON_PORTVERSION USE_PYTHON=1 -f ${PORTSDIR}/Mk/bsd.port.mk -.endif - -.if !defined(PYTHONBASE) -PYTHONBASE!= ${MAKE} -V PYTHONBASE USE_PYTHON=1 -f ${PORTSDIR}/Mk/bsd.port.mk -.endif - .if !defined(_JAVA_VERSION_LIST_REGEXP) _JAVA_VERSION_LIST_REGEXP!= ${MAKE} -V _JAVA_VERSION_LIST_REGEXP USE_JAVA=1 -f ${PORTSDIR}/Mk/bsd.port.mk .endif @@ -367,9 +353,6 @@ README.html: UID="${UID:S/"/"'"'"/g:S/\$/\$\$/g:S/\\/\\\\/g}" \ HAVE_COMPAT_IA32_KERN="${HAVE_COMPAT_IA32_KERN}" \ CONFIGURE_MAX_CMD_LEN="${CONFIGURE_MAX_CMD_LEN}" \ - PYTHON_DEFAULT_VERSION="${PYTHON_DEFAULT_VERSION}" \ - PYTHON_DEFAULT_PORTVERSION="${PYTHON_DEFAULT_PORTVERSION}" \ - PYTHONBASE="${PYTHONBASE}" \ _JAVA_VERSION_LIST_REGEXP="${_JAVA_VERSION_LIST_REGEXP:Q}" \ _JAVA_VENDOR_LIST_REGEXP="${_JAVA_VENDOR_LIST_REGEXP:Q}" \ _JAVA_OS_LIST_REGEXP="${_JAVA_OS_LIST_REGEXP:Q}" \ diff --git a/Mk/bsd.python.mk b/Mk/bsd.python.mk deleted file mode 100644 index b9995305..0000000 --- a/Mk/bsd.python.mk +++ /dev/null @@ -1,659 +0,0 @@ -# -*- tab-width: 4; -*- -# ex: ts=4 -# -# $FreeBSD$ -# - -.if !defined(_POSTMKINCLUDED) && !defined(Python_Pre_Include) - -Python_Pre_Include= bsd.python.mk -Python_Include_MAINTAINER= python@FreeBSD.org - -# This file contains some variable definitions that are supposed to -# make your life easier when dealing with ports related to the Python -# language. It's automatically included when USE_PYTHON is defined in -# the ports' makefile. If your port requires only some set of Python -# versions, you can define USE_PYTHON as [min]-[max] or min+ or -max -# or as an explicit version or as a meta port version (eg. 3.2-3.3 -# for [min]-[max], 2.7+ or -3.2 for min+ and -max, 2.7 for an -# explicit version or 3 for a meta port version). -# -# The variables: -# -# PYTHONBASE - Python port's installation prefix. -# default: ${LOCALBASE} -# -# PYTHON_CMD - Python's command line file name, including the version -# number (used for dependencies). -# default: ${PYTHONBASE}/bin/${PYTHON_VERSION} -# -# PYTHON_DISTNAME - The ${DISTNAME} for your python version. Needed for -# extensions like bsddb, gdbm, sqlite3 and tkinter, which -# are built from sources contained in the Python -# distribution. -# -# PYTHON_MASTER_SITES -# - The ${MASTER_SITES} for your python version. (You must -# use this instead of ${MASTER_SITE_PYTHON} to support -# python-devel port.) -# -# PYTHON_MASTER_SITE_SUBDIR -# - The ${MASTER_SITE_SUBDIR} for your python version. -# -# PYTHON_INCLUDEDIR - Location of the Python include files. -# default: ${PYTHONBASE}/include/${PYTHON_VERSION} -# -# PYTHON_LIBDIR - Base of the python library tree -# default: ${PYTHONBASE}/lib/${PYTHON_VERSION} -# -# PYTHON_PKGNAMEPREFIX -# - Use this as a ${PKGNAMEPREFIX} to distinguish -# packages for different Python versions. -# default: py${PYTHON_SUFFIX}- -# -# PYTHON_PKGNAMESUFFIX -# - If your port's name is more popular without `py-' -# prefix, use this as a ${PKGNAMESUFFIX} alternatively. -# default: -py${PYTHON_SUFFIX} -# -# PYTHON_PLATFORM - Python's idea of the OS release. -# XXX This is faked with ${OPSYS} and ${OSREL} until I -# find out how to delay defining a variable until after -# a certain target has been built. -# -# PYTHON_PORTSDIR - The source of your binary's port. Needed for the -# RUN_DEPENDS. -# -# PYTHON_PORTVERSION -# - Version number suitable for ${PORTVERSION}. -# -# PYTHON_REL - Version number in numerical format, to ease -# comparison in makefiles -# -# PYTHON_SITELIBDIR - Location of the site-packages tree. Don't change, -# unless you know what you do. -# default: ${PYTHON_LIBDIR}/site-packages -# -# PYTHON_SUFFIX - Yet another short version number, primarily intended -# for ${PYTHON_PKGNAMEPREFIX}. -# -# PYTHON_VERSION - Version of the python binary in your ${PATH}, in the -# format "python2.0". Set this in your makefile in case -# you want to build extensions with an older binary. -# default: depends on the version of your python binary -# -# PYTHON_VER - Version of the python binary in your ${PATH}, in the -# format "2.7". -# -# PYTHON_DEFAULT_VERSION -# - Version of the default python binary in your ${PATH}, in -# the format "python2.7". -# -# PYTHON2_DEFAULT_VERSION -# - Version of the default python2 binary in your ${PATH}, -# in the format "python2.7". -# -# PYTHON3_DEFAULT_VERSION -# - Version of the default python3 binary in your ${PATH}, -# in the format "python3.2". -# -# PYTHON_MAJOR_VER - Python version major number. 2 for python-2.x, -# 3 for python-3.x and so on. -# -# PYTHON_WRKSRC - The ${WRKSRC} for your python version. Needed for -# extensions like Tkinter, py-gdbm and py-expat, which -# are built from sources contained in the Python -# distribution. -# -# There are PREFIX-clean variants of the PYTHON_*DIR variables above. -# They are meant to be used in the installation targets. -# -# PYTHONPREFIX_INCLUDEDIR default: ${PREFIX}/include/${PYTHON_VERSION} -# PYTHONPREFIX_LIBDIR default: ${PREFIX}/lib/${PYTHON_VERSION} -# PYTHONPREFIX_SITELIBDIR default: ${PYTHONPREFIX_LIBDIR}/site-packages -# -# PYGAME - Dependency line for the Pygame library. -# -# PYNUMERIC - Dependency line for the numeric extension. -# -# PYNUMPY - Dependency line for the new numeric extension. -# py-numpy, Py-Numeric is deprecated. -# -# PYXML - Dependency line for the XML extension. As of Python-2.0, -# this extension is in the base distribution. -# -# PYTHON_CONCURRENT_INSTALL -# - Indicates that the port can be installed for different -# python versions at the same time. The port is supposed -# to use a unique prefix for certain directories using -# USES=uniquefiles:dirs (see the uniquefiles.mk Uses for -# details about the directories), if set to yes. Binaries -# receive an additional suffix, based on PYTHON_VER. -# -# The values for the uniquefiles USES are set as follows: -# -# UNIQUE_PREFIX= ${PYTHON_PKGNAMEPREFIX} -# UNIQUE_SUFFIX= -${PYTHON_VER} -# -# If the port is installed for the current default -# python version, scripts and binaries in -# -# ${PREFIX}/bin -# ${PREFIX}/sbin -# ${PREFIX}/libexec -# -# are linked from the prefixed version to the prefix-less -# original name, e.g. bin/foo-2.7 --> bin/foo. -# -# USE_PYTHON_PREFIX - Says that the port installs in ${PYTHONBASE}. -# -# USE_PYDISTUTILS - Use distutils as do-configure, do-build and do-install -# targets. -# -# PYSETUP - Name of the setup script used by the distutils package. -# default: setup.py -# -# PYDISTUTILS_AUTOPLIST -# - Automatically generates the packaging list for a port -# that uses distutils when defined. -# requires: USE_PYDISTUTILS -# -# PYTHON_PY3K_PLIST_HACK -# - Automatically generates Python 3.x compatible -# __pycache__ entries from a Python 2.x packaging list -# when defined. Use this for ports that do *not* use -# standard Python packaging mechanisms such as distutils, -# and support *both* Python 2.x and 3.x. Not needed when -# PYDISTUTILS_AUTOPLIST is defined. -# -# PYDISTUTILS_PKGNAME -# - Internal name in the distutils for egg-info. -# default: ${PORTNAME} -# -# PYDISTUTILS_PKGVERSION -# - Internal version in the distutils for egg-info. -# default: ${PORTVERSION} -# -# PYDISTUTILS_CONFIGURE_TARGET -# - Pass this command to distutils on configure stage. -# default: config -# -# PYDISTUTILS_BUILD_TARGET -# - Pass this command to distutils on build stage. -# default: build -# -# PYDISTUTILS_INSTALL_TARGET -# - Pass this command to distutils on install stage. -# default: install -# -# PYDISTUTILS_CONFIGUREARGS -# - Arguments to config with distutils. -# default: <empty> -# -# PYDISTUTILS_BUILDARGS -# - Arguments to build with distutils. -# default: <empty> -# -# PYDISTUTILS_INSTALLARGS -# - Arguments to install with distutils. -# default: -c -O1 --prefix=${PREFIX} -# -# PYDISTUTILS_EGGINFO -# - Canonical name for egg-info. -# default: ${PYDISTUTILS_PKGNAME:C/[^A-Za-z0-9.]+/_/g}-${PYDISTUTILS_PKGVERSION:C/[^A-Za-z0-9.]+/_/g}-py${PYTHON_VER}.egg-info -# -# PYDISTUTILS_NOEGGINFO -# - Skip an egg-info entry from plist when defined. -# - -_PYTHON_PORTBRANCH= 2.7 -_PYTHON_ALLBRANCHES= 2.7 3.4 3.3 3.2 # preferred first - -# Determine version number of Python to use -.include "${PORTSDIR}/Mk/bsd.default-versions.mk" - -.if defined(PYTHON_DEFAULT_VERSION) -WARNING+= "PYTHON_DEFAULT_VERSION is defined, consider using DEFAULT_VERSIONS=python=${PYTHON_DEFAULT_VERSION:S/^python//} instead" -.endif -.if defined(PYTHON2_DEFAULT_VERSION) -WARNING+= "PYTHON2_DEFAULT_VERSION is defined, consider using DEFAULT_VERSIONS=python2=${PYTHON2_DEFAULT_VERSION:S/^python//} instead" -.endif -.if defined(PYTHON3_DEFAULT_VERSION) -WARNING+= "PYTHON3_DEFAULT_VERSION is defined, consider using DEFAULT_VERSIONS=python3=${PYTHON3_DEFAULT_VERSION:S/^python//} instead" -.endif - -.if exists(${LOCALBASE}/bin/python) -_PYTHON_DEFAULT_VERSION!= (${LOCALBASE}/bin/python -c \ - 'import sys; print(sys.version[:3])' 2> /dev/null \ - || ${ECHO_CMD} ${_PYTHON_PORTBRANCH}) | ${TAIL} -1 -.if defined(PYTHON_DEFAULT) && (${PYTHON_DEFAULT} != ${_PYTHON_DEFAULT_VERSION}) -WARNING+= "Your requested default python version ${PYTHON_DEFAULT} is different from the installed default python interpreter version ${_PYTHON_DEFAULT_VERSION}" -.endif -PYTHON_DEFAULT_VERSION= python${_PYTHON_DEFAULT_VERSION} -.else -PYTHON_DEFAULT_VERSION= python${PYTHON_DEFAULT} -.endif # exists(${LOCALBASE}/bin/python) - -# Is only a meta-port version defined? -.if ${PYTHON_DEFAULT_VERSION} == "python2" -PYTHON2_DEFAULT_VERSION?= python${PYTHON2_DEFAULT} -.elif ${PYTHON_DEFAULT_VERSION:R} == "python2" -PYTHON2_DEFAULT_VERSION= ${PYTHON_DEFAULT_VERSION} -.else -PYTHON2_DEFAULT_VERSION?= python${PYTHON2_DEFAULT} -.endif - -.if ${PYTHON_DEFAULT_VERSION} == "python3" -PYTHON3_DEFAULT_VERSION?= python${PYTHON3_DEFAULT} -.elif ${PYTHON_DEFAULT_VERSION:R} == "python3" - PYTHON3_DEFAULT_VERSION= ${PYTHON_DEFAULT_VERSION} -.else -PYTHON3_DEFAULT_VERSION?= python${PYTHON3_DEFAULT} -.endif - -.if defined(PYTHON_VERSION) -_PYTHON_VERSION:= ${PYTHON_VERSION:S/^python//} -_PYTHON_CMD= ${LOCALBASE}/bin/${PYTHON_VERSION} -.else -_PYTHON_VERSION:= ${PYTHON_DEFAULT_VERSION:S/^python//} -_PYTHON_CMD= ${LOCALBASE}/bin/${PYTHON_DEFAULT_VERSION} -.endif - -.if !defined(USE_PYTHON) -.if defined(USE_PYTHON_BUILD) -USE_PYTHON= ${USE_PYTHON_BUILD} -.elif defined(USE_PYTHON_RUN) -USE_PYTHON= ${USE_PYTHON_RUN} -.else -USE_PYTHON= yes -.endif # defined(USE_PYTHON_BUILD) -.else -USE_PYTHON_BUILD= yes -USE_PYTHON_RUN= yes -.endif # !defined(USE_PYTHON) - -.if ${USE_PYTHON} == "2" -USE_PYTHON= ${PYTHON2_DEFAULT_VERSION:S/^python//} -_WANTS_META_PORT= 2 -.elif ${USE_PYTHON} == "3" -USE_PYTHON= ${PYTHON3_DEFAULT_VERSION:S/^python//} -_WANTS_META_PORT= 3 -.endif # ${USE_PYTHON} == "2" - -# Validate Python version whether it meets USE_PYTHON version restriction. -_PYTHON_VERSION_CHECK:= ${USE_PYTHON:C/^([1-9]\.[0-9])$/\1-\1/} -_PYTHON_VERSION_MINIMUM_TMP:= ${_PYTHON_VERSION_CHECK:C/([1-9]\.[0-9])[-+].*/\1/} -_PYTHON_VERSION_MINIMUM:= ${_PYTHON_VERSION_MINIMUM_TMP:M[1-9].[0-9]} -_PYTHON_VERSION_MAXIMUM_TMP:= ${_PYTHON_VERSION_CHECK:C/.*-([1-9]\.[0-9])/\1/} -_PYTHON_VERSION_MAXIMUM:= ${_PYTHON_VERSION_MAXIMUM_TMP:M[1-9].[0-9]} - -.if !empty(_PYTHON_VERSION_MINIMUM) && ( \ - ${_PYTHON_VERSION} < ${_PYTHON_VERSION_MINIMUM}) -_PYTHON_VERSION_NONSUPPORTED= ${_PYTHON_VERSION_MINIMUM} at least -.elif !empty(_PYTHON_VERSION_MAXIMUM) && ( \ - ${_PYTHON_VERSION} > ${_PYTHON_VERSION_MAXIMUM}) -_PYTHON_VERSION_NONSUPPORTED= ${_PYTHON_VERSION_MAXIMUM} at most -.endif - -# If we have an unsupported version of Python, try another. -.if defined(_PYTHON_VERSION_NONSUPPORTED) -.if defined(PYTHON_VERSION) || defined(PYTHON_CMD) -IGNORE= needs Python ${_PYTHON_VERSION_NONSUPPORTED}.\ - But you specified ${_PYTHON_VERSION} -.else -.undef _PYTHON_VERSION -.for ver in ${PYTHON2_DEFAULT} ${PYTHON3_DEFAULT} ${_PYTHON_ALLBRANCHES} -__VER= ${ver} -.if !defined(_PYTHON_VERSION) && \ - !(!empty(_PYTHON_VERSION_MINIMUM) && ( \ - ${__VER} < ${_PYTHON_VERSION_MINIMUM})) && \ - !(!empty(_PYTHON_VERSION_MAXIMUM) && ( \ - ${__VER} > ${_PYTHON_VERSION_MAXIMUM})) -_PYTHON_VERSION= ${ver} -_PYTHON_CMD= ${LOCALBASE}/bin/python${ver} -.endif -.endfor -.if !defined(_PYTHON_VERSION) -IGNORE= needs an unsupported version of Python -_PYTHON_VERSION= ${_PYTHON_PORTBRANCH} # just to avoid version sanity checking. -.endif -.endif # defined(PYTHON_VERSION) || defined(PYTHON_CMD) -.endif # defined(_PYTHON_VERSION_NONSUPPORTED) - -PYTHON_VERSION?= python${_PYTHON_VERSION} -PYTHON_CMD?= ${_PYTHON_CMD} -.if !defined(PYTHONBASE) -PYTHONBASE!= (${PYTHON_CMD} -c 'import sys; print(sys.prefix)' \ - 2> /dev/null || ${ECHO_CMD} ${LOCALBASE}) | ${TAIL} -1 -.endif -DEPENDS_ARGS+= PYTHON_VERSION=${PYTHON_VERSION} - -# We can only use the cached version if we are using the default python version. Otherwise it -# should point to some other version we have installed, according to the port USE_PYTHON -# specification -.if !defined(PYTHON_DEFAULT_PORTVERSION) || (${PYTHON_VERSION} != ${PYTHON_DEFAULT_VERSION}) -.if exists(${PYTHON_CMD}) -_PYTHON_PORTVERSION!= (${PYTHON_CMD} -c 'import sys; \ - print(sys.version.split()[0].replace("b",".b"))' 2> /dev/null) | ${TAIL} -1 -.endif -.if !defined(PYTHON_NO_DEPENDS) && !empty(_PYTHON_PORTVERSION) -PYTHON_PORTVERSION= ${_PYTHON_PORTVERSION} -.endif -.elif defined(PYTHON_DEFAULT_PORTVERSION) -PYTHON_PORTVERSION= ${PYTHON_DEFAULT_PORTVERSION} -.endif - -# Propagate the chosen python version to submakes. -.MAKEFLAGS: PYTHON_VERSION=python${_PYTHON_VERSION} - -# Python-3.4 -.if ${PYTHON_VERSION} == "python3.4" -PYTHON_PORTVERSION?= 3.4.1 -PYTHON_PORTSDIR= ${PORTSDIR}/lang/python34 -PYTHON_REL= 341 -PYTHON_SUFFIX= 34 -PYTHON_VER= 3.4 -.if exists(${PYTHON_CMD}-config) && defined(PORTNAME) && ${PORTNAME} != python34 -PYTHON_ABIVER!= ${PYTHON_CMD}-config --abiflags -.endif - -# Python-3.3 -.elif ${PYTHON_VERSION} == "python3.3" -PYTHON_PORTVERSION?= 3.3.5 -PYTHON_PORTSDIR= ${PORTSDIR}/lang/python33 -PYTHON_REL= 335 -PYTHON_SUFFIX= 33 -PYTHON_VER= 3.3 -.if exists(${PYTHON_CMD}-config) && defined(PORTNAME) && ${PORTNAME} != python33 -PYTHON_ABIVER!= ${PYTHON_CMD}-config --abiflags -.endif - -# Python-3.2 -.elif ${PYTHON_VERSION} == "python3.2" -PYTHON_PORTVERSION?= 3.2.5 -PYTHON_PORTSDIR= ${PORTSDIR}/lang/python32 -PYTHON_REL= 325 -PYTHON_SUFFIX= 32 -PYTHON_VER= 3.2 -.if exists(${PYTHON_CMD}-config) && defined(PORTNAME) && ${PORTNAME} != python32 -PYTHON_ABIVER!= ${PYTHON_CMD}-config --abiflags -.endif - -# Python-2.7 -.elif ${PYTHON_VERSION} == "python2.7" -PYTHON_PORTVERSION?= 2.7.8 -PYTHON_PORTSDIR= ${PORTSDIR}/lang/python27 -PYTHON_REL= 278 -PYTHON_SUFFIX= 27 -PYTHON_VER= 2.7 - -# Python versions in development -.elif defined(FORCE_PYTHON_VERSION) -PYTHON_PORTSDIR= # empty -PYTHON_NO_DEPENDS= YES -PYTHON_REL!= ${PYTHON_CMD} -c 'import sys; h = "%x" % sys.hexversion; \ - print(h[0]+h[2]+h[4])' -PYTHON_SUFFIX!= ${PYTHON_CMD} -c 'import sys; h = "%x" % sys.hexversion; \ - print(h[0]+h[2])' -PYTHON_VER!= ${PYTHON_CMD} -c 'import sys; print(sys.version[:3])' - -.else -check-makevars:: - @${ECHO} "Makefile error: bad value for PYTHON_VERSION: ${PYTHON_VERSION}." - @${ECHO} "Legal values are:" - @${ECHO} " python2.7 (default)" - @${ECHO} " python3.2" - @${ECHO} " python3.3" - @${ECHO} " python3.4" - @${FALSE} -.endif - -PYTHON_MAJOR_VER= ${PYTHON_VER:R} - -PYTHON_MASTER_SITES= ${MASTER_SITE_PYTHON} -PYTHON_MASTER_SITE_SUBDIR= ftp/python/${PYTHON_PORTVERSION:C/rc[0-9]//} -PYTHON_DISTNAME= Python-${PYTHON_PORTVERSION:S/.rc/rc/} -PYTHON_WRKSRC= ${WRKDIR}/Python-${PYTHON_PORTVERSION:S/.rc/rc/} - -PYTHON_ABIVER?= # empty -PYTHON_INCLUDEDIR= ${PYTHONBASE}/include/${PYTHON_VERSION}${PYTHON_ABIVER} -PYTHON_LIBDIR= ${PYTHONBASE}/lib/${PYTHON_VERSION} -PYTHON_PKGNAMEPREFIX= py${PYTHON_SUFFIX}- -PYTHON_PKGNAMESUFFIX= -py${PYTHON_SUFFIX} -PYTHON_PLATFORM= ${OPSYS:tl}${OSREL:C/\.[0-9.]*//} -PYTHON_SITELIBDIR= ${PYTHON_LIBDIR}/site-packages - -PYTHONPREFIX_INCLUDEDIR= ${PYTHON_INCLUDEDIR:S;${PYTHONBASE};${PREFIX};} -PYTHONPREFIX_LIBDIR= ${PYTHON_LIBDIR:S;${PYTHONBASE};${PREFIX};} -PYTHONPREFIX_SITELIBDIR= ${PYTHON_SITELIBDIR:S;${PYTHONBASE};${PREFIX};} - -# Used for recording the installed files. -_PYTHONPKGLIST= ${WRKDIR}/.PLIST.pymodtmp - -# Ports bound to a certain python version SHOULD -# - use the PYTHON_PKGNAMEPREFIX -# - use directories using the PYTHON_PKGNAMEPREFIX -# - install binaries using the required PYTHON_VER, with -# the default python version creating a symlink to the original binary -# name (for staging-aware ports). -# -# What makes a port 'bound' to a certain python version? -# - it installs data into PYTHON_SITELIBDIR, PYTHON_INCLUDEDIR, ... -# - it links against libpython*.so -# - it uses USE_PYDISTUTILS -# -PYTHON_CONCURRENT_INSTALL?= no -.if defined(NO_STAGE) && ${PYTHON_CONCURRENT_INSTALL} == "yes" -BROKEN= PYTHON_CONCURRENT_INSTALL uses USES=uniquefiles, which is not stage-safe -.endif - -.if ${PYTHON_CONCURRENT_INSTALL} == "yes" -_USES_POST+= uniquefiles:dirs -.if ${PYTHON_VERSION} == ${PYTHON_DEFAULT_VERSION} -UNIQUE_DEFAULT_LINKS= yes -.else -UNIQUE_DEFAULT_LINKS= no -.endif -UNIQUE_PREFIX= ${PYTHON_PKGNAMEPREFIX} -UNIQUE_SUFFIX= -${PYTHON_VER} - -.if defined(PYDISTUTILS_AUTOPLIST) -UNIQUE_FIND_SUFFIX_FILES= \ - ${SED} -e 's|^${PREFIX}/||' ${_PYTHONPKGLIST} ${TMPPLIST} | \ - ${GREP} -e '^bin/.*$$\|^sbin/.*$$\|^libexec/.*$$' -.else -UNIQUE_FIND_SUFFIX_FILES= \ - ${GREP} -he '^bin/.*$$\|^sbin/.*$$\|^libexec/.*$$' ${TMPPLIST} 2>/dev/null -.endif -.endif # ${PYTHON_CONCURRENT_INSTALL} == "yes" - -_CURRENTPORT:= ${PKGNAMEPREFIX}${PORTNAME}${PKGNAMESUFFIX} -.if defined(USE_PYDISTUTILS) && ${_CURRENTPORT:S/${PYTHON_SUFFIX}$//} != ${PYTHON_PKGNAMEPREFIX}setuptools -BUILD_DEPENDS+= ${PYTHON_PKGNAMEPREFIX}setuptools${PYTHON_SUFFIX}>0:${PORTSDIR}/devel/py-setuptools${PYTHON_SUFFIX} -RUN_DEPENDS+= ${PYTHON_PKGNAMEPREFIX}setuptools${PYTHON_SUFFIX}>0:${PORTSDIR}/devel/py-setuptools${PYTHON_SUFFIX} -.endif - -# distutils support -PYSETUP?= setup.py -PYDISTUTILS_SETUP?= -c \ - "import sys; import setuptools; \ - __file__='${PYSETUP}'; sys.argv[0]='${PYSETUP}'; \ - exec(compile(open(__file__, 'rb').read().replace(b'\\r\\n', b'\\n'), __file__, 'exec'))" -PYDISTUTILS_CONFIGUREARGS?= -PYDISTUTILS_BUILDARGS?= -PYDISTUTILS_INSTALLARGS?= -c -O1 --prefix=${PREFIX} -.if defined(USE_PYDISTUTILS) -. if !defined(PYDISTUTILS_INSTALLNOSINGLE) -PYDISTUTILS_INSTALLARGS+= --single-version-externally-managed -. endif -. if !defined(NO_STAGE) -PYDISTUTILS_INSTALLARGS+= --root=${STAGEDIR} -. endif -.endif -PYDISTUTILS_INSTALLARGS:= --record ${_PYTHONPKGLIST} \ - ${PYDISTUTILS_INSTALLARGS} - -PYDISTUTILS_PKGNAME?= ${PORTNAME} -PYDISTUTILS_PKGVERSION?=${PORTVERSION} -PYDISTUTILS_EGGINFO?= ${PYDISTUTILS_PKGNAME:C/[^A-Za-z0-9.]+/_/g}-${PYDISTUTILS_PKGVERSION:C/[^A-Za-z0-9.]+/_/g}-py${PYTHON_VER}.egg-info -PYDISTUTILS_EGGINFODIR?=${STAGEDIR}${PYTHONPREFIX_SITELIBDIR} - -add-plist-egginfo: -.if !defined(PYDISTUTILS_NOEGGINFO) && \ - !defined(PYDISTUTILS_AUTOPLIST) && \ - (defined(INSTALLS_EGGINFO) || defined(USE_PYDISTUTILS)) && \ - defined(PYTHON_REL) -. for egginfo in ${PYDISTUTILS_EGGINFO} - if [ -d "${PYDISTUTILS_EGGINFODIR}/${egginfo}" ]; then \ - ${LS} ${PYDISTUTILS_EGGINFODIR}/${egginfo} | while read f; do \ - ${ECHO_CMD} ${PYDISTUTILS_EGGINFODIR:S;^${STAGEDIR}${PYTHONBASE}/;;}/${egginfo}/$${f} >> ${TMPPLIST}; \ - done; \ - ${ECHO_CMD} "@dirrmtry ${PYDISTUTILS_EGGINFODIR:S;${STAGEDIR}${PYTHONBASE}/;;}/${egginfo}" >> ${TMPPLIST}; \ - fi; -. endfor -.else - @${DO_NADA} -.endif - -.if defined(PYDISTUTILS_AUTOPLIST) && defined(USE_PYDISTUTILS) -_RELSITELIBDIR= ${PYTHONPREFIX_SITELIBDIR:S;${PREFIX}/;;} -_RELLIBDIR= ${PYTHONPREFIX_LIBDIR:S;${PREFIX}/;;} - -add-plist-post: add-plist-pymod -add-plist-pymod: - @{ ${ECHO_CMD} "#mtree"; ${CAT} ${MTREE_FILE}; } | ${TAR} tf - | \ - ${SED} '/^\.$$/d' > ${WRKDIR}/.localmtree - @${ECHO_CMD} "${_RELSITELIBDIR}" >> ${WRKDIR}/.localmtree - @${ECHO_CMD} "${_RELLIBDIR}" >> ${WRKDIR}/.localmtree - @${SED} -e 's|^${STAGEDIR}${PREFIX}/||' \ - -e 's|^${PREFIX}/||' \ - -e 's|^\(man/.*man[0-9]\)/\(.*\.[0-9]\)$$|\1/\2${MANEXT}|' \ - ${_PYTHONPKGLIST} | ${SORT} >> ${TMPPLIST} - @${SED} -e 's|^${STAGEDIR}${PREFIX}/\(.*\)/\(.*\)|\1|' \ - -e 's|^${PREFIX}/\(.*\)/\(.*\)|\1|' ${_PYTHONPKGLIST} | \ - ${AWK} '{ num = split($$0, a, "/"); res=""; \ - for(i = 1; i <= num; ++i) { \ - if (i == 1) res = a[i]; \ - else res = res "/" a[i]; \ - print res; \ - } \ - }' | \ - while read line; do \ - ${GREP} -qw "^$${line}$$" ${WRKDIR}/.localmtree || { \ - [ -n "$${line}" ] && \ - ${ECHO_CMD} "@dirrmtry $${line}"; \ - }; \ - done | ${SORT} | uniq | ${SORT} -r >> ${TMPPLIST} -.if ${PREFIX} != ${LOCALBASE} - @${ECHO_CMD} "@dirrmtry ${PYTHON_SITELIBDIR:S;${PYTHONBASE}/;;}" >> ${TMPPLIST} - @${ECHO_CMD} "@dirrmtry ${PYTHON_LIBDIR:S;${PYTHONBASE}/;;}" >> ${TMPPLIST} -.endif - -.else -.if ${PYTHON_REL} >= 320 && defined(PYTHON_PY3K_PLIST_HACK) -# When Python version is 3.2+ we rewrite all the filenames -# of TMPPLIST that end with .py[co], so that they conform -# to PEP 3147 (see http://www.python.org/dev/peps/pep-3147/) -PYMAGICTAG= ${PYTHON_CMD} -c 'import imp; print(imp.get_tag())' -add-plist-post: - @${AWK} '\ - /\.py[co]$$/ && !($$0 ~ "/" pc "/") {id = match($$0, /\/[^\/]+\.py[co]$$/); if (id != 0) {d = substr($$0, 1, RSTART - 1); dirs[d] = 1}; sub(/\.py[co]$$/, "." mt "&"); sub(/[^\/]+\.py[co]$$/, pc "/&"); print; next} \ - /^@dirrm / {d = substr($$0, 8); if (d in dirs) {print $$0 "/" pc}; print $$0; next} \ - /^@dirrmtry / {d = substr($$0, 11); if (d in dirs) {print $$0 "/" pc}; print $$0; next} \ - {print} \ - END {if (sp in dirs) {print "@dirrm " sp "/" pc}} \ - ' \ - pc="__pycache__" mt="$$(${PYMAGICTAG})" sp="${PYTHON_SITELIBDIR:S,${PYTHONBASE}/,,g}" \ - ${TMPPLIST} > ${TMPPLIST}.pyc_tmp - @${MV} ${TMPPLIST}.pyc_tmp ${TMPPLIST} -.endif # ${PYTHON_REL} >= 320 && defined(PYTHON_PY3K_PLIST_HACK) -.endif # defined(PYDISTUTILS_AUTOPLIST) && defined(USE_PYDISTUTILS) - -# Fix for programs that build python from a GNU auto* environment -CONFIGURE_ENV+= PYTHON="${PYTHON_CMD}" - -# Python 3rd-party modules -PYGAME= ${PYTHON_PKGNAMEPREFIX}game>0:${PORTSDIR}/devel/py-game -PYNUMERIC= ${PYTHON_SITELIBDIR}/Numeric/Numeric.py:${PORTSDIR}/math/py-numeric -PYNUMPY= ${PYTHON_SITELIBDIR}/numpy/core/numeric.py:${PORTSDIR}/math/py-numpy -PYXML= ${PYTHON_SITELIBDIR}/_xmlplus/__init__.py:${PORTSDIR}/textproc/py-xml - -# dependencies -PYTHON_NO_DEPENDS?= NO - -.if ${PYTHON_NO_DEPENDS} == "NO" -.if defined(USE_PYTHON_BUILD) -BUILD_DEPENDS+= ${PYTHON_CMD}:${PYTHON_PORTSDIR} -.if defined(_WANTS_META_PORT) -BUILD_DEPENDS+= python${_WANTS_META_PORT}:${PORTSDIR}/lang/python${_WANTS_META_PORT} -.endif -.endif -.if defined(USE_PYTHON_RUN) -RUN_DEPENDS+= ${PYTHON_CMD}:${PYTHON_PORTSDIR} -.if defined(_WANTS_META_PORT) -RUN_DEPENDS+= python${_WANTS_META_PORT}:${PORTSDIR}/lang/python${_WANTS_META_PORT} -.endif -.endif -.endif # ${PYTHON_NO_DEPENDS} == "NO" - -# set $PREFIX as Python's one -.if defined(USE_PYTHON_PREFIX) -PREFIX= ${PYTHONBASE} -.endif - -# Substitutions for pkg-plist -# Use a short form of the PYTHONPREFIX_*DIR variables; we don't need the -# base directory in the plist file. -PLIST_SUB+= PYTHON_INCLUDEDIR=${PYTHONPREFIX_INCLUDEDIR:S;${PREFIX}/;;} \ - PYTHON_LIBDIR=${PYTHONPREFIX_LIBDIR:S;${PREFIX}/;;} \ - PYTHON_PLATFORM=${PYTHON_PLATFORM} \ - PYTHON_SITELIBDIR=${PYTHONPREFIX_SITELIBDIR:S;${PREFIX}/;;} \ - PYTHON_VERSION=${PYTHON_VERSION} - -# XXX Hm, should I export some of the variables above to *_ENV? - - -# If multiple Python versions are installed and cmake is used, it might -# happen that a cmake-enabled port using find_package(PythonLibs) and -# find_package(PythonInterp) detects different Python versions. -# This in turn might cause it to link against version X while using the -# includes of version Y, leading to a broken port. -# Enforce a certain Python version by using PYTHON_VER for cmake. - -CMAKE_ARGS+= -DPythonLibs_FIND_VERSION:STRING="${PYTHON_VER}" \ - -DPythonInterp_FIND_VERSION:STRING="${PYTHON_VER}" - -.endif # !defined(_POSTMKINCLUDED) && !defined(Python_Pre_Include) - -.if defined(_POSTMKINCLUDED) && !defined(Python_Post_Include) - -Python_Post_Include= bsd.python.mk - -# py-distutils support -PYDISTUTILS_CONFIGURE_TARGET?= config -PYDISTUTILS_BUILD_TARGET?= build -PYDISTUTILS_INSTALL_TARGET?= install - -.if defined(USE_PYDISTUTILS) -LDSHARED?= ${CC} -shared -MAKE_ENV+= LDSHARED="${LDSHARED}" PYTHONDONTWRITEBYTECODE= PYTHONOPTIMIZE= - -.if !target(do-configure) && !defined(HAS_CONFIGURE) && !defined(GNU_CONFIGURE) -do-configure: - @(cd ${BUILD_WRKSRC}; ${SETENV} ${MAKE_ENV} ${PYTHON_CMD} ${PYDISTUTILS_SETUP} ${PYDISTUTILS_CONFIGURE_TARGET} ${PYDISTUTILS_CONFIGUREARGS}) -.endif - -.if !target(do-build) -do-build: - @(cd ${BUILD_WRKSRC}; ${SETENV} ${MAKE_ENV} ${PYTHON_CMD} ${PYDISTUTILS_SETUP} ${PYDISTUTILS_BUILD_TARGET} ${PYDISTUTILS_BUILDARGS}) -.endif - -.if !target(do-install) -do-install: - @(cd ${INSTALL_WRKSRC}; ${SETENV} ${MAKE_ENV} ${PYTHON_CMD} ${PYDISTUTILS_SETUP} ${PYDISTUTILS_INSTALL_TARGET} ${PYDISTUTILS_INSTALLARGS}) -.endif - -add-plist-post: add-plist-egginfo - -.endif # defined(USE_PYDISTUTILS) -.endif # defined(_POSTMKINCLUDED) && !defined(Python_Post_Include) diff --git a/Mk/bsd.sanity.mk b/Mk/bsd.sanity.mk index b56a170..fc9a40f 100644 --- a/Mk/bsd.sanity.mk +++ b/Mk/bsd.sanity.mk @@ -118,11 +118,39 @@ DEV_WARNING+= "USE_AUTOTOOLS=libtool is deprecated, please use USES=libtool" DEV_WARNING+= "USE_GNOME=ltverhack is deprecated, please use USES=libtool" .endif +.if defined(USE_PYTHON) +.if ${USE_PYTHON} != "yes" +DEV_WARNING+= "USE_PYTHON is deprecated, please use USES=python:${USE_PYTHON}" +.else +DEV_WARNING+= "USE_PYTHON is deprecated, please use USES=python" +.endif +.endif +.if defined(USE_PYTHON_RUN) +.if ${USE_PYTHON_RUN} != "yes" +DEV_WARNING+= "USE_PYTHON_RUN is deprecated, please use USES=python:${USE_PYTHON_RUN},run" +.else +DEV_WARNING+= "USE_PYTHON_RUN is deprecated, please use USES=python:run" +.endif +.endif +.if defined(USE_PYTHON_BUILD) +.if ${USE_PYTHON_BUILD} != "yes" +DEV_WARNING+= "USE_PYTHON_BUILD is deprecated, please use USES=python:${USE_PYTHON_BUILD},build" +.else +DEV_WARNING+= "USE_PYTHON_BUILD is deprecated, please use USES=python:build" +.endif +.endif + +.if defined(PYDISTUTILS_INSTALLNOSINGLE) +DEV_WARNING+= "PYDISTUTILS_INSTALLNOSINGLE is deprecated, please do not use it anymore" +.endif + SANITY_UNSUPPORTED= USE_OPENAL USE_FAM USE_MAKESELF USE_ZIP USE_LHA USE_CMAKE \ USE_READLINE USE_ICONV PERL_CONFIGURE PERL_MODBUILD \ USE_PERL5_BUILD USE_PERL5_RUN USE_DISPLAY USE_FUSE \ USE_GETTEXT USE_GMAKE USE_SCONS USE_DRUPAL -SANITY_DEPRECATED= USE_XZ USE_BZIP2 +SANITY_DEPRECATED= USE_XZ USE_BZIP2 USE_PYDISTUTILS PYTHON_CONCURRENT_INSTALL \ + PYDISTUTILS_AUTOPLIST PYTHON_PY3K_PLIST_HACK PYDISTUTILS_NOEGGINFO \ + PYTHON_MASTER_SITES USE_PYTHON_PREFIX PYTHON_PKGNAMESUFFIX USE_OPENAL_ALT= USES=openal USE_FAM_ALT= USES=fam @@ -144,6 +172,14 @@ USE_FUSE_ALT= USES=fuse USE_GETTEXT_ALT= USES=gettext USE_SCONS_ALT= USES=scons USE_DRUPAL_ALT= USES=drupal +USE_PYDISTUTILS_ALT= PYTHON_FEATURES=distutils +PYTHON_CONCURRENT_INSTALL_ALT= PYTHON_FEATURES=concurrent +PYDISTUTILS_AUTOPLIST_ALT= PYTHON_FEATURES=autoplist +PYTHON_PY3K_PLIST_HACK_ALT= PYTHON_FEATURES=py3kplist +PYDISTUTILS_NOEGGINFO_ALT= PYTHON_FEATURES=noegginfo +USE_PYTHON_PREFIX_ALT= PYTHON_FEATURES=pythonprefix +PYTHON_PKGNAMESUFFIX_ALT= PYTHON_PKGNAMEPREFIX +PYTHON_MASTER_SITES_ALT= MASTER_SITE_PYTHON .for a in ${SANITY_DEPRECATED} .if defined(${a}) diff --git a/Mk/bsd.sites.mk b/Mk/bsd.sites.mk index 95746f0..ae80b1f 100644 --- a/Mk/bsd.sites.mk +++ b/Mk/bsd.sites.mk @@ -1501,7 +1501,6 @@ MASTER_SITES_SUBDIRS= APACHE_JAKARTA:${PORTNAME:S,-,/,}/source \ NETLIB:${PORTNAME} \ PERL_CPAN:${PORTNAME:C/-.*//} \ PNET:${PNET_MASTER_SITE_SUBDIR} \ - PYTHON:${PYTHON_MASTER_SITE_SUBDIR} \ RUBY_DBI:${RUBY_DBI_MASTER_SITE_SUBDIR} \ RUBY_GNOME:${RUBY_GNOME_MASTER_SITE_SUBDIR} \ SAVANNAH:${PORTNAME:tl} \ diff --git a/audio/rhythmbox/Makefile b/audio/rhythmbox/Makefile index 9b6d963..47159e5 100644 --- a/audio/rhythmbox/Makefile +++ b/audio/rhythmbox/Makefile @@ -100,7 +100,6 @@ CONFIGURE_ARGS+= --disable-libnotify .if exists(${LOCALBASE}/libdata/pkgconfig/gst-python-0.10.pc) USE_PYTHON= yes -.include "${PORTSDIR}/Mk/bsd.python.mk" USE_GSTREAMER+= python CONFIGURE_ARGS+=--enable-python PLIST_SUB+= PYTHON="" diff --git a/biology/libsbml/Makefile b/biology/libsbml/Makefile index 1a872b6..1f2b275 100644 --- a/biology/libsbml/Makefile +++ b/biology/libsbml/Makefile @@ -25,7 +25,7 @@ WRKSRC= ${WRKDIR}/${PORTNAME}-${PORTVERSION} .include <bsd.port.options.mk> .if ${PORT_OPTIONS:MPYTHON} -.include "../../Mk/bsd.python.mk" +USE_PYTHON= yes BUILD_DEPENDS+= ${LOCALBASE}/bin/python:${PORTSDIR}/lang/python CONFIGURE_ARGS+= --with-python PLIST_SUB+= WITH_PYTHON="" \ @@ -35,7 +35,7 @@ PLIST_SUB+= WITH_PYTHON="@comment " .endif .if ${PORT_OPTIONS:MRUBY} -.include "../../Mk/bsd.ruby.mk" +USE_RUBY= yes BUILD_DEPENDS+= ${LOCALBASE}/bin/ruby:${PORTSDIR}/lang/ruby19 CONFIGURE_ARGS+= --with-ruby PLIST_SUB+= WITH_RUBY="" diff --git a/databases/ldb/Makefile b/databases/ldb/Makefile index f1ad7b2..903a8bd 100644 --- a/databases/ldb/Makefile +++ b/databases/ldb/Makefile @@ -16,7 +16,7 @@ LICENSE= GPLv3 CONFLICTS= *samba3[0-4]-3.* USES= compiler pkgconfig -USE_PYTHON_BUILD= 2 +USE_PYTHON= 2 USE_LDCONFIG= yes WAF_TOOL= buildtools/bin/waf CONFIGURE_LOG= bin/config.log @@ -97,15 +97,11 @@ CONFIGURE_ARGS+= --jobs=${MAKE_JOBS_NUMBER} _MAKE_JOBS+= --jobs=${MAKE_JOBS_NUMBER} .endif -USE_PYTHON_RUN= yes - PLIST_FILES+= include/pyldb.h \ lib/libpyldb-util.so \ lib/libpyldb-util.so.1 \ %%PYTHON_SITELIBDIR%%/ldb.so \ %%PKGCONFIGDIR%%/pyldb-util.pc -PLIST_DIRSTRY+= %%PYTHON_SITELIBDIR%% \ - %%PYTHON_LIBDIR%% LDB_MAN1= man/man1/ldbadd.1.gz \ man/man1/ldbdel.1.gz \ diff --git a/databases/metakit/Makefile b/databases/metakit/Makefile index 9c2b13d..9e31911 100644 --- a/databases/metakit/Makefile +++ b/databases/metakit/Makefile @@ -25,7 +25,6 @@ OPTIONS_DEFAULT= PYTHON .if ${PORT_OPTIONS:MPYTHON} USE_PYTHON= yes -.include "${PORTSDIR}/Mk/bsd.python.mk" CONFIGURE_ARGS+= --with-python=${LOCALBASE} CATEGORIES+= python PLIST_SUB+= WITH_PYTHON="" diff --git a/databases/ntdb/Makefile b/databases/ntdb/Makefile index 1e78e32..d6b833d 100644 --- a/databases/ntdb/Makefile +++ b/databases/ntdb/Makefile @@ -36,6 +36,13 @@ MANPAGES_DESC= Build and install manpages (requires textproc/docbook-xsl) .include <bsd.port.options.mk> +.if defined(NO_PYTHON) +CONFIGURE_ARGS+= --disable-python +.else +USE_PYTHON_RUN= yes +PLIST_FILES+= %%PYTHON_SITELIBDIR%%/ntdb.so +.endif + .include <bsd.port.pre.mk> .if ! ${PORT_OPTIONS:MMANPAGES} @@ -45,7 +52,7 @@ BUILD_DEPENDS+= ${LOCALBASE}/share/xsl/docbook/manpages/docbook.xsl:${PORTSDIR} xsltproc:${PORTSDIR}/textproc/libxslt .endif -PLIST_FILES= bin/ntdbbackup \ +PLIST_FILES+= bin/ntdbbackup \ bin/ntdbdump \ bin/ntdbrestore \ bin/ntdbtool \ @@ -66,15 +73,6 @@ CONFIGURE_ARGS+= --jobs=${MAKE_JOBS_NUMBER} _MAKE_JOBS+= --jobs=${MAKE_JOBS_NUMBER} .endif -.if defined(NO_PYTHON) -CONFIGURE_ARGS+= --disable-python -.else -USE_PYTHON_RUN= yes -PLIST_FILES+= %%PYTHON_SITELIBDIR%%/ntdb.so -PLIST_DIRSTRY+= %%PYTHON_SITELIBDIR%% \ - %%PYTHON_LIBDIR%% -.endif - TDB_MAN3= man/man3/ntdb.3.gz TDB_MAN8= man/man8/ntdbbackup.8.gz \ diff --git a/databases/py-bsddb/Makefile b/databases/py-bsddb/Makefile index 41f6d2d..4345030 100644 --- a/databases/py-bsddb/Makefile +++ b/databases/py-bsddb/Makefile @@ -6,9 +6,9 @@ PORTVERSION= ${PYTHON_PORTVERSION} PORTREVISION= 4 CATEGORIES= databases python MASTER_SITES= PYTHON -MASTER_SITE_SUBDIR= ${PYTHON_MASTER_SITE_SUBDIR} +MASTER_SITE_SUBDIR= ftp/python/${PORTVERSION} PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX} -DISTNAME= ${PYTHON_DISTNAME} +DISTNAME= Python-${PORTVERSION} MAINTAINER= python@FreeBSD.org COMMENT= Standard Python bindings to the Berkeley DB library @@ -24,7 +24,7 @@ USES= tar:xz DIST_SUBDIR= python DISTINFO_FILE= ${PORTSDIR}/lang/python${PYTHON_SUFFIX}/distinfo -WRKSRC= ${PYTHON_WRKSRC}/Modules +WRKSRC= ${WRKDIR}/Python-${PORTVERSION}/Modules PYDISTUTILS_INSTALLARGS+= --install-lib ${PYTHON_LIBDIR}/lib-dynload PYDISTUTILS_AUTOPLIST= yes diff --git a/databases/py-gdbm/Makefile b/databases/py-gdbm/Makefile index 419ef92..3775fe6 100644 --- a/databases/py-gdbm/Makefile +++ b/databases/py-gdbm/Makefile @@ -5,10 +5,10 @@ PORTNAME= gdbm PORTVERSION= ${PYTHON_PORTVERSION} PORTREVISION= 3 CATEGORIES= databases python -MASTER_SITES= ${PYTHON_MASTER_SITES} -MASTER_SITE_SUBDIR= ${PYTHON_MASTER_SITE_SUBDIR} +MASTER_SITES= PYTHON +MASTER_SITE_SUBDIR= ftp/python/${PORTVERSION} PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX} -DISTNAME= ${PYTHON_DISTNAME} +DISTNAME= Python-${PORTVERSION} MAINTAINER= python@FreeBSD.org COMMENT= Python bindings to the GNU dbm library @@ -28,7 +28,7 @@ PYDISTUTILS_INSTALLARGS+= --install-lib ${PYTHONPREFIX_LIBDIR}/lib-dynload DIST_SUBDIR= python DISTINFO_FILE= ${PORTSDIR}/lang/python${PYTHON_SUFFIX}/distinfo -WRKSRC= ${PYTHON_WRKSRC}/Modules +WRKSRC= ${WRKDIR}/Python-${PORTVERSION}/Modules .include <bsd.port.pre.mk> diff --git a/databases/py-sqlite3/Makefile b/databases/py-sqlite3/Makefile index 132a059..9bc2d49 100644 --- a/databases/py-sqlite3/Makefile +++ b/databases/py-sqlite3/Makefile @@ -5,10 +5,10 @@ PORTNAME= sqlite3 PORTVERSION= ${PYTHON_PORTVERSION} PORTREVISION= 5 CATEGORIES= databases python -MASTER_SITES= ${PYTHON_MASTER_SITES} -MASTER_SITE_SUBDIR= ${PYTHON_MASTER_SITE_SUBDIR} +MASTER_SITES= PYTHON +MASTER_SITE_SUBDIR= ftp/python/${PORTVERSION} PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX} -DISTNAME= ${PYTHON_DISTNAME} +DISTNAME= Python-${PORTVERSION} MAINTAINER= python@FreeBSD.org COMMENT= Standard Python binding to the SQLite3 library @@ -25,7 +25,7 @@ USES= tar:xz DIST_SUBDIR= python DISTINFO_FILE= ${PORTSDIR}/lang/python${PYTHON_SUFFIX}/distinfo -WRKSRC= ${PYTHON_WRKSRC}/Modules +WRKSRC= ${WRKDIR}/Python-${PORTVERSION}/Modules PYDISTUTILS_INSTALLARGS+= --install-lib ${PYTHON_LIBDIR}/lib-dynload PYDISTUTILS_AUTOPLIST= yes diff --git a/databases/rrdtool/Makefile b/databases/rrdtool/Makefile index e8cf543..f0051e4 100644 --- a/databases/rrdtool/Makefile +++ b/databases/rrdtool/Makefile @@ -43,7 +43,6 @@ RUBY_MODULE_DESC= Build RUBY bindings USE_PYTHON= yes INSTALLS_EGGINFO=yes PYDISTUTILS_EGGINFO=py_rrdtool-0.2.2-${PYTHON_VERSION:S/thon//}.egg-info -.include "${PORTSDIR}/Mk/bsd.python.mk" PLIST_SUB+= WITH_PYTHON="" CONFIGURE_ARGS+= --enable-python .else diff --git a/databases/rrdtool12/Makefile b/databases/rrdtool12/Makefile index 02d23dd..de2ddb2 100644 --- a/databases/rrdtool12/Makefile +++ b/databases/rrdtool12/Makefile @@ -32,7 +32,6 @@ OPTIONS_DEFAULT= PERL USE_PYTHON= yes INSTALLS_EGGINFO=yes PYDISTUTILS_EGGINFO=py_rrdtool-0.2.1-${PYTHON_VERSION:S/thon//}.egg-info -.include "${PORTSDIR}/Mk/bsd.python.mk" PLIST_SUB+= WITH_PYTHON="" CONFIGURE_ARGS+= --enable-python .else @@ -42,7 +41,6 @@ PLIST_SUB+= WITH_PYTHON="@comment " .if ${PORT_OPTIONS:MRUBY} USE_RUBY= yes -.include "${PORTSDIR}/Mk/bsd.ruby.mk" PLIST_SUB+= WITH_RUBY="" CONFIGURE_ARGS+= --enable-ruby .else diff --git a/databases/tdb/Makefile b/databases/tdb/Makefile index 9e52dff..8532078 100644 --- a/databases/tdb/Makefile +++ b/databases/tdb/Makefile @@ -35,6 +35,17 @@ MANPAGES_DESC= Build and install manpages (requires textproc/docbook-xsl) .include <bsd.port.options.mk> +.if defined(NO_PYTHON) +CONFIGURE_ARGS+= --disable-python +.else +USE_PYTHON_RUN= yes +PLIST_FILES+= %%PYTHON_SITELIBDIR%%/tdb.so +.endif + +.if defined(NO_PYTHON) + +.endif + .include <bsd.port.pre.mk> .if ! ${PORT_OPTIONS:MMANPAGES} @@ -44,7 +55,7 @@ BUILD_DEPENDS+= ${LOCALBASE}/share/xsl/docbook/manpages/docbook.xsl:${PORTSDIR} xsltproc:${PORTSDIR}/textproc/libxslt .endif -PLIST_FILES= bin/tdbbackup \ +PLIST_FILES+= bin/tdbbackup \ bin/tdbdump \ bin/tdbrestore \ bin/tdbtool \ @@ -65,15 +76,6 @@ CONFIGURE_ARGS+= --jobs=${MAKE_JOBS_NUMBER} _MAKE_JOBS+= --jobs=${MAKE_JOBS_NUMBER} .endif -.if defined(NO_PYTHON) -CONFIGURE_ARGS+= --disable-python -.else -USE_PYTHON_RUN= yes -PLIST_FILES+= %%PYTHON_SITELIBDIR%%/tdb.so -PLIST_DIRSTRY+= %%PYTHON_SITELIBDIR%% \ - %%PYTHON_LIBDIR%% -.endif - TDB_MAN8= man/man8/tdbbackup.8.gz \ man/man8/tdbdump.8.gz \ man/man8/tdbrestore.8.gz \ diff --git a/devel/py-checkmanifest/Makefile b/devel/py-checkmanifest/Makefile index a9c261b..5f1d1c4 100644 --- a/devel/py-checkmanifest/Makefile +++ b/devel/py-checkmanifest/Makefile @@ -15,10 +15,10 @@ LICENSE= MIT OPTIONS_DEFINE= DOCS -USES= uniquefiles USE_PYTHON= yes USE_PYDISTUTILS= yes PYDISTUTILS_AUTOPLIST= yes +PYTHON_CONCURRENT_INSTALL= yes PORTDOCS= README.rst \ CHANGES.rst diff --git a/devel/py-gobject3/pkg-plist b/devel/py-gobject3/pkg-plist index 3331e7b..9d838e0 100644 --- a/devel/py-gobject3/pkg-plist +++ b/devel/py-gobject3/pkg-plist @@ -68,7 +68,7 @@ lib/libpyglib-gi-2.0-%%PYTHON_VERSION%%.so.0.0.0 %%PYTHON_SITELIBDIR%%/gi/types.py %%PYTHON_SITELIBDIR%%/gi/types.pyc %%PYTHON_SITELIBDIR%%/gi/types.pyo -%%PYTHON_SITELIBDIR%%/pygobject-%%VERSION%%-py%%PYTHON_VERSION%%-%%OPSYS%%-%%UNAME_R%%-%%ARCH%%.egg-info +%%PYTHON_SITELIBDIR%%/pygobject-%%VERSION%%-py%%PYTHON_VER%%-%%OPSYS%%-%%UNAME_R%%-%%ARCH%%.egg-info %%PYTHON_SITELIBDIR%%/pygtkcompat/__init__.py %%PYTHON_SITELIBDIR%%/pygtkcompat/__init__.pyc %%PYTHON_SITELIBDIR%%/pygtkcompat/__init__.pyo diff --git a/devel/pygobject3-common/Makefile b/devel/pygobject3-common/Makefile index 36ac772..a89456e 100644 --- a/devel/pygobject3-common/Makefile +++ b/devel/pygobject3-common/Makefile @@ -29,7 +29,7 @@ CONFLICTS= py*-gtk-0* py*-gobject-2.*.[0-6] py*-gobject-2.*.[7-9] \ py*-gobject-2.*.6_1 PLIST_SUB= ARCH=${ARCH} UNAME_R=${UNAME_R} VERSION=${PORTVERSION} \ - OPSYS=${OPSYS:tl} + OPSYS=${OPSYS:tl} PYTHON_VER=${PYTHON_VER} .if ${SLAVE_PORT} == no BUILD_DEPENDS+= ${LOCALBASE}/libdata/pkgconfig/pycairo.pc:${PORTSDIR}/graphics/py-cairo diff --git a/devel/talloc/Makefile b/devel/talloc/Makefile index 11c788a..24eff74 100644 --- a/devel/talloc/Makefile +++ b/devel/talloc/Makefile @@ -36,6 +36,17 @@ MANPAGES_DESC= Build and install manpages (requires textproc/docbook-xsl) .include <bsd.port.options.mk> +.if defined(NO_PYTHON) +CONFIGURE_ARGS+= --disable-python +.else +USE_PYTHON_RUN= yes +PLIST_FILES+= include/pytalloc.h \ + lib/libpytalloc-util.so \ + lib/libpytalloc-util.so.2 \ + %%PYTHON_SITELIBDIR%%/talloc.so \ + %%PKGCONFIGDIR%%/pytalloc-util.pc +.endif + .include <bsd.port.pre.mk> .if ! ${PORT_OPTIONS:MMANPAGES} @@ -45,7 +56,7 @@ BUILD_DEPENDS+= ${LOCALBASE}/share/xsl/docbook/manpages/docbook.xsl:${PORTSDIR} xsltproc:${PORTSDIR}/textproc/libxslt .endif -PLIST_FILES= include/talloc.h \ +PLIST_FILES+= include/talloc.h \ lib/libtalloc.so \ lib/libtalloc.so.2 \ %%PKGCONFIGDIR%%/talloc.pc @@ -62,19 +73,6 @@ CONFIGURE_ARGS+= --jobs=${MAKE_JOBS_NUMBER} _MAKE_JOBS+= --jobs=${MAKE_JOBS_NUMBER} .endif -.if defined(NO_PYTHON) -CONFIGURE_ARGS+= --disable-python -.else -USE_PYTHON_RUN= yes -PLIST_FILES+= include/pytalloc.h \ - lib/libpytalloc-util.so \ - lib/libpytalloc-util.so.2 \ - %%PYTHON_SITELIBDIR%%/talloc.so \ - %%PKGCONFIGDIR%%/pytalloc-util.pc -PLIST_DIRSTRY+= %%PYTHON_SITELIBDIR%% \ - %%PYTHON_LIBDIR%% -.endif - TALLOC_MAN3= man/man3/talloc.3.gz PLIST_FILES+= ${TALLOC_MAN3} diff --git a/devel/tevent/Makefile b/devel/tevent/Makefile index 6e848f5..1f35e15 100644 --- a/devel/tevent/Makefile +++ b/devel/tevent/Makefile @@ -36,6 +36,16 @@ MANPAGES_DESC= Build and install manpages (requires textproc/docbook-xsl) .include <bsd.port.options.mk> +.if defined(NO_PYTHON) +CONFIGURE_ARGS+= --disable-python +.else +USE_PYTHON_RUN= yes +PLIST_FILES+= %%PYTHON_SITELIBDIR%%/_tevent.so \ + %%PYTHON_SITELIBDIR%%/tevent.py \ + %%PYTHON_SITELIBDIR%%/tevent.pyc \ + %%PYTHON_SITELIBDIR%%/tevent.pyo +.endif + .include <bsd.port.pre.mk> .if ! ${PORT_OPTIONS:MMANPAGES} @@ -45,7 +55,7 @@ BUILD_DEPENDS+= ${LOCALBASE}/share/xsl/docbook/manpages/docbook.xsl:${PORTSDIR} xsltproc:${PORTSDIR}/textproc/libxslt .endif -PLIST_FILES= include/tevent.h \ +PLIST_FILES+= include/tevent.h \ lib/libtevent.so \ lib/libtevent.so.0 \ %%PKGCONFIGDIR%%/tevent.pc @@ -67,18 +77,6 @@ CONFIGURE_ARGS+= --jobs=${MAKE_JOBS_NUMBER} _MAKE_JOBS+= --jobs=${MAKE_JOBS_NUMBER} .endif -.if defined(NO_PYTHON) -CONFIGURE_ARGS+= --disable-python -.else -USE_PYTHON_RUN= yes -PLIST_FILES+= %%PYTHON_SITELIBDIR%%/_tevent.so \ - %%PYTHON_SITELIBDIR%%/tevent.py \ - %%PYTHON_SITELIBDIR%%/tevent.pyc \ - %%PYTHON_SITELIBDIR%%/tevent.pyo -PLIST_DIRSTRY+= %%PYTHON_SITELIBDIR%% \ - %%PYTHON_LIBDIR%% -.endif - CONFIGURE_TARGET= configure ALL_TARGET= build INSTALL_TARGET= install diff --git a/editors/gedit/Makefile b/editors/gedit/Makefile index 12d47a32..1c349d8 100644 --- a/editors/gedit/Makefile +++ b/editors/gedit/Makefile @@ -32,21 +32,14 @@ PLIST_SUB= VERSION="2.20" GCONF_SCHEMAS= gedit.schemas gedit-file-browser.schemas -.include <bsd.port.pre.mk> - -.if ${HAVE_GNOME:Mpygtksourceview}!="" -USE_PYTHON= yes -.include "${PORTSDIR}/Mk/bsd.python.mk" -USE_GNOME+= pygtksourceview -CONFIGURE_ARGS+=--enable-python -PLIST_SUB+= PYTHON="" -.else -CONFIGURE_ARGS+=--disable-python -PLIST_SUB+= PYTHON="@comment " -.endif +OPTIONS_DEFINE= PYTHON +OPTIONS_SUB= yes + +PYTHON_CONFIGURE_ENABLE=python +PYTHON_USE= GNOME=pygtksourceview post-patch: ${REINPLACE_CMD} '/EGG_SMCLIENT_LIBS =/s/$$/ -lICE/' \ ${WRKSRC}/gedit/smclient/Makefile.in -.include <bsd.port.post.mk> +.include <bsd.port.mk> diff --git a/japanese/libtomoe-gtk/Makefile b/japanese/libtomoe-gtk/Makefile index 32893cd..1308fe4e 100644 --- a/japanese/libtomoe-gtk/Makefile +++ b/japanese/libtomoe-gtk/Makefile @@ -20,7 +20,7 @@ USE_LDCONFIG= yes #OPTIONS= GUCHARMAP "Compile with gucharmap" on -.include <bsd.port.pre.mk> +.include <bsd.port.options.mk> #.if defined(WITHOUT_GUCHARMAP) CONFIGURE_ARGS+=--with-gucharmap=no @@ -32,7 +32,6 @@ PLIST_SUB+= GUCHARMAP="@comment " .if exists(${LOCALBASE}/libdata/pkgconfig/pytomoe.pc) USE_PYTHON= yes -.include "${PORTSDIR}/Mk/bsd.python.mk" CONFIGURE_ENV+= PYTHON_VERSION=${PYTHON_VERSION:S;python;;} \ pyexecdir=${PYTHON_SITELIBDIR} PLIST_SUB+= PYTHON="" @@ -41,4 +40,4 @@ CONFIGURE_ARGS+=--with-python=no PLIST_SUB+= PYTHON="@comment " .endif -.include <bsd.port.post.mk> +.include <bsd.port.mk> diff --git a/multimedia/libkate/Makefile b/multimedia/libkate/Makefile index 2f6b493..afd194f 100644 --- a/multimedia/libkate/Makefile +++ b/multimedia/libkate/Makefile @@ -40,7 +40,6 @@ CONFIGURE_ARGS+= --disable-doc .if ${PORT_OPTIONS:MKATEDJ} RUN_DEPENDS= ${LOCALBASE}/bin/oggz:${PORTSDIR}/audio/liboggz USE_PYTHON= yes -.include "${PORTSDIR}/Mk/bsd.python.mk" USE_WX= 2.8 WX_COMPS= wx contrib python:lib MANPAGE+= KateDJ.1 diff --git a/security/libpreludedb/Makefile b/security/libpreludedb/Makefile index ce7056c..96e39c4 100644 --- a/security/libpreludedb/Makefile +++ b/security/libpreludedb/Makefile @@ -49,7 +49,6 @@ PLIST_SUB+= WITH_PERL="@comment " .if ${PORT_OPTIONS:MPYTHON} USE_PYTHON= yes -.include "${PORTSDIR}/Mk/bsd.python.mk" CONFIGURE_ARGS+= --with-python PLIST_SUB+= WITH_PYTHON="" PYTHON_VER=${PYTHON_VER} .else diff --git a/textproc/py2html/Makefile b/textproc/py2html/Makefile index fe994fc..c90aa96 100644 --- a/textproc/py2html/Makefile +++ b/textproc/py2html/Makefile @@ -11,9 +11,13 @@ PKGNAMESUFFIX= -${PYTHON_PKGNAMEPREFIX:S/-//} MAINTAINER= ports@FreeBSD.org COMMENT= Python Highlighter for HTML -USE_PYTHON= yes -MAKE_ENV= PORTSDIR=${PORTSDIR} +USES= shebangfix +USE_PYTHON= 2 +USE_PYDISTUTILS= yes INSTALLS_EGGINFO= yes -NO_STAGE= yes +python_OLD_CMD= /usr/bin/env python +python_CMD= ${PYTHON_CMD} +SHEBANG_FILES= py2html + .include <bsd.port.mk> diff --git a/textproc/py2html/pkg-plist b/textproc/py2html/pkg-plist index 3392f0a..0abe3d2 100644 --- a/textproc/py2html/pkg-plist +++ b/textproc/py2html/pkg-plist @@ -1,5 +1,7 @@ bin/py2html %%PYTHON_SITELIBDIR%%/PyFontify.py %%PYTHON_SITELIBDIR%%/PyFontify.pyc +%%PYTHON_SITELIBDIR%%/PyFontify.pyo %%PYTHON_SITELIBDIR%%/py2html.py %%PYTHON_SITELIBDIR%%/py2html.pyc +%%PYTHON_SITELIBDIR%%/py2html.pyo diff --git a/x11-toolkits/py-tkinter/Makefile b/x11-toolkits/py-tkinter/Makefile index e772d76..16e26c4 100644 --- a/x11-toolkits/py-tkinter/Makefile +++ b/x11-toolkits/py-tkinter/Makefile @@ -5,10 +5,10 @@ PORTNAME= tkinter PORTVERSION= ${PYTHON_PORTVERSION} PORTREVISION= 5 CATEGORIES= x11-toolkits python -MASTER_SITES= ${PYTHON_MASTER_SITES} -MASTER_SITE_SUBDIR= ${PYTHON_MASTER_SITE_SUBDIR} +MASTER_SITES= PYTHON +MASTER_SITE_SUBDIR= ftp/python/${PORTVERSION} PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX} -DISTNAME= ${PYTHON_DISTNAME} +DISTNAME= Python-${PORTVERSION} MAINTAINER= python@FreeBSD.org COMMENT= Python bindings to the Tk widget set @@ -23,7 +23,7 @@ USES= tar:xz tk DIST_SUBDIR= python DISTINFO_FILE= ${PORTSDIR}/lang/python${PYTHON_SUFFIX}/distinfo -WRKSRC= ${PYTHON_WRKSRC}/Modules +WRKSRC= ${WRKDIR}/Python-${PORTVERSION}/Modules PYDISTUTILS_INSTALLARGS+= --install-lib ${PYTHON_LIBDIR}/lib-dynload PYDISTUTILS_AUTOPLIST= yes diff --git a/x11/gnome-applets/Makefile b/x11/gnome-applets/Makefile index 1bb5a5c..825a562 100644 --- a/x11/gnome-applets/Makefile +++ b/x11/gnome-applets/Makefile @@ -39,7 +39,7 @@ LDFLAGS+= -L${LOCALBASE}/lib ${PTHREAD_LIBS} GCONF_SCHEMAS= charpick.schemas drivemount.schemas geyes.schemas \ mixer.schemas multiload.schemas stickynotes.schemas -OPTIONS_DEFINE= MINI_COMMANDER NOTIFY +OPTIONS_DEFINE= MINI_COMMANDER NOTIFY PYTHON MINI_COMMANDER_DESC= Mini-commander applet .include <bsd.port.options.mk> @@ -62,18 +62,21 @@ PLIST_SUB+= COMMANDER="@comment " OLDCOMMANDER="" WITH_GNOME= yes .endif -.include <bsd.port.pre.mk> - -.if ( exists(${pygnomedesktop_DETECT}) ) || \ - ( ( ${HAVE_GNOME:Mpygnomedesktop}!="" ) && ${ARCH}!="sparc64" ) +.if ${PORT_OPTIONS:MPYTHON} USE_PYTHON= yes -.include "${PORTSDIR}/Mk/bsd.python.mk" USE_GNOME+= pygnomedesktop PLIST_SUB+= PYTHON="" .else +CONFIGURE_ENV+= ac_cv_path_PYTHON=none PLIST_SUB+= PYTHON="@comment " .endif +.include <bsd.port.pre.mk> + +.if ${ARCH} == "sparc64" && ${PORT_OPTIONS:MPYTHON} +IGNORE= Python bindings for gnomedesktop are unsupported on ${ARCH}" +.endif + .if ${ARCH} != "i386" && ${ARCH} != "amd64" CFLAGS+= -fPIC PLIST_SUB+= BATTERY="@comment " |