pkgsrc/lang/python39/Makefile
adam 4554ce77be python39: updated to 3.9.1
Python 3.9.1 final

Core and Builtins

bpo-42576: types.GenericAlias will now raise a TypeError when attempting to initialize with a keyword argument. Previously, this would cause the interpreter to crash if the interpreter was compiled with debug symbols. This does not affect interpreters compiled for release. Patch by Ken Jin.

Library

bpo-5054: CGIHTTPRequestHandler.run_cgi() HTTP_ACCEPT improperly parsed. Replace the special purpose getallmatchingheaders with generic get_all method and add relevant tests.
bpo-17735: inspect.findsource() now raises OSError instead of IndexError when co_lineno of a code object is greater than the file length. This can happen, for example, when a file is edited after it was imported.
bpo-42116: Fix handling of trailing comments by inspect.getsource().
bpo-42487: ChainMap.__iter__ no longer calls __getitem__ on underlying maps
bpo-42482: TracebackException no longer holds a reference to the exception’s traceback object. Consequently, instances of TracebackException for equivalent but non-equal exceptions now compare as equal.
bpo-42406: We fixed an issue in pickle.whichmodule in which importing multiprocessing could change the how pickle identifies which module an object belongs to, potentially breaking the unpickling of those objects.
bpo-34215: Clarify the error message for asyncio.IncompleteReadError when expected is None.
bpo-12800: Extracting a symlink from a tarball should succeed and overwrite the symlink if it already exists. The fix is to remove the existing file or symlink before extraction. Based on patch by Chris AtLee, Jeffrey Kintscher, and Senthil Kumaran.

Tests

bpo-41473: Reenable test_gdb on gdb 9.2 and newer: https://bugzilla.redhat.com/show_bug.cgi?id=1866884 bug is fixed in gdb 10.1.
bpo-42553: Fix test_asyncio.test_call_later() race condition: don’t measure asyncio performance in the call_later() unit test. The test failed randomly on the CI.

macOS

bpo-41116: If no explicit macOS SDK was specified, setup.py should check for Tcl and TK frameworks in /Library/Frameworks; the previous commit inadvertently broke that test.
bpo-42504: Fix build on macOS Big Sur when MACOSX_DEPLOYMENT_TARGET=11

IDLE

bpo-42508: Keep IDLE running on macOS. Remove obsolete workaround that prevented running files with shortcuts when using new universal2 installers built on macOS 11.
2020-12-08 14:30:40 +00:00

195 lines
6.7 KiB
Makefile

