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 \

Reply via email to