aboutsummaryrefslogtreecommitdiffstats
path: root/Mk
diff options
context:
space:
mode:
authorperky <perky@FreeBSD.org>2003-10-16 13:58:53 +0800
committerperky <perky@FreeBSD.org>2003-10-16 13:58:53 +0800
commit8b52f92710d4c5d97e6787b476e476d072fdde5a (patch)
treeee8f4ff687dec09f110dfcf5ff340fff4f527a85 /Mk
parent105fa84a15e98b7efac993f0fc39222ba35e839b (diff)
downloadfreebsd-ports-gnome-8b52f92710d4c5d97e6787b476e476d072fdde5a.tar.gz
freebsd-ports-gnome-8b52f92710d4c5d97e6787b476e476d072fdde5a.tar.zst
freebsd-ports-gnome-8b52f92710d4c5d97e6787b476e476d072fdde5a.zip
- Enable restricting compatible python versions by USE_PYTHON
eg) USE_PYTHON= yes # backward compatible USE_PYTHON= 2.2 # same as PYTHON_VERSION=python2.2 USE_PYTHON= 2.1+ # 2.1 at least USE_PYTHON= 2.0-2.2 # from 2.0 to 2.2 USE_PYTHON= -2.3 # up to 2.3. 2.4 is not allowed. - Introduce a new variable, PYTHON_PKGNAMESUFFIX for ports that is more popular without 'py-' prefix like Mailman or Zope. Reviewed by: silence on ports@
Diffstat (limited to 'Mk')
-rw-r--r--Mk/bsd.python.mk80
1 files changed, 70 insertions, 10 deletions
diff --git a/Mk/bsd.python.mk b/Mk/bsd.python.mk
index c0745aef2205..ec5d9b3a8159 100644
--- a/Mk/bsd.python.mk
+++ b/Mk/bsd.python.mk
@@ -13,7 +13,9 @@ Python_Include_MAINTAINER= perky@FreeBSD.org
# make your life easier when dealing with ports related to the Python
# language. It's automatically included when USE_PYTHON or PYTHON_VERSION
# is defined in the ports' makefile. Define PYTHON_VERSION to override the
-# defaults that USE_PYTHON would give you.
+# defaults that USE_PYTHON would give you. If your port requires only some
+# set of Python versions, you can define USE_PYTHON as [min]-[max] or
+# min+. (eg. 2.1-2.3, 2.0+ or -2.2)
#
# The variables:
#
@@ -39,6 +41,10 @@ Python_Include_MAINTAINER= perky@FreeBSD.org
# 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
@@ -99,24 +105,77 @@ Python_Include_MAINTAINER= perky@FreeBSD.org
# PYSETUP: Name of the setup script used by the distutils package.
# default: setup.py
+_PYTHON_PORTBRANCH= 2.3
+_PYTHON_PORTVERSION= 2.3.2
+_PYTHON_ALLBRANCHES= 2.3 2.2 2.1 2.0 1.5 2.4 # preferred first
+
+.if defined(USE_ZOPE)
+PYTHON_VERSION= python2.2
+.endif
+
+.if defined(PYTHON_VERSION)
+_PYTHON_VERSION!= echo "${PYTHON_VERSION}" | ${SED} 's/^python//'
+_PYTHON_CMD= ${LOCALBASE}/bin/${PYTHON_VERSION}
+.else
# Determine the currently installed version. If Python is not installed, a
# default version number is substituted and the corresponding Python
# distribution will be built through the dependency processing.
.if defined(PYTHON_CMD)
-_PYTHON_VERSION!= ${PYTHON_CMD} -c 'import sys; print sys.version[:3]'
-.elif defined(USE_ZOPE)
-_PYTHON_VERSION= 2.1
+_PYTHON_CMD= ${PYTHON_CMD}
.else
-_PYTHON_VERSION!= (${LOCALBASE}/bin/python -c 'import sys; print sys.version[:3]') 2> /dev/null \
- || echo 2.3
+_PYTHON_CMD= ${LOCALBASE}/bin/python
.endif
+_PYTHON_VERSION!= ${_PYTHON_CMD} -c \
+ 'import sys; print sys.version[:3]' 2> /dev/null \
+ || echo ${_PYTHON_PORTBRANCH}
+.endif # defined(PYTHON_VERSION)
+
+# Validate Python version whether it meets USE_PYTHON version restriction.
+_PYTHON_VERSION_CHECK!= echo "${USE_PYTHON}" | \
+ ${SED} 's/^\([1-9]\.[0-9]\)$$/\1-\1/'
+_PYTHON_VERSION_MINIMUM!= echo "${_PYTHON_VERSION_CHECK}" | \
+ ${SED} -n 's/.*\([1-9]\.[0-9]\)[-+].*/\1/p'
+_PYTHON_VERSION_MAXIMUM!= echo "${_PYTHON_VERSION_CHECK}" | \
+ ${SED} -n 's/.*-\([1-9]\.[0-9]\).*/\1/p'
+.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 ${_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_PORTVERSION= 2.3.2
-PYTHON_CMD?= ${PYTHONBASE}/bin/${PYTHON_VERSION}
+PYTHON_CMD?= ${_PYTHON_CMD}
PYTHONBASE!= (${PYTHON_CMD} -c 'import sys; print sys.prefix') \
2> /dev/null || echo ${LOCALBASE}
-PYTHON_PORTVERSION!= (${PYTHON_CMD} -c 'import string, sys; \
- print string.split(sys.version)[0]') 2> /dev/null \
+PYTHON_PORTVERSION!=(${PYTHON_CMD} -c 'import string, sys; \
+ print string.split(sys.version)[0]') 2> /dev/null \
|| echo ${_PYTHON_PORTVERSION}
# Python-2.4
@@ -207,6 +266,7 @@ PYTHON_WRKSRC= ${WRKDIR}/Python-${_PYTHON_PORTVERSION}
PYTHON_INCLUDEDIR= ${PYTHONBASE}/include/${PYTHON_VERSION}
PYTHON_LIBDIR= ${PYTHONBASE}/lib/${PYTHON_VERSION}
PYTHON_PKGNAMEPREFIX= py${PYTHON_SUFFIX}-
+PYTHON_PKGNAMESUFFIX= -py${PYTHON_SUFFIX}
PYTHON_PLATFORM!= expr ${OPSYS:L}${OSREL} : '\(.*\)\.'
PYTHON_SITELIBDIR= ${PYTHON_LIBDIR}/site-packages