Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F133507396
D8069.id20796.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
13 KB
Referenced Files
None
Subscribers
None
D8069.id20796.diff
View Options
Index: Mk/Uses/python.cpython.mk
===================================================================
--- Mk/Uses/python.cpython.mk
+++ Mk/Uses/python.cpython.mk
@@ -0,0 +1,12 @@
+# What Python version and what Python interpreters are currently supported?
+# When adding a version, please keep the comment in
+# Mk/bsd.default-versions.mk in sync.
+_PYTHON_BINNAME= python
+_PYTHON_SHORTNAME= py
+
+PYTHON_PORTSDIR= lang/python${PYTHON_SUFFIX}
+PYTHON_CMD?= ${LOCALBASE}/bin/python${PYTHON_VER}
+
+PYTHON_INCLUDEDIR= ${PYTHONBASE}/include/python${_PYTHON_VERSION}${PYTHON_ABIVER}
+PYTHON_LIBDIR= ${PYTHONBASE}/lib/python${_PYTHON_VERSION}
+PYTHON_SITELIBDIR= ${PYTHON_LIBDIR}/site-packages
\ No newline at end of file
Index: Mk/Uses/python.mk
===================================================================
--- Mk/Uses/python.mk
+++ Mk/Uses/python.mk
@@ -6,7 +6,7 @@
#
# Feature: python
# Usage: USES=python or USES=python:args
-# Valid ARGS: <version>, build, run, test
+# Valid ARGS: <version>, <implementation>, build, run, test
#
# 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
@@ -22,6 +22,12 @@
# USES=python # Use the set default Python
# # version
#
+# implementation If your port requires a specific Python implementation, you
+# can specify this:
+#
+# USES=python:cpython # lang/python
+# USES=python:pypy # lang/pypy
+#
# build Indicates that Python is needed at build time and adds
# it to BUILD_DEPENDS.
# run Indicates that Python is needed at run time and adds
@@ -128,7 +134,7 @@
#
# PYDISTUTILS_INSTALLARGS
# - Arguments to install with distutils.
-# default: -c -O1 --prefix=${PREFIX} --single-version-externally-managed --root=${STAGEDIR}
+# default: -c -O1 --prefix=${PYTHONPREFIX} --single-version-externally-managed --root=${STAGEDIR}
#
# PYDISTUTILS_EGGINFO
# - Canonical name for egg-info.
@@ -188,7 +194,7 @@
# packages for different Python versions.
# default: py${PYTHON_SUFFIX}-
#
-# Using USES=python.mk also will add some useful entries to PLIST_SUB:
+# Using USES=python also will add some useful entries to PLIST_SUB:
#
# PYTHON_INCLUDEDIR=${PYTHONPREFIX_INCLUDEDIR:S;${PREFIX}/;;}
# PYTHON_LIBDIR=${PYTHONPREFIX_LIBDIR:S;${PREFIX}/;;}
@@ -219,14 +225,10 @@
.if !defined(_INCLUDE_USES_PYTHON_MK)
_INCLUDE_USES_PYTHON_MK= yes
-# What Python version and what Python interpreters are currently supported?
-# When adding a version, please keep the comment in
-# Mk/bsd.default-versions.mk in sync.
-_PYTHON_VERSIONS= 2.7 3.4 3.5 3.3 # preferred first
-_PYTHON_PORTBRANCH= 2.7 # ${_PYTHON_VERSIONS:[1]}
-_PYTHON_BASECMD= ${LOCALBASE}/bin/python
-_PYTHON_RELPORTDIR= lang/python
+_PYTHON_VERSIONS_cpython= 2.7 3.4 3.5 3.3 # preferred first
+_PYTHON_VERSIONS_pypy= 2.7 3.3 # preferred first
+
# Make each individual feature available as _PYTHON_FEATURE_<FEATURENAME>
.for var in ${USE_PYTHON}
_PYTHON_FEATURE_${var:tu}= yes
@@ -250,6 +252,13 @@
_PYTHON_TEST_DEP= yes
_PYTHON_ARGS:= ${_PYTHON_ARGS:Ntest}
.endif
+.undef _PYTHON_IMPL
+.for impl in cpython pypy
+. if ${_PYTHON_ARGS:M${impl}}
+_PYTHON_IMPL+= ${impl}
+_PYTHON_ARGS:= ${_PYTHON_ARGS:N${impl}}
+. endif
+.endfor
# The port does not specify a build, run or test dependency, assume all are
# required.
@@ -260,6 +269,20 @@
_PYTHON_TEST_DEP= yes
.endif
+.for var in PYTHON_DEFAULT_VERSION PYTHON2_DEFAULT_VERSION PYTHON3_DEFAULT_VERSION PYTHON_DEFAULT PYTHON2_DEFAULT PYTHON3_DEFAULT
+. if defined(${var})
+cleanvar:= ${${var}}
+. if ${cleanvar:C/^([a-z]+).*/\1/} == ""
+cleanvar:= cpython${cleanvar}
+. endif
+cleanvar:= ${cleanvar:S/^python/cpython/}
+. if ${cleanvar} != ${${var}}
+WARNING+= "Converting ${var}=${${var}} to ${var}=${cleanvar}"
+${var}:= ${cleanvar}
+. endif
+. endif
+.endfor
+
.if defined(PYTHON_DEFAULT_VERSION)
WARNING+= "PYTHON_DEFAULT_VERSION is defined, consider using DEFAULT_VERSIONS=python=${PYTHON_DEFAULT_VERSION:S/^python//} instead"
.endif
@@ -273,39 +296,39 @@
.if exists(${LOCALBASE}/bin/python)
.if !defined(_PYTHON_DEFAULT_VERSION)
_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
+ 'import platform, sys; print("%s%d.%d" % (platform.python_implementation().lower(),) + sys.version_info[:2])' 2> /dev/null \
+ || ${ECHO_CMD} ${PYTHON_DEFAULT}) | ${TAIL} -1
.endif
_EXPORTED_VARS+= _PYTHON_DEFAULT_VERSION
.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}
+PYTHON_DEFAULT_VERSION= ${_PYTHON_DEFAULT_VERSION}
.else
-PYTHON_DEFAULT_VERSION= python${PYTHON_DEFAULT}
+PYTHON_DEFAULT_VERSION= ${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"
+.if ${PYTHON_DEFAULT_VERSION:C/^[a-z]+//} == "2"
+PYTHON2_DEFAULT_VERSION?= ${PYTHON2_DEFAULT}
+.elif ${PYTHON_DEFAULT_VERSION:R:C/^[a-z]+//} == "2"
PYTHON2_DEFAULT_VERSION= ${PYTHON_DEFAULT_VERSION}
.else
-PYTHON2_DEFAULT_VERSION?= python${PYTHON2_DEFAULT}
+PYTHON2_DEFAULT_VERSION?= ${PYTHON2_DEFAULT}
.endif
-.if ${PYTHON_DEFAULT_VERSION} == "python3"
-PYTHON3_DEFAULT_VERSION?= python${PYTHON3_DEFAULT}
-.elif ${PYTHON_DEFAULT_VERSION:R} == "python3"
+.if ${PYTHON_DEFAULT_VERSION:C/^[a-z]+//} == "3"
+PYTHON3_DEFAULT_VERSION?= ${PYTHON3_DEFAULT}
+.elif ${PYTHON_DEFAULT_VERSION:R:C/^[a-z]+//} == "3"
PYTHON3_DEFAULT_VERSION= ${PYTHON_DEFAULT_VERSION}
.else
-PYTHON3_DEFAULT_VERSION?= python${PYTHON3_DEFAULT}
+PYTHON3_DEFAULT_VERSION?= ${PYTHON3_DEFAULT}
.endif
.if ${_PYTHON_ARGS} == "2"
-_PYTHON_ARGS= ${PYTHON2_DEFAULT_VERSION:S/^python//}
+_PYTHON_ARGS= ${PYTHON2_DEFAULT_VERSION:C/^[a-z]+//}
_WANTS_META_PORT= 2
.elif ${_PYTHON_ARGS} == "3"
-_PYTHON_ARGS= ${PYTHON3_DEFAULT_VERSION:S/^python//}
+_PYTHON_ARGS= ${PYTHON3_DEFAULT_VERSION:C/^[a-z]+//}
_WANTS_META_PORT= 3
.endif # ${_PYTHON_ARGS} == "2"
@@ -325,9 +348,11 @@
# 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_VERSION:= ${PYTHON_VERSION:C/^[a-z]+//}
+_PYTHON_IMPL?= ${PYTHON_VERSION:C/^([a-z]+).*/\1/}
.else
-_PYTHON_VERSION:= ${PYTHON_DEFAULT_VERSION:S/^python//}
+_PYTHON_VERSION:= ${PYTHON_DEFAULT_VERSION:C/^[a-z]+//}
+_PYTHON_IMPL?= ${PYTHON_DEFAULT_VERSION:C/^([a-z]+).*/\1/}
.endif # defined(PYTHON_VERSION)
# Validate Python version whether it meets the version restriction.
@@ -351,7 +376,7 @@
WARNING+= "needs Python ${_PYTHON_VERSION_NONSUPPORTED}. But a port depending on this one specified ${_PV}"
.endif # defined(PYTHON_VERSION) || defined(PYTHON_CMD)
.undef _PYTHON_VERSION
-.for ver in ${PYTHON2_DEFAULT} ${PYTHON3_DEFAULT} ${_PYTHON_VERSIONS}
+.for ver in ${PYTHON2_DEFAULT:C/^[a-z]+//} ${PYTHON3_DEFAULT:C/^[a-z]+//} ${_PYTHON_VERSIONS_${_PYTHON_IMPL}}
__VER= ${ver}
.if !defined(_PYTHON_VERSION) && \
!(!empty(_PYTHON_VERSION_MINIMUM) && ( \
@@ -370,7 +395,7 @@
# 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}
+PYTHON_VERSION?= ${_PYTHON_IMPL}{_PYTHON_VERSION}
.if !defined(PYTHON_NO_DEPENDS)
DEPENDS_ARGS+= PYTHON_VERSION=${PYTHON_VERSION}
.endif
@@ -378,8 +403,8 @@
# NOTE:
#
# PYTHON_VERSION will hold whatever is passed down the dependency chain.
-# If a user runs `make PYTHON_VERSION=python3.3, PYTHON_VERSION will be
-# set to 'python3.3'. A port however may require a different version,
+# If a user runs `make PYTHON_VERSION=cpython3.3, PYTHON_VERSION will be
+# set to 'cpython3.3'. A port however may require a different version,
# which is stored (above) in _PYTHON_VERSION.
# Every python bit below hence should use python${_PYTHON_VERSION}, since
# this is the value, the _port_ requires
@@ -391,7 +416,8 @@
PYTHON_MAJOR_VER= ${PYTHON_VER:R}
PYTHON_REL= # empty
PYTHON_ABIVER= # empty
-PYTHON_PORTSDIR= ${_PYTHON_RELPORTDIR}${PYTHON_SUFFIX}
+
+.include "python.${_PYTHON_IMPL}.mk"
# Protect partial checkouts from Mk/Scripts/functions.sh:export_ports_env().
.if !defined(_PORTS_ENV_CHECK) || exists(${PORTSDIR}/${PYTHON_PORTSDIR})
.include "${PORTSDIR}/${PYTHON_PORTSDIR}/Makefile.version"
@@ -403,7 +429,6 @@
PYTHON_REL= ${PYTHON_PORTVERSION:C/^([0-9]+\.[0-9]+\.[0-9]+).*/\1/:C/\.([0-9]+)$/.0\1/:C/\.0?([0-9][0-9])$/.\1/:S/.//g}
# Might be overridden by calling ports
-PYTHON_CMD?= ${_PYTHON_BASECMD}${_PYTHON_VERSION}
.if ${PYTHON_VER} != 2.7
.if exists(${PYTHON_CMD}-config)
PYTHON_ABIVER!= ${PYTHON_CMD}-config --abiflags
@@ -419,16 +444,14 @@
.endif
_EXPORTED_VARS+= PYTHONBASE
-PYTHON_INCLUDEDIR= ${PYTHONBASE}/include/python${_PYTHON_VERSION}${PYTHON_ABIVER}
-PYTHON_LIBDIR= ${PYTHONBASE}/lib/python${_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}
+PYTHON_PKGNAMEPREFIX= ${_PYTHON_SHORTNAME}${PYTHON_SUFFIX}-
+PYTHON_PKGNAMESUFFIX= -${_PYTHON_SHORTNAME}${PYTHON_SUFFIX}
-PYTHONPREFIX_INCLUDEDIR= ${PYTHON_INCLUDEDIR:S;${PYTHONBASE};${PREFIX};}
-PYTHONPREFIX_LIBDIR= ${PYTHON_LIBDIR:S;${PYTHONBASE};${PREFIX};}
-PYTHONPREFIX_SITELIBDIR= ${PYTHON_SITELIBDIR:S;${PYTHONBASE};${PREFIX};}
+PYTHONPREFIX= ${PYTHONBASE:S;${LOCALBASE};${PREFIX};}
+PYTHONPREFIX_INCLUDEDIR= ${PYTHON_INCLUDEDIR:S;${LOCALBASE};${PREFIX};}
+PYTHONPREFIX_LIBDIR= ${PYTHON_LIBDIR:S;${LOCALBASE};${PREFIX};}
+PYTHONPREFIX_SITELIBDIR= ${PYTHON_SITELIBDIR:S;${LOCALBASE};${PREFIX};}
# Used for recording the installed files.
_PYTHONPKGLIST= ${WRKDIR}/.PLIST.pymodtmp
@@ -481,7 +504,7 @@
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}
+PYDISTUTILS_INSTALLARGS?= -c -O1 --prefix=${PYTHONPREFIX}
.if defined(_PYTHON_FEATURE_DISTUTILS)
. if !defined(PYDISTUTILS_INSTALLNOSINGLE)
PYDISTUTILS_INSTALLARGS+= --single-version-externally-managed
@@ -564,19 +587,19 @@
.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}
+BUILD_DEPENDS+= python${_WANTS_META_PORT}:lang/python${_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}
+RUN_DEPENDS+= python${_WANTS_META_PORT}:lang/python${_WANTS_META_PORT}}
.endif
.endif
.if defined(_PYTHON_TEST_DEP)
TEST_DEPENDS+= ${PYTHON_CMD}:${PYTHON_PORTSDIR}
.if defined(_WANTS_META_PORT)
-TEST_DEPENDS+= python${_WANTS_META_PORT}:${_PYTHON_RELPORTDIR}${_WANTS_META_PORT}
+TEST_DEPENDS+= python${_WANTS_META_PORT}:lang/python${_WANTS_META_PORT}}
.endif
.endif
Index: Mk/Uses/python.pypy.mk
===================================================================
--- Mk/Uses/python.pypy.mk
+++ Mk/Uses/python.pypy.mk
@@ -0,0 +1,12 @@
+# What Python version and what Python interpreters are currently supported?
+# When adding a version, please keep the comment in
+# Mk/bsd.default-versions.mk in sync.
+_PYTHON_BINNAME= pypy
+_PYTHON_SHORTNAME= pypy
+
+PYTHON_PORTSDIR= lang/pypy${PYTHON_SUFFIX:C/(.).*/\1/:S/2//}
+PYTHON_CMD?= ${LOCALBASE}/bin/pypy${PYTHON_SUFFIX:C/(.).*/\1/:S/2//}
+
+PYTHON_INCLUDEDIR= ${PYTHONBASE}/include
+PYTHON_LIBDIR= ${PYTHONBASE}/bin
+PYTHON_SITELIBDIR= ${PYTHONBASE}/site-packages
Index: Mk/bsd.default-versions.mk
===================================================================
--- Mk/bsd.default-versions.mk
+++ Mk/bsd.default-versions.mk
@@ -61,12 +61,12 @@
PGSQL_DEFAULT?= 9.3
# Possible values: 5.5, 5.6, 7.0
PHP_DEFAULT?= 5.6
-# Possible values: 2.7, 3.3, 3.4, 3.5
-PYTHON_DEFAULT?= 2.7
-# Possible values: 2.7
-PYTHON2_DEFAULT?= 2.7
-# Possible values: 3.3, 3.4, 3.5
-PYTHON3_DEFAULT?= 3.4
+# Possible values: cpython2.7, cpython3.3, cpython3.4, cpython3.5, pypy2.7 pypy3.3
+PYTHON_DEFAULT?= pypy2.7
+# Possible values: cpython2.7, pypy2.7
+PYTHON2_DEFAULT?= pypy2.7
+# Possible values: cpython3.3, cpython3.4, cpython3.5, pypy2.7 pypy3.3
+PYTHON3_DEFAULT?= pypy3.3
# Possible values: 2.0, 2.1, 2.2, 2.3
RUBY_DEFAULT?= 2.2
# Possible values: base, openssl, openssl-devel, libressl, libressl-devel
Index: lang/pypy/Makefile.version
===================================================================
--- lang/pypy/Makefile.version
+++ lang/pypy/Makefile.version
@@ -0,0 +1,4 @@
+# Mk/Uses/python.mk includes this file, don't remove it!
+# $FreeBSD$
+
+PYTHON_PORTVERSION= 2.7.10
Index: lang/pypy3/Makefile.version
===================================================================
--- lang/pypy3/Makefile.version
+++ lang/pypy3/Makefile.version
@@ -0,0 +1,4 @@
+# Mk/Uses/python.mk includes this file, don't remove it!
+# $FreeBSD$
+
+PYTHON_PORTVERSION= 3.3.5
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Mon, Oct 27, 7:03 AM (4 h, 24 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
24279506
Default Alt Text
D8069.id20796.diff (13 KB)
Attached To
Mode
D8069: Mk/Uses/python.mk: add support for PyPy
Attached
Detach File
Event Timeline
Log In to Comment