pkgsrc/lang/python27/Makefile
adam 7fc0e0e6d4 python27: updated to 2.7.18
Python 2.7.18, the last release of Python 2

The CPython core developers are pleased to announce the immediate availability of Python 2.7.18.

Python 2.7.18 is the last Python 2.7
release and therefore the last Python 2 release. It's time for the CPython
community to say a fond but firm farewell to Python 2.

Download this unique, commemorative Python release on python.org.

Python 2.7 has been under active development since the release of Python 2.6,
more than 11 years ago. Over all those years, CPython's core developers and
contributors sedulously applied bug fixes to the 2.7 branch, no small task as
the Python 2 and 3 branches diverged. There were large changes midway through
Python 2.7's life such as PEP 466's feature backports to the ssl module and
hash randomization. Traditionally, these features would never have been added
to a branch in maintenance mode, but exceptions were made to keep Python 2 users
secure. Thank you to CPython's community for such dedication.

Python 2.7 was lucky to have the services of two generations of binary builders
and operating system experts, Martin von Löwis and Steve Dower for Windows, and
Ronald Oussoren and Ned Deily for macOS. The reason we provided binary Python
2.7 releases for macOS 10.9, an operating system obsoleted by Apple 4 years ago,
or why the "Microsoft Visual C++ Compiler for Python 2.7" exists is the
dedication of these individuals.

Python 3 would be nowhere without the dedication of the wider community. Library
maintainers followed CPython by maintaining Python 2 support for many years but
also threw their weight behind the Python 3 statement.
Linux distributors chased Python 2 out of their
archives. Users migrated hundreds of millions of lines of code, developed
porting guides, and kept Python 2 in their brain while Python 3 gained 10 years
of improvements.

Finally, thank you to GvR for creating Python 0.9, 1, 2, and 3.

Long live Python 3+!
2020-04-20 20:05:56 +00:00

224 lines
6.7 KiB
Makefile

