[BACK]Return to Makefile CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / pkgsrc / lang / python37

File: [cvs.NetBSD.org] / pkgsrc / lang / python37 / Attic / Makefile (download)

Revision 1.34, Sat Mar 19 18:55:44 2022 UTC (20 months, 2 weeks ago) by adam
Branch: MAIN
CVS Tags: pkgsrc-2022Q2-base, pkgsrc-2022Q2, pkgsrc-2022Q1-base, pkgsrc-2022Q1
Changes since 1.33: +6 -5 lines

python37 py37-html-docs: updated to 3.7.13

Python 3.7.13 final

Library

bpo-46985: Upgrade pip wheel bundled with ensurepip (pip 22.0.4)
bpo-46932: Update bundled libexpat to 2.4.7
bpo-46811: Make test suite support Expat >=2.4.5
bpo-46784: Fix libexpat symbols collisions with user dynamically loaded or statically linked libexpat in embedded Python.
bpo-46756: Fix a bug in urllib.request.HTTPPasswordMgr.find_user_password() and urllib.request.HTTPPasswordMgrWithPriorAuth.is_authenticated() which allowed to bypass authorization. For example, access to URI example.org/foobar was allowed if the user was authorized for URI example.org/foo.

Build

bpo-47024: Update Windows builds and macOS installer build to use OpenSSL 1.1.1n.
bpo-45405: Prevent internal configure error when running configure with recent versions of clang. Patch by David Bohman.

Windows

bpo-44549: Update bzip2 to 1.0.8 in Windows builds to mitigate CVE-2016-3189 and CVE-2019-12900
bpo-46948: Prevent CVE-2022-26488 by ensuring the Add to PATH option in the Windows installer uses the correct path when being repaired.

# $NetBSD: Makefile,v 1.34 2022/03/19 18:55:44 adam Exp $

.include "dist.mk"

PKGNAME=	python37-${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=37
PRINT_PLIST_AWK+=	/^[^@]/ && /[^\/]+\.pyc$$/ {
PRINT_PLIST_AWK+=	sub(/__pycache__\//, "")
PRINT_PLIST_AWK+=	sub(/\.cpython-37/, "")}
PRINT_PLIST_AWK+=	/^[^@]/ && /[^\/]+\.opt-1.pyc$$/ {
PRINT_PLIST_AWK+=	sub(/.opt-[12].pyc$$/, ".pyo")}

USE_LANGUAGES=		c c++
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

PTHREAD_OPTS+=	require
.include "../../mk/pthread.buildlink3.mk"

.include "../../mk/bsd.prefs.mk"

# http://bugs.python.org/issue13241
.if !empty(MACHINE_PLATFORM:MDarwin-1[12].*)
PKGSRC_COMPILER?=	clang
PKG_CC=			clang
PKG_CXX=		clang++
.endif

# Used in socketmodule.c to determine if a sethostname declaration is required
CFLAGS.SunOS+=		-DPKGSRC_OPSYS_VERSION=${OPSYS_VERSION}
# fdatasync()
LIBS.SunOS+=		-lrt
.if ${OPSYS} == "SunOS" && ${OPSYS_VERSION} < 051100
SUBST_CLASSES+=		setup
SUBST_MESSAGE.setup=	Replacing crypt with crypt_i
SUBST_STAGE.setup=	pre-configure
SUBST_FILES.setup=	setup.py
SUBST_SED.setup=	-e "s,'crypt','crypt_i',"
.endif

PY_VER_SUFFIX=		3.7

.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}

# ossaudiodev is only available on x86 for the following platforms
PLIST_VARS+=	oss
.if (${MACHINE_ARCH} == "i386" || ${MACHINE_ARCH} == "x86_64") && \
    (${PY_PLATNAME} == "linux" || ${OPSYS} == "FreeBSD")
PLIST.oss=	yes
.endif

# 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

REPLACE_SH+=		Misc/python-config.sh.in

# 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

# Avoid error: Cannot generate ./Include/opcode.h, python not found !
post-configure:
	touch ${WRKSRC}/Include/opcode.h

.if ${OPSYS} == "HPUX"
post-install: hpux-postinstall
.PHONY: hpux-postinstall
hpux-postinstall:
	${LN} -fs ${DESTDIR}${PREFIX}/lib/libpython3.7.sl \
		${DESTDIR}${PREFIX}/lib/libpython3.7.sl.1.0
.endif

INSTALLATION_DIRS+=	lib/python${PY_VER_SUFFIX}/site-packages

pre-install: setuptools-preinstall
.PHONY: setuptools-preinstall
setuptools-preinstall:
	${INSTALL_DATA} ${.CURDIR}/../../devel/py-setuptools/files/_distutils_system_mod \
		${DESTDIR}${PREFIX}/lib/python${PY_VER_SUFFIX}/site-packages/_distutils_system_mod.py

# 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"