Hi, I have worked on the diff.
Differences with last diff I sent are:
- use PY3 instead of IS_PY3
- PY3 could be:
* both if it works with python 2 and python 3 (instead of yes)
* only if it works only with python 3
- modify FLAVORS, it was not correct
I run a build (amd64) on all ports which have python for modules and it works
fine.
Are you ok with this diff?
Cheers,
--
Remi
Index: python.port.mk
===================================================================
RCS file: /cvs/ports/lang/python/python.port.mk,v
retrieving revision 1.47
diff -u -p -r1.47 python.port.mk
--- python.port.mk 17 Oct 2011 13:55:24 -0000 1.47
+++ python.port.mk 21 Nov 2011 19:16:27 -0000
@@ -7,23 +7,67 @@ SHARED_ONLY= Yes
CATEGORIES+= lang/python
-MODPY_VERSION?= 2.7
+# define the default version
+_MODPY_DEFAULT_VERSION = 2.7
-.if ${MODPY_VERSION} == "2.4" || ${MODPY_VERSION} == "2.5" || ${MODPY_VERSION}
== "2.7" || ${MODPY_VERSION} == "3.2"
-
-. if ${MODPY_VERSION} < 2.6
-MODPY_JSON = devel/py-simplejson
-. else
-MODPY_JSON =
+.if !defined(MODPY_VERSION)
+. if defined(PY3)
+. if ${PY3:L:Mboth}
+FLAVORS+= python3
+# force to use python3 if ports is python3 only
+. elif ${PY3:L:Monly}
+FLAVORS+= python3
+FLAVOR+= python3
+. else
+ERRORS += "Fatal: please verify PY3 is correctly defined: \n\
+ - set to both if your port can be build with python2 and python3 \n\
+ - set to only if your port can be build only with python3 \n"
+. endif
. endif
-. if ${MODPY_VERSION} < 3.2
-MODPY_WANTLIB = python${MODPY_VERSION}
+FLAVOR?=
+
+# try do detect if the port has other FLAVORS than just python3
+. if ${FLAVOR:L:Mpython3}
+# define default version 3
+MODPY_VERSION?= 3.2
. else
-MODPY_WANTLIB = python${MODPY_VERSION}m
+# without flavor, assume we use the default version
+MODPY_VERSION?= ${_MODPY_DEFAULT_VERSION}
. endif
+
+# verify if MODPY_VERSION forced is correct
.else
+. if ${MODPY_VERSION} != "2.4" && \
+ ${MODPY_VERSION} != "2.5" && \
+ ${MODPY_VERSION} != "2.7" && \
+ ${MODPY_VERSION} != "3.2"
ERRORS += "Fatal: unknown or unsupported MODPY_VERSION: ${MODPY_VERSION}"
+. endif
+.endif
+
+_MODPY_MAJOR_VERSION = ${MODPY_VERSION:C/\.[1-9]*//g}
+
+.if ${_MODPY_MAJOR_VERSION} == 2
+MODPY_LIB_SUFFIX =
+MODPY_FLAVOR =
+MODPY_BIN_SUFFIX =
+
+.elif ${_MODPY_MAJOR_VERSION} == 3
+MODPY_LIB_SUFFIX = m
+# replace py- prefix by py3-
+FULLPKGNAME = ${PKGNAME:S/^py-/py3-/}
+MODPY_FLAVOR = ,python3
+# add the modpy_version without the '.' to the binaries to avoid conflict
+MODPY_BIN_SUFFIX = ${_MODPY_MAJOR_VERSION}
+.endif
+
+MODPY_WANTLIB = python${MODPY_VERSION}${MODPY_LIB_SUFFIX}
+
+.if ${MODPY_VERSION} < 2.6
+MODPY_JSON = devel/py-simplejson
+.else
+MODPY_JSON =
.endif
MODPY_RUN_DEPENDS= lang/python/${MODPY_VERSION}
@@ -41,15 +85,17 @@ RUN_DEPENDS+= ${MODPY_RUN_DEPENDS}
.endif
MODPY_PRE_BUILD_STEPS = @:
-.if (defined(MODPY_SETUPTOOLS) && ${MODPY_SETUPTOOLS:U} == YES) || \
- (defined(MODPY_DISTRIBUTE) && ${MODPY_DISTRIBUTE:U} == YES)
+.if (defined(MODPY_SETUPTOOLS) && ${MODPY_SETUPTOOLS:U} == YES)
# The setuptools module provides a package locator (site.py) that is
# required at runtime for the pkg_resources stuff to work
-.if ${MODPY_SETUPTOOLS:U} == YES
+. if ${_MODPY_MAJOR_VERSION} == 2
MODPY_SETUPUTILS_DEPEND?=devel/py-setuptools
-.else
-MODPY_SETUPUTILS_DEPEND ?= devel/py3-distribute
-.endif
+. elif ${_MODPY_MAJOR_VERSION} == 3
+MODPY_SETUPUTILS_DEPEND?=devel/py-distribute,python3
+. else
+ERRORS += "Fatal: unknown or unsupported _MODPY_MAJOR_VERSION:
${_MODPY_MAJOR_VERSION}"
+. endif
+
MODPY_RUN_DEPENDS+= ${MODPY_SETUPUTILS_DEPEND}
BUILD_DEPENDS+= ${MODPY_SETUPUTILS_DEPEND}
MODPY_SETUPUTILS = Yes
@@ -65,8 +111,7 @@ MODPY_PRE_BUILD_STEPS += \
;mkdir -p ${_MODPY_SETUPUTILS_FAKE_DIR} \
;exec >${_MODPY_SETUPUTILS_FAKE_DIR}/__init__.py \
;echo 'def setup(*args, **kwargs):' \
- ;echo ' msg = "OpenBSD ports: MODPY_SETUPTOOLS = Yes or\\n" \' \
- ;echo ' "\\t\\t\\t MODPY_DISTRIBUTE = Yes required"' \
+ ;echo ' msg = "OpenBSD ports: MODPY_SETUPTOOLS = Yes is required"' \
;echo ' raise Exception(msg)' \
;echo 'Extension = Feature = find_packages = setup'
MODPY_SETUPUTILS = No
@@ -110,7 +155,7 @@ CONFIGURE_ENV+= PYTHON="${MODPY_BIN}"
_MODPY_CMD= @cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} \
${MODPY_BIN} ./${MODPY_SETUP}
-SUBST_VARS:= MODPY_BIN MODPY_EGG_VERSION MODPY_VERSION ${SUBST_VARS}
+SUBST_VARS:= MODPY_BIN MODPY_BIN_SUFFIX MODPY_EGG_VERSION MODPY_VERSION
${SUBST_VARS}
# set MODPY_BIN for executable scripts
MODPY_BIN_ADJ= perl -pi \