Index: Mk/bsd.python.mk =================================================================== --- Mk/bsd.python.mk (revision 305817) +++ Mk/bsd.python.mk (working copy) @@ -87,6 +87,15 @@ # in case you want to use an older version as a default. # default: python2.7 # +# PYTHON3_DEFAULT_VERSION +# - Version of the default python binary in your ${PATH}, in +# the format "python3.2". Set this in your /etc/make.conf +# in case you want to use an older version as a default. +# default: 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 @@ -271,6 +280,12 @@ PYTHON_DEFAULT_VERSION= python${_PYTHON_DEFAULT_VERSION} .endif +.if ${PYTHON_DEFAULT_VERSION:R} == "python3" +PYTHON3_DEFAULT_VERSION= ${PYTHON_DEFAULT_VERSION} +.else +PYTHON3_DEFAULT_VERSION= python3.2 +.endif + .if defined(PYTHON_VERSION) _PYTHON_VERSION:= ${PYTHON_VERSION:S/^python//} _PYTHON_CMD= ${LOCALBASE}/bin/${PYTHON_VERSION} @@ -412,6 +427,8 @@ @${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_DISTFILE= Python-${PYTHON_PORTVERSION:S/.rc/rc/}${EXTRACT_SUFX} Index: lang/python26/Makefile =================================================================== --- lang/python26/Makefile (revision 305817) +++ lang/python26/Makefile (working copy) @@ -7,7 +7,7 @@ PORTNAME= python26 PORTVERSION= 2.6.8 -PORTREVISION= 3 +PORTREVISION= 4 CATEGORIES= lang python ipv6 MASTER_SITES= ${PYTHON_MASTER_SITES} MASTER_SITE_SUBDIR= ${PYTHON_MASTER_SITE_SUBDIR} @@ -37,6 +37,7 @@ PLIST= ${WRKDIR}/PLIST PLIST_TEMPLATE?=${PKGDIR}/pkg-plist PLIST_SUB= PYVER=${PYTHON_VERSION:S/python//} \ + PYMAJOR=${PYTHON_MAJOR_VER} \ PYVER_WITHPAT=${PORTVERSION:S/.c/c/} EXAMPLESDIR= ${PREFIX}/share/examples/${PYTHON_VERSION} DATADIR= ${PREFIX}/share/${PYTHON_VERSION} @@ -47,9 +48,11 @@ BIN_SCRIPTS= 2to3 idle pydoc smtpd.py BIN_FILES= python python-shared python-config python-shared-config \ ${BIN_SCRIPTS} -BINLINKS_SUB= -e 's,smtpd,smtpd${PYTHON_VER},' \ - -e 's,2to3,2to3-${PYTHON_VER},' \ - -e 's,(idle|pydoc|python-shared|python),\1${PYTHON_VER},' +BINLINKS_SUB_TMPL= -e 's,smtpd,smtpd%%VERSION%%,' \ + -e 's,2to3,2to3-%%VERSION%%,' \ + -e 's,(idle|pydoc|python-shared|python),\1%%VERSION%%,' +BINLINKS_SUB_PYTHON_VER= ${BINLINKS_SUB_TMPL:S/%%VERSION%%/${PYTHON_VER}/g} +BINLINKS_SUB_PYTHON_MAJOR_VER= ${BINLINKS_SUB_TMPL:S/%%VERSION%%/${PYTHON_MAJOR_VER}/g} OPTIONS_DEFINE= THREADS SEM PTH PYMALLOC IPV6 FPECTL EXAMPLES NLS OPTIONS_DEFAULT= THREADS UCS4 PYMALLOC IPV6 @@ -67,14 +70,14 @@ .else IGNORE= POSIX semaphore support only works in FreeBSD 7-STABLE and later .endif # ${OSVERSION} >= 701106 -.else +.else SEM_MSG= "@comment " .endif SUB_FILES= pkg-message SUB_LIST= SEM=${SEM_MSG} -.if ${PYTHON_VERSION} == ${PYTHON_DEFAULT_VERSION} || !exists(${LOCALBASE}/bin/python) +.if ${PYTHON_VERSION} == ${PYTHON_DEFAULT_VERSION} MLINKS= ${PYTHON_VERSION}.1 python.1 PLIST_SUB+= IF_DEFAULT="" .else @@ -161,7 +164,7 @@ .for script in ${BIN_SCRIPTS} ${SED} -e '1s,^.*$$,#!${PREFIX}/bin/${PYTHON_VERSION},' \ ${PATCH_WRKSRC}/Tools/scripts/${script} \ - > ${WRKDIR}/`${ECHO_CMD} ${script} | ${SED} -E ${BINLINKS_SUB}` + > ${WRKDIR}/`${ECHO_CMD} ${script} | ${SED} -E ${BINLINKS_SUB_PYTHON_VER}` .endfor ${REINPLACE_CMD} -e \ 's,/usr/doc/python-docs-,${PREFIX}/share/doc/python,g' \ @@ -257,17 +260,19 @@ @# additional files installing by ports .for script in ${BIN_SCRIPTS} ${INSTALL_SCRIPT} \ - ${WRKDIR}/`${ECHO_CMD} ${script} | ${SED} -E ${BINLINKS_SUB}` \ + ${WRKDIR}/`${ECHO_CMD} ${script} | ${SED} -E ${BINLINKS_SUB_PYTHON_VER}` \ ${PREFIX}/bin .endfor @${MKDIR} ${MANPREFIX}/man/man1 ${INSTALL_MAN} ${PYTHON_WRKSRC}/Misc/python.man \ ${MANPREFIX}/man/man1/${PYTHON_VERSION}.1 -.if ${PYTHON_VERSION} == ${PYTHON_DEFAULT_VERSION} || !exists(${LOCALBASE}/bin/python) +.if ${PYTHON_VERSION} == ${PYTHON_DEFAULT_VERSION} for f in ${BIN_FILES}; do \ - TARGET=`${ECHO_CMD} $$f | ${SED} -E ${BINLINKS_SUB}`; \ - cd ${PREFIX}/bin && ${LN} -f $$TARGET $$f; \ + TARGET=`${ECHO_CMD} $$f | ${SED} -E ${BINLINKS_SUB_PYTHON_VER}`; \ + TARGET_MAJOR=`${ECHO_CMD} $$f | ${SED} -E ${BINLINKS_SUB_PYTHON_MAJOR_VER}`; \ + cd ${PREFIX}/bin && ${LN} -sf $$TARGET $$TARGET_MAJOR; \ + cd ${PREFIX}/bin && ${LN} -sf $$TARGET_MAJOR $$f; \ done .endif Index: lang/python26/pkg-plist =================================================================== --- lang/python26/pkg-plist (revision 305817) +++ lang/python26/pkg-plist (working copy) @@ -1,18 +1,26 @@ %%IF_DEFAULT%%bin/2to3 +%%IF_DEFAULT%%bin/2to3-%%PYMAJOR%% bin/2to3-%%PYVER%% %%IF_DEFAULT%%bin/idle +%%IF_DEFAULT%%bin/idle%%PYMAJOR%% bin/idle%%PYVER%% %%IF_DEFAULT%%bin/pydoc +%%IF_DEFAULT%%bin/pydoc%%PYMAJOR%% bin/pydoc%%PYVER%% %%IF_DEFAULT%%bin/python +%%IF_DEFAULT%%bin/python%%PYMAJOR%% bin/python%%PYVER%% %%IF_DEFAULT%%bin/python-config +%%IF_DEFAULT%%bin/python%%PYMAJOR%%-config bin/python%%PYVER%%-config %%IF_DEFAULT%%bin/python-shared +%%IF_DEFAULT%%bin/python-shared%%PYMAJOR%% bin/python-shared%%PYVER%% %%IF_DEFAULT%%bin/python-shared-config +%%IF_DEFAULT%%bin/python-shared%%PYMAJOR%%-config bin/python-shared%%PYVER%%-config %%IF_DEFAULT%%bin/smtpd.py +%%IF_DEFAULT%%bin/smtpd%%PYMAJOR%%.py bin/smtpd%%PYVER%%.py %%PYTHON_INCLUDEDIR%%/Python-ast.h %%PYTHON_INCLUDEDIR%%/Python.h Index: lang/python27/Makefile =================================================================== --- lang/python27/Makefile (revision 305817) +++ lang/python27/Makefile (working copy) @@ -7,7 +7,7 @@ PORTNAME= python27 PORTVERSION= 2.7.3 -PORTREVISION= 3 +PORTREVISION= 4 CATEGORIES= lang python ipv6 MASTER_SITES= ${PYTHON_MASTER_SITES} MASTER_SITE_SUBDIR= ${PYTHON_MASTER_SITE_SUBDIR} @@ -37,6 +37,7 @@ PLIST= ${WRKDIR}/PLIST PLIST_TEMPLATE?=${PKGDIR}/pkg-plist PLIST_SUB= PYVER=${PYTHON_VERSION:S/python//} \ + PYMAJOR=${PYTHON_MAJOR_VER} \ PYVER_WITHPAT=${PORTVERSION:S/.c/c/} EXAMPLESDIR= ${PREFIX}/share/examples/${PYTHON_VERSION} DATADIR= ${PREFIX}/share/${PYTHON_VERSION} @@ -47,9 +48,11 @@ BIN_SCRIPTS= 2to3 idle pydoc smtpd.py BIN_FILES= python python-shared python-config python-shared-config \ ${BIN_SCRIPTS} -BINLINKS_SUB= -e 's,smtpd,smtpd${PYTHON_VER},' \ - -e 's,2to3,2to3-${PYTHON_VER},' \ - -e 's,(idle|pydoc|python-shared|python),\1${PYTHON_VER},' +BINLINKS_SUB_TMPL= -e 's,smtpd,smtpd%%VERSION%%,' \ + -e 's,2to3,2to3-%%VERSION%%,' \ + -e 's,(idle|pydoc|python-shared|python),\1%%VERSION%%,' +BINLINKS_SUB_PYTHON_VER= ${BINLINKS_SUB_TMPL:S/%%VERSION%%/${PYTHON_VER}/g} +BINLINKS_SUB_PYTHON_MAJOR_VER= ${BINLINKS_SUB_TMPL:S/%%VERSION%%/${PYTHON_MAJOR_VER}/g} OPTIONS_DEFINE= THREADS SEM PTH PYMALLOC IPV6 FPECTL EXAMPLES NLS OPTIONS_DEFAULT= THREADS UCS4 PYMALLOC IPV6 @@ -74,7 +77,7 @@ SUB_FILES= pkg-message SUB_LIST= SEM=${SEM_MSG} -.if ${PYTHON_VERSION} == ${PYTHON_DEFAULT_VERSION} || !exists(${LOCALBASE}/bin/python) +.if ${PYTHON_VERSION} == ${PYTHON_DEFAULT_VERSION} MLINKS= ${PYTHON_VERSION}.1 python.1 PLIST_SUB+= IF_DEFAULT="" .else @@ -158,7 +161,6 @@ CONFIGURE_ARGS+= --with-fpectl .endif - CONFIGURE_ENV+= OPT="${CFLAGS} ${_PTH_CPPFLAGS}" post-extract: @@ -177,7 +179,7 @@ .for script in ${BIN_SCRIPTS} ${SED} -e '1s,^.*$$,#!${PREFIX}/bin/${PYTHON_VERSION},' \ ${PATCH_WRKSRC}/Tools/scripts/${script} \ - > ${WRKDIR}/`${ECHO_CMD} ${script} | ${SED} -E ${BINLINKS_SUB}` + > ${WRKDIR}/`${ECHO_CMD} ${script} | ${SED} -E ${BINLINKS_SUB_PYTHON_VER}` .endfor ${REINPLACE_CMD} -e \ 's,/usr/doc/python-docs-,${PREFIX}/share/doc/python,g' \ @@ -273,17 +275,19 @@ @# additional files installing by ports .for script in ${BIN_SCRIPTS} ${INSTALL_SCRIPT} \ - ${WRKDIR}/`${ECHO_CMD} ${script} | ${SED} -E ${BINLINKS_SUB}` \ + ${WRKDIR}/`${ECHO_CMD} ${script} | ${SED} -E ${BINLINKS_SUB_PYTHON_VER}` \ ${PREFIX}/bin .endfor @${MKDIR} ${MANPREFIX}/man/man1 ${INSTALL_MAN} ${PYTHON_WRKSRC}/Misc/python.man \ ${MANPREFIX}/man/man1/${PYTHON_VERSION}.1 -.if ${PYTHON_VERSION} == ${PYTHON_DEFAULT_VERSION} || !exists(${LOCALBASE}/bin/python) +.if ${PYTHON_VERSION} == ${PYTHON_DEFAULT_VERSION} for f in ${BIN_FILES}; do \ - TARGET=`${ECHO_CMD} $$f | ${SED} -E ${BINLINKS_SUB}`; \ - cd ${PREFIX}/bin && ${LN} -f $$TARGET $$f; \ + TARGET=`${ECHO_CMD} $$f | ${SED} -E ${BINLINKS_SUB_PYTHON_VER}`; \ + TARGET_MAJOR=`${ECHO_CMD} $$f | ${SED} -E ${BINLINKS_SUB_PYTHON_MAJOR_VER}`; \ + cd ${PREFIX}/bin && ${LN} -sf $$TARGET $$TARGET_MAJOR; \ + cd ${PREFIX}/bin && ${LN} -sf $$TARGET_MAJOR $$f; \ done .endif Index: lang/python27/pkg-plist =================================================================== --- lang/python27/pkg-plist (revision 305817) +++ lang/python27/pkg-plist (working copy) @@ -1,19 +1,27 @@ libdata/pkgconfig/python-2.7.pc %%IF_DEFAULT%%bin/2to3 +%%IF_DEFAULT%%bin/2to3-%%PYMAJOR%% bin/2to3-%%PYVER%% %%IF_DEFAULT%%bin/idle +%%IF_DEFAULT%%bin/idle%%PYMAJOR%% bin/idle%%PYVER%% %%IF_DEFAULT%%bin/pydoc +%%IF_DEFAULT%%bin/pydoc%%PYMAJOR%% bin/pydoc%%PYVER%% %%IF_DEFAULT%%bin/python +%%IF_DEFAULT%%bin/python%%PYMAJOR%% bin/python%%PYVER%% %%IF_DEFAULT%%bin/python-config +%%IF_DEFAULT%%bin/python%%PYMAJOR%%-config bin/python%%PYVER%%-config %%IF_DEFAULT%%bin/python-shared +%%IF_DEFAULT%%bin/python-shared%%PYMAJOR%% bin/python-shared%%PYVER%% %%IF_DEFAULT%%bin/python-shared-config +%%IF_DEFAULT%%bin/python-shared%%PYMAJOR%%-config bin/python-shared%%PYVER%%-config %%IF_DEFAULT%%bin/smtpd.py +%%IF_DEFAULT%%bin/smtpd%%PYMAJOR%%.py bin/smtpd%%PYVER%%.py %%PYTHON_INCLUDEDIR%%/Python-ast.h %%PYTHON_INCLUDEDIR%%/Python.h Index: lang/python31/Makefile =================================================================== --- lang/python31/Makefile (revision 305817) +++ lang/python31/Makefile (working copy) @@ -7,7 +7,7 @@ PORTNAME= python31 PORTVERSION= 3.1.5 -PORTREVISION= 1 +PORTREVISION= 2 CATEGORIES= lang python ipv6 MASTER_SITES= ${PYTHON_MASTER_SITES} MASTER_SITE_SUBDIR= ${PYTHON_MASTER_SITE_SUBDIR} @@ -37,6 +37,7 @@ PLIST= ${WRKDIR}/PLIST PLIST_TEMPLATE?=${PKGDIR}/pkg-plist PLIST_SUB= PYVER=${PYTHON_VERSION:S/python//} \ + PYMAJOR=${PYTHON_MAJOR_VER} \ PYVER_WITHPAT=${PORTVERSION:S/.rc/rc/} EXAMPLESDIR= ${PREFIX}/share/examples/${PYTHON_VERSION} DATADIR= ${PREFIX}/share/${PYTHON_VERSION} @@ -58,13 +59,19 @@ .include -.if ${PYTHON_VERSION} == ${PYTHON_DEFAULT_VERSION} || !exists(${LOCALBASE}/bin/python) +.if ${PYTHON_VERSION} == ${PYTHON_DEFAULT_VERSION} MLINKS= ${PYTHON_VERSION}.1 python.1 PLIST_SUB+= IF_DEFAULT="" .else PLIST_SUB+= IF_DEFAULT="@comment " .endif +.if ${PYTHON_VERSION} == ${PYTHON3_DEFAULT_VERSION} +PLIST_SUB+= IF_DEFAULT_MAJOR="" +.else +PLIST_SUB+= IF_DEFAULT_MAJOR="@comment " +.endif + .if ${PORT_OPTIONS:MNLS} USE_GETTEXT= yes # XXX do not set any LDFLAGS or CFLAGS - this causes pyexpat to fail building @@ -216,13 +223,19 @@ ${INSTALL_MAN} ${PYTHON_WRKSRC}/Misc/python.man \ ${MANPREFIX}/man/man1/${PYTHON_VERSION}.1 -.if ${PYTHON_VERSION} == ${PYTHON_DEFAULT_VERSION} || !exists(${LOCALBASE}/bin/python) +.if ${PYTHON_VERSION} == ${PYTHON_DEFAULT_VERSION} for f in ${BIN_FILES}; do \ TARGET=`${ECHO_CMD} $$f | ${SED} -E ${BINLINKS_SUB}`; \ - cd ${PREFIX}/bin && ${LN} -f $$TARGET $$f; \ + cd ${PREFIX}/bin && ${LN} -sf $$TARGET $$f; \ done .endif +.if ${PYTHON_VERSION} == ${PYTHON3_DEFAULT_VERSION} +.for file in python python-config + cd ${LOCALBASE}/bin && ${LN} -sf ${file:S/python/${PYTHON_VERSION}/} ${file:S/python/python${PYTHON_MAJOR_VER}/} +.endfor +.endif + .if !defined(NOPORTDATA) @${MKDIR} ${DATADIR} @cd ${PYTHON_WRKSRC}; ${TAR} -cf - Tools | \ Index: lang/python31/pkg-plist =================================================================== --- lang/python31/pkg-plist (revision 305817) +++ lang/python31/pkg-plist (working copy) @@ -5,8 +5,10 @@ %%IF_DEFAULT%%bin/pydoc3 bin/pydoc3-%%PYVER%% %%IF_DEFAULT%%bin/python +%%IF_DEFAULT_MAJOR%%bin/python%%PYMAJOR%% bin/python%%PYVER%% %%IF_DEFAULT%%bin/python-config +%%IF_DEFAULT_MAJOR%%bin/python%%PYMAJOR%%-config bin/python%%PYVER%%-config %%IF_DEFAULT%%bin/python-shared bin/python-shared%%PYVER%% Index: lang/python32/Makefile =================================================================== --- lang/python32/Makefile (revision 305817) +++ lang/python32/Makefile (working copy) @@ -7,7 +7,7 @@ PORTNAME= python32 PORTVERSION= 3.2.3 -PORTREVISION= 1 +PORTREVISION= 2 CATEGORIES= lang python ipv6 MASTER_SITES= ${PYTHON_MASTER_SITES} MASTER_SITE_SUBDIR= ${PYTHON_MASTER_SITE_SUBDIR} @@ -37,6 +37,7 @@ SHARED_WRKSRC= ${PYTHON_WRKSRC}/portbld.shared PLIST_SUB= PYVER=${PYTHON_VERSION:S/python//} \ + PYMAJOR=${PYTHON_MAJOR_VER} \ PYVER_WITHPAT=${PORTVERSION:S/.rc/rc/} \ PYABIVER=${PYABIVER} EXAMPLESDIR= ${PREFIX}/share/examples/${PYTHON_VERSION} @@ -59,13 +60,19 @@ .include -.if ${PYTHON_VERSION} == ${PYTHON_DEFAULT_VERSION} || !exists(${LOCALBASE}/bin/python) +.if ${PYTHON_VERSION} == ${PYTHON_DEFAULT_VERSION} MLINKS= ${PYTHON_VERSION}.1 python.1 PLIST_SUB+= IF_DEFAULT="" .else PLIST_SUB+= IF_DEFAULT="@comment " .endif +.if ${PYTHON_VERSION} == ${PYTHON3_DEFAULT_VERSION} +PLIST_SUB+= IF_DEFAULT_MAJOR="" +.else +PLIST_SUB+= IF_DEFAULT_MAJOR="@comment " +.endif + .if ${PORT_OPTIONS:MNLS} USE_GETTEXT= yes # XXX do not set any LDFLAGS or CFLAGS - this causes pyexpat to fail building @@ -209,13 +216,19 @@ ${INSTALL_MAN} ${PYTHON_WRKSRC}/Misc/python.man \ ${MANPREFIX}/man/man1/${PYTHON_VERSION}.1 -.if ${PYTHON_VERSION} == ${PYTHON_DEFAULT_VERSION} || !exists(${LOCALBASE}/bin/python) +.if ${PYTHON_VERSION} == ${PYTHON_DEFAULT_VERSION} for f in ${BIN_FILES}; do \ TARGET=`${ECHO_CMD} $$f | ${SED} -E ${BINLINKS_SUB}`; \ - cd ${PREFIX}/bin && ${LN} -f $$TARGET $$f; \ + cd ${PREFIX}/bin && ${LN} -sf $$TARGET $$f; \ done .endif +.if ${PYTHON_VERSION} == ${PYTHON3_DEFAULT_VERSION} +.for file in python python-config + cd ${LOCALBASE}/bin && ${LN} -sf ${file:S/python/${PYTHON_VERSION}/} ${file:S/python/python${PYTHON_MAJOR_VER}/} +.endfor +.endif + .if !defined(NOPORTDATA) @${MKDIR} ${DATADIR} @cd ${PYTHON_WRKSRC}; ${TAR} -cf - Tools | \ Index: lang/python32/pkg-plist =================================================================== --- lang/python32/pkg-plist (revision 305817) +++ lang/python32/pkg-plist (working copy) @@ -5,8 +5,10 @@ %%IF_DEFAULT%%bin/pydoc3 bin/pydoc3-%%PYVER%% %%IF_DEFAULT%%bin/python +%%IF_DEFAULT_MAJOR%%bin/python%%PYMAJOR%% bin/python%%PYVER%% %%IF_DEFAULT%%bin/python-config +%%IF_DEFAULT_MAJOR%%bin/python%%PYMAJOR%%-config bin/python%%PYVER%%-config %%IF_DEFAULT%%bin/python-shared bin/python-shared%%PYVER%%