# $NetBSD: Makefile,v 1.6 2020/12/08 14:30:40 adam Exp $
.include "dist.mk"
PKGNAME= python39-${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
CONFLICTS+= python-[0-9]*
PLIST_AWK= -f ${PKGSRCDIR}/lang/python/plist-python.awk
PLIST_AWK_ENV+= PYVERS=39
PRINT_PLIST_AWK+= /^[^@]/ && /[^\/]+\.pyc$$/ {
PRINT_PLIST_AWK+= sub(/__pycache__\//, "")
PRINT_PLIST_AWK+= sub(/\.cpython-39/, "")}
PRINT_PLIST_AWK+= /^[^@]/ && /[^\/]+\.opt-1.pyc$$/ {
PRINT_PLIST_AWK+= sub(/.opt-[12].pyc$$/, ".pyo")}
USE_LANGUAGES= c c++
USE_TOOLS+= pkg-config
GNU_CONFIGURE= yes
CONFIGURE_ARGS+= --enable-shared
CONFIGURE_ARGS+= --with-openssl=${BUILDLINK_PREFIX.openssl}
CONFIGURE_ARGS+= --with-system-ffi
CONFIGURE_ARGS+= --without-ensurepip
CONFIGURE_ENV+= OPT=${CFLAGS:M*:Q}
CONFIGURE_ENV+= ac_cv_path_mkdir=${TOOLS_PATH.mkdir}
PKGCONFIG_OVERRIDE+= Misc/python.pc.in Misc/python-embed.pc.in
PTHREAD_OPTS+= require
.include "../../mk/pthread.buildlink3.mk"
.include "../../mk/bsd.prefs.mk"
# http://bugs.python.org/issue13241
.if !empty(MACHINE_PLATFORM:MDarwin-10.*)
PKGSRC_COMPILER= clang
PKG_CC= clang
PKG_CXX= clang++
.endif
# fdatasync()
LIBS.SunOS+= -lrt
PY_VER_SUFFIX= 3.9
.if ${OPSYS} == "Darwin"
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= linux
.else
PY_PLATNAME= ${LOWER_OPSYS}${OS_VERSION:C/\..*//}
.endif
PLIST_SUBST+= PY_PLATNAME=${PY_PLATNAME:Q}
# For Xcode 5 and up, we need to search the SDK path for headers, otherwise
# certain modules will not be built.
.if ${OPSYS} == "Darwin" && exists(${OSX_SDK_PATH:Q}/usr/include)
CFLAGS+= -I${OSX_SDK_PATH:Q}/usr/include
.endif
PLIST_VARS+= nis
.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
PLIST_SUBST+= PY_VER_SUFFIX=${PY_VER_SUFFIX:Q}
PRINT_PLIST_AWK+= { gsub(/${PY_PLATNAME}/, "$${PY_PLATNAME}") }
PRINT_PLIST_AWK+= { gsub(/python${PY_VER_SUFFIX}/, \
"python$${PY_VER_SUFFIX}") }
TEST_TARGET= test
INSTALL_TARGET= altinstall
REPLACE_INTERPRETER+= python
REPLACE.python.old= .*python[^ ]*
REPLACE.python.new= ${PREFIX}/bin/python${PY_VER_SUFFIX}
REPLACE_FILES.python+= Lib/base64.py
REPLACE_FILES.python+= Lib/cProfile.py
REPLACE_FILES.python+= Lib/cgi.py
REPLACE_FILES.python+= Lib/encodings/rot_13.py
REPLACE_FILES.python+= Lib/idlelib/pyshell.py
REPLACE_FILES.python+= Lib/keyword.py
REPLACE_FILES.python+= Lib/lib2to3/pgen2/token.py
REPLACE_FILES.python+= Lib/lib2to3/tests/data/different_encoding.py
REPLACE_FILES.python+= Lib/lib2to3/tests/data/false_encoding.py
REPLACE_FILES.python+= Lib/lib2to3/tests/pytree_idempotency.py
REPLACE_FILES.python+= Lib/pdb.py
REPLACE_FILES.python+= Lib/platform.py
REPLACE_FILES.python+= Lib/profile.py
REPLACE_FILES.python+= Lib/pydoc.py
REPLACE_FILES.python+= Lib/quopri.py
REPLACE_FILES.python+= Lib/smtpd.py
REPLACE_FILES.python+= Lib/smtplib.py
REPLACE_FILES.python+= Lib/symbol.py
REPLACE_FILES.python+= Lib/tabnanny.py
REPLACE_FILES.python+= Lib/tarfile.py
REPLACE_FILES.python+= Lib/test/bisect_cmd.py
REPLACE_FILES.python+= Lib/test/crashers/recursive_call.py
REPLACE_FILES.python+= Lib/test/curses_tests.py
REPLACE_FILES.python+= Lib/test/re_tests.py
REPLACE_FILES.python+= Lib/test/regrtest.py
REPLACE_FILES.python+= Lib/timeit.py
REPLACE_FILES.python+= Lib/trace.py
REPLACE_FILES.python+= Lib/turtledemo/__main__.py
REPLACE_FILES.python+= Lib/turtledemo/bytedesign.py
REPLACE_FILES.python+= Lib/turtledemo/clock.py
REPLACE_FILES.python+= Lib/turtledemo/forest.py
REPLACE_FILES.python+= Lib/turtledemo/fractalcurves.py
REPLACE_FILES.python+= Lib/turtledemo/lindenmayer.py
REPLACE_FILES.python+= Lib/turtledemo/minimal_hanoi.py
REPLACE_FILES.python+= Lib/turtledemo/paint.py
REPLACE_FILES.python+= Lib/turtledemo/peace.py
REPLACE_FILES.python+= Lib/turtledemo/penrose.py
REPLACE_FILES.python+= Lib/turtledemo/planet_and_moon.py
REPLACE_FILES.python+= Lib/turtledemo/sorting_animate.py
REPLACE_FILES.python+= Lib/turtledemo/tree.py
REPLACE_FILES.python+= Lib/turtledemo/yinyang.py
REPLACE_FILES.python+= Lib/uu.py
REPLACE_FILES.python+= Lib/webbrowser.py
# 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'\)!'${COMPILER_RPATH_FLAG}${PREFIX}/lib', '-L${PREFIX}/lib', \1!"
SUBST_NOOP_OK.findlib= yes
SUBST_CLASSES+= pkgversion
SUBST_STAGE.pkgversion= pre-configure
SUBST_FILES.pkgversion= Lib/lib2to3/pgen2/driver.py
SUBST_VARS.pkgversion= PKGVERSION_NOREV
.include "options.mk"
CHECK_INTERPRETER_SKIP= lib/python${PY_VER_SUFFIX}/venv/scripts/posix/pydoc
CHECK_INTERPRETER_SKIP+= lib/python${PY_VER_SUFFIX}/test/ziptestdata/exe_with_z64
CHECK_INTERPRETER_SKIP+= lib/python${PY_VER_SUFFIX}/test/ziptestdata/exe_with_zip
CHECK_INTERPRETER_SKIP+= lib/python${PY_VER_SUFFIX}/test/ziptestdata/header.sh
# contain CONFIGURE_ARGS and CONFIGURE_ENV
CHECK_WRKREF_SKIP+= lib/python${PY_VER_SUFFIX}/_sysconfigdata*
CHECK_WRKREF_SKIP+= lib/python${PY_VER_SUFFIX}/__pycache__/_sysconfigdata*
CHECK_WRKREF_SKIP+= lib/python${PY_VER_SUFFIX}/config-${PY_VER_SUFFIX}/Makefile
# Avoid error: Cannot generate ./Include/opcode.h, python not found !
post-configure:
touch ${WRKSRC}/Include/opcode.h
.if ${OPSYS} == "HPUX"
post-install:
${LN} -fs ${DESTDIR}${PREFIX}/lib/libpython3.9.sl \
${DESTDIR}${PREFIX}/lib/libpython3.9.sl.1.0
.endif
# needed to make devel/py-readline pick up the correct readline implementation
BUILDLINK_DEPMETHOD.readline= build
.include "../../archivers/bzip2/buildlink3.mk"
.include "../../archivers/xz/buildlink3.mk"
.include "../../devel/gettext-lib/buildlink3.mk"
.include "../../devel/libffi/buildlink3.mk"
.include "../../devel/libuuid/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/oss.buildlink3.mk"
.include "../../mk/bsd.pkg.mk"