# $NetBSD: Makefile,v 1.83 2020/04/20 20:05:56 adam Exp $
.include "dist.mk"
PKGNAME= python27-${PY_DISTVERSION}
CATEGORIES= lang python
MAINTAINER= pkgsrc-users@NetBSD.org
HOMEPAGE= https://www.python.org/
COMMENT= Interpreted, interactive, object-oriented programming language
LICENSE= python-software-foundation
DEPENDS= mozilla-rootcerts>=1.0.20150804nb1:../../security/mozilla-rootcerts
CONFLICTS+= python-[0-9]*
USE_LANGUAGES= c c++
GNU_CONFIGURE= yes
CONFIGURE_ARGS+= --enable-shared
CONFIGURE_ARGS+= --with-dbmliborder=ndbm:bdb
CONFIGURE_ARGS+= --with-system-ffi
CONFIGURE_ARGS+= --with-threads
CONFIGURE_ENV+= MKDIR_P=${MKDIR:Q}
CONFIGURE_ENV+= OPT=${CFLAGS:M*:Q}
PKGCONFIG_OVERRIDE+= Misc/python.pc.in
LDFLAGS+= -L${WRKSRC}
# $RANDOM usage there is fine
CHECK_PORTABILITY_SKIP= Tools/faqwiz/move-faqwiz.sh
PTHREAD_OPTS+= require
PTHREAD_AUTO_VARS= yes
.include "../../mk/pthread.buildlink3.mk"
.if ${PTHREAD_TYPE} == "pth"
CONFIGURE_ARGS+= --with-pth
.endif
.include "../../mk/compiler.mk"
# Clang needs -fwrapv
.if !empty(PKGSRC_COMPILER:Mclang)
CFLAGS+= -fwrapv
.endif
.include "../../mk/bsd.prefs.mk"
# fdatasync()
LIBS.SunOS+= -lrt
PY_VER_SUFFIX= 2.7
.if ${OPSYS} == "NetBSD"
# XXX work around a botched autoconf check which ignores libintl
CONFIGURE_ENV+= ac_cv_func_bind_textdomain_codeset=yes
.endif
.if ${OPSYS} == "Cygwin" || ${OPSYS} == "Darwin" || ${OPSYS} == "Interix"
PY_PLATNAME= ${LOWER_OPSYS}
USE_TOOLS+= gmake
.elif ${OPSYS} == "IRIX"
PY_PLATNAME= ${LOWER_OPSYS:C/\..*//}
.elif ${OPSYS} == "SunOS"
PY_PLATNAME= sunos${OS_VERSION:C/\..*//}
.elif ${OPSYS} == "HPUX"
PY_PLATNAME= hp-ux11
.elif ${OPSYS} == "Linux"
PY_PLATNAME= linux2
.elif ${OS_VARIANT} == "SCOOSR5"
PY_PLATNAME= sco_sv3
.else
PY_PLATNAME= ${LOWER_OPSYS}${OS_VERSION:C/\..*//}
.endif
PLIST_SUBST+= PY_PLATNAME=${PY_PLATNAME:Q}
.if !empty(LP64PLATFORMS:@.PLAT.@${MACHINE_PLATFORM:M${.PLAT.}}@) || \
(defined(ABI) && ${ABI} == "64")
IS_64BIT_PLATFORM?= yes
.else
IS_64BIT_PLATFORM?= no
.endif
PLIST_VARS+= dl dll extra-so nis qt
# the dl module isn't built for 64 bit archs
.if empty(IS_64BIT_PLATFORM:M[yY][eE][sS])
PLIST.dl= yes
.endif
# setup.py causes some modules to be built if the platform is *not* 64bit.
.if !empty(IS_64BIT_PLATFORM:M[nN][oO])
PLIST.extra-so= yes
.endif
# For Xcode 5 we need to search the SDK path for headers, otherwise certain
# modules will not be built.
.if ${OPSYS} == "Darwin"
. if exists(${OSX_SDK_PATH}/usr/include)
CFLAGS+= -I${OSX_SDK_PATH:Q}/usr/include
. endif
. if exists(${OSX_SDK_PATH}/System/Library/Frameworks/QuickTime.framework)
PLIST.qt= yes
. endif
.endif
.if ${OPSYS} != "IRIX"
PLIST.dll= yes
.endif
.for incdir in ${_OPSYS_INCLUDE_DIRS}
. if (exists(${incdir}/rpc/rpc.h) || exists(${incdir}/tirpc/rpc/rpc.h))
HAVE_RPC_H= yes
. endif
. if (exists(${incdir}/rpcsvc/yp_prot.h) || exists(${incdir}/nsl/rpcsvc/yp_prot.h))
HAVE_YP_PROT_H= yes
. endif
.endfor
.if (${HAVE_RPC_H:Uno} == yes && ${HAVE_YP_PROT_H:Uno} == yes)
PLIST.nis= yes
.endif
# configure complains about buggy getaddrinfo()
CONFIGURE_ARGS.OSF1+= --disable-ipv6
PLIST_SUBST+= PY_VER_SUFFIX=${PY_VER_SUFFIX:Q}
TEST_TARGET= test
INSTALL_TARGET= altinstall
REPLACE_INTERPRETER+= py27
REPLACE.py27.old= .*python[^ ]*
REPLACE.py27.new= ${PREFIX}/bin/python${PY_VER_SUFFIX}
REPLACE_FILES.py27= Lib/UserString.py
REPLACE_FILES.py27+= Lib/base64.py
REPLACE_FILES.py27+= Lib/cProfile.py
REPLACE_FILES.py27+= Lib/cgi.py
REPLACE_FILES.py27+= Lib/encodings/rot_13.py
REPLACE_FILES.py27+= Lib/idlelib/PyShell.py
REPLACE_FILES.py27+= Lib/keyword.py
REPLACE_FILES.py27+= Lib/lib2to3/pgen2/token.py
REPLACE_FILES.py27+= Lib/lib2to3/tests/data/different_encoding.py
REPLACE_FILES.py27+= Lib/lib2to3/tests/data/false_encoding.py
REPLACE_FILES.py27+= Lib/lib2to3/tests/pytree_idempotency.py
REPLACE_FILES.py27+= Lib/mimify.py
REPLACE_FILES.py27+= Lib/pdb.py
REPLACE_FILES.py27+= Lib/plat-mac/appletrunner.py
REPLACE_FILES.py27+= Lib/plat-mac/bundlebuilder.py
REPLACE_FILES.py27+= Lib/platform.py
REPLACE_FILES.py27+= Lib/profile.py
REPLACE_FILES.py27+= Lib/pydoc.py
REPLACE_FILES.py27+= Lib/quopri.py
REPLACE_FILES.py27+= Lib/smtpd.py
REPLACE_FILES.py27+= Lib/smtplib.py
REPLACE_FILES.py27+= Lib/symbol.py
REPLACE_FILES.py27+= Lib/tabnanny.py
REPLACE_FILES.py27+= Lib/test/bisect_cmd.py
REPLACE_FILES.py27+= Lib/test/curses_tests.py
REPLACE_FILES.py27+= Lib/test/re_tests.py
REPLACE_FILES.py27+= Lib/test/pystone.py
REPLACE_FILES.py27+= Lib/test/regrtest.py
REPLACE_FILES.py27+= Lib/timeit.py
REPLACE_FILES.py27+= Lib/trace.py
REPLACE_FILES.py27+= Lib/uu.py
REPLACE_FILES.py27+= Lib/webbrowser.py
SUBST_CLASSES+= libffi
SUBST_MESSAGE.libffi= Fixing libffi include path on Darwin.
SUBST_STAGE.libffi= pre-configure
SUBST_FILES.libffi= setup.py
SUBST_SED.libffi= -e 's,/usr/include/ffi,${BUILDLINK_PREFIX.libffi}/include,'
# XXX: It might be needed to add manually more paths like ${PREFIX}/qt5/lib
# Test: python -c 'from ctypes.util import find_library; print(find_library("ffi"));'
SUBST_CLASSES+= findlib
SUBST_MESSAGE.findlib= Fixing find_library().
SUBST_STAGE.findlib= pre-configure
SUBST_FILES.findlib= Lib/ctypes/macholib/dyld.py
SUBST_FILES.findlib+= Lib/ctypes/util.py
SUBST_FILES.findlib+= Lib/distutils/unixccompiler.py
SUBST_SED.findlib= -e 's,/usr/local,${PREFIX},'
SUBST_SED.findlib+= -e 's!\(-Wl,-t -o\)!${COMPILER_RPATH_FLAG}${PREFIX}/lib -L${PREFIX}/lib \1!'
.include "options.mk"
SUBST_CLASSES+= sslbase
SUBST_MESSAGE.sslbase= Fixing find-file for openssl with SSLBASE.
SUBST_STAGE.sslbase= pre-configure
SUBST_FILES.sslbase= setup.py
SUBST_VARS.sslbase= SSLBASE
SUBST_CLASSES+= cacert
SUBST_MESSAGE.cacert= Configuring location of default CA certificate file.
SUBST_STAGE.cacert= pre-configure
SUBST_FILES.cacert= Modules/_ssl.c
SUBST_VARS.cacert= PREFIX
post-extract:
${LN} -s ${WRKSRC}/Lib/smtpd.py ${WRKSRC}/Tools/scripts/smtpd${PY_VER_SUFFIX}.py
${MV} ${WRKSRC}/Tools/scripts/pydoc ${WRKSRC}/Tools/scripts/pydoc${PY_VER_SUFFIX}
${MV} ${WRKSRC}/Tools/scripts/2to3 ${WRKSRC}/Tools/scripts/2to3-${PY_VER_SUFFIX}
.if ${OPSYS} == "HPUX"
post-install:
${LN} -fs ${DESTDIR}${PREFIX}/lib/libpython2.7.sl \
${DESTDIR}${PREFIX}/lib/libpython2.7.sl.1.0
.endif
.if ${OS_VARIANT} == "SCOOSR5"
# SCO OpenServer 5.0.7/3.2 has no socklen_t in system headers, but has in
# GNU pth's header. It should be used in this case.
CONFIGURE_ENV+= ac_cv_type_socklen_t=yes
.endif
BUILDLINK_DEPMETHOD.readline= build
.include "../../archivers/bzip2/buildlink3.mk"
.include "../../devel/gettext-lib/buildlink3.mk"
.include "../../devel/libffi/buildlink3.mk"
.include "../../devel/readline/buildlink3.mk"
.include "../../devel/zlib/buildlink3.mk"
.include "../../security/openssl/buildlink3.mk"
.include "../../mk/bdb.buildlink3.mk"
.include "../../mk/dlopen.buildlink3.mk"
.include "../../mk/bsd.pkg.mk"