aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcus von Appen <mva@FreeBSD.org>2014-08-09 15:44:27 +0000
committerMarcus von Appen <mva@FreeBSD.org>2014-08-09 15:44:27 +0000
commit900db324a35a535534c39fc88ba374e4fe6c8d29 (patch)
treeb3bd70d2aa9673b13c4a53db11582d39b1e33eb7
parentead56eb20ceb8747918e7d8421f12e588d78bb03 (diff)
downloadports-900db324a35a535534c39fc88ba374e4fe6c8d29.tar.gz
ports-900db324a35a535534c39fc88ba374e4fe6c8d29.zip
Notes
-rw-r--r--CHANGES23
-rw-r--r--Mk/Uses/python.mk676
-rw-r--r--Mk/bsd.port.mk10
-rw-r--r--Mk/bsd.port.subdir.mk17
-rw-r--r--Mk/bsd.python.mk659
-rw-r--r--Mk/bsd.sanity.mk38
-rw-r--r--Mk/bsd.sites.mk1
-rw-r--r--audio/rhythmbox/Makefile1
-rw-r--r--biology/libsbml/Makefile4
-rw-r--r--databases/ldb/Makefile6
-rw-r--r--databases/metakit/Makefile1
-rw-r--r--databases/ntdb/Makefile18
-rw-r--r--databases/py-bsddb/Makefile6
-rw-r--r--databases/py-gdbm/Makefile8
-rw-r--r--databases/py-sqlite3/Makefile8
-rw-r--r--databases/rrdtool/Makefile1
-rw-r--r--databases/rrdtool12/Makefile2
-rw-r--r--databases/tdb/Makefile22
-rw-r--r--devel/py-checkmanifest/Makefile2
-rw-r--r--devel/py-gobject3/pkg-plist2
-rw-r--r--devel/pygobject3-common/Makefile2
-rw-r--r--devel/talloc/Makefile26
-rw-r--r--devel/tevent/Makefile24
-rw-r--r--editors/gedit/Makefile19
-rw-r--r--japanese/libtomoe-gtk/Makefile5
-rw-r--r--multimedia/libkate/Makefile1
-rw-r--r--security/libpreludedb/Makefile1
-rw-r--r--textproc/py2html/Makefile10
-rw-r--r--textproc/py2html/pkg-plist2
-rw-r--r--x11-toolkits/py-tkinter/Makefile8
-rw-r--r--x11/gnome-applets/Makefile15
31 files changed, 827 insertions, 791 deletions
diff --git a/CHANGES b/CHANGES
index c363551a70b8..43e177c30ff8 100644
--- a/CHANGES
+++ b/CHANGES
@@ -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 000000000000..8e15bdc99aef
--- /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 0e596f3d7f00..d864c928dfd7 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 cd51cc1c5410..cb2ecd4f16ea 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 b9995305e637..000000000000
--- 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 b56a1706f4e4..fc9a40f808a3 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 95746f09f054..ae80b1fb4aef 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 9b6d96303f50..47159e53f1c8 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 1a872b6be81f..1f2b2753a337 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 f1ad7b2c84ad..903a8bd97be0 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 9c2b13da388f..9e319118b345 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 1e78e32a0774..d6b833d40d7f 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 41f6d2d6ed42..4345030045ba 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 419ef922c966..3775fe6fcce8 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 132a0595a324..9bc2d49dae66 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 e8cf543267e1..f0051e4c3a68 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 02d23dd26e47..de2ddb23e7d9 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 9e52dffddb2c..8532078ad72a 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 a9c261bef80e..5f1d1c4849a0 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 3331e7b9d091..9d838e0eb0eb 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 36ac77281a7f..a89456eff627 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 11c788a26a61..24eff74ea499 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 6e848f57a9dd..1f35e1505e28 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 12d47a32eea4..1c349d8d1236 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 32893cd75553..1308fe4e2336 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 2f6b493bb272..afd194f58c9e 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 ce7056cef8d7..96e39c42c3a0 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 fe994fcaa58b..c90aa9673c4a 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 3392f0a22729..0abe3d20ce70 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 e772d760ae76..16e26c44e917 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 1bb5a5cb8d9c..825a562ade55 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 "