2002-05-11 21:35:13 +00:00
|
|
|
# IMPORTANT! If you make any changes to the Python ports, be sure
|
|
|
|
|
# to also update files/CHANGES.OpenBSD for your change. This is a
|
|
|
|
|
# requirement of the PSF license, if it constitutes a change to
|
|
|
|
|
# Python itself.
|
2002-02-15 19:42:18 +00:00
|
|
|
|
2013-10-27 18:32:55 +00:00
|
|
|
COMMENT-main = interpreted object-oriented programming language
|
|
|
|
|
COMMENT-bsddb = Berkeley db module for Python
|
|
|
|
|
COMMENT-gdbm = GNU dbm module for Python
|
|
|
|
|
COMMENT-idle = IDE for Python
|
|
|
|
|
COMMENT-tests = Python test suite
|
2022-06-09 14:49:29 +00:00
|
|
|
COMMENT-tkinter = Python interface to the Tk graphical toolkit
|
2013-10-27 18:32:55 +00:00
|
|
|
COMMENT-tools = extra tools for Python
|
2002-02-15 19:42:18 +00:00
|
|
|
|
2022-01-23 21:32:07 +00:00
|
|
|
VERSION = ${FULL_VERSION:R}
|
|
|
|
|
|
2022-01-29 17:44:59 +00:00
|
|
|
DISTNAME = Python-${FULL_VERSION}
|
|
|
|
|
PKGNAME-main = python-${FULL_VERSION}
|
2011-09-27 21:27:36 +00:00
|
|
|
PKGSPEC-main = python-${VERSION_SPEC}
|
2022-01-29 17:44:59 +00:00
|
|
|
PKGNAME-bsddb = python-bsddb-${FULL_VERSION}
|
2011-09-27 21:27:36 +00:00
|
|
|
PKGSPEC-bsddb = python-bsddb-${VERSION_SPEC}
|
2022-01-29 17:44:59 +00:00
|
|
|
PKGNAME-gdbm = python-gdbm-${FULL_VERSION}
|
2011-09-27 21:27:36 +00:00
|
|
|
PKGSPEC-gdbm = python-gdbm-${VERSION_SPEC}
|
2022-01-29 17:44:59 +00:00
|
|
|
PKGNAME-idle = python-idle-${FULL_VERSION}
|
2011-09-27 21:27:36 +00:00
|
|
|
PKGSPEC-idle = python-idle-${VERSION_SPEC}
|
2022-01-29 17:44:59 +00:00
|
|
|
PKGNAME-tests = python-tests-${FULL_VERSION}
|
2011-09-27 21:27:36 +00:00
|
|
|
PKGSPEC-tests = python-tests-${VERSION_SPEC}
|
2022-01-29 17:44:59 +00:00
|
|
|
PKGNAME-tkinter = python-tkinter-${FULL_VERSION}
|
2011-09-27 21:27:36 +00:00
|
|
|
PKGSPEC-tkinter = python-tkinter-${VERSION_SPEC}
|
2022-01-29 17:44:59 +00:00
|
|
|
PKGNAME-tools = python-tools-${FULL_VERSION}
|
2011-09-27 21:27:36 +00:00
|
|
|
PKGSPEC-tools = python-tools-${VERSION_SPEC}
|
|
|
|
|
|
2013-10-27 18:32:55 +00:00
|
|
|
CATEGORIES = lang
|
2023-09-26 12:02:00 +00:00
|
|
|
SITES = https://www.python.org/ftp/${PSUBDIR}/
|
2022-01-29 17:44:59 +00:00
|
|
|
PSUBDIR ?= python/${FULL_VERSION}
|
2013-10-27 18:32:55 +00:00
|
|
|
EXTRACT_SUFX = .tgz
|
2002-02-15 19:42:18 +00:00
|
|
|
|
2018-09-18 16:43:12 +00:00
|
|
|
HOMEPAGE = https://www.python.org/
|
2002-02-15 19:42:18 +00:00
|
|
|
|
2021-09-01 17:41:47 +00:00
|
|
|
MAINTAINER = Kurt Mosiejczuk <kmos@openbsd.org>
|
2003-12-13 15:03:07 +00:00
|
|
|
|
2002-05-11 21:35:13 +00:00
|
|
|
# PSF license <http://www.python.org/${VERSION}/license.html>
|
|
|
|
|
# A summary of changes to Python is required to be distributed
|
2019-07-12 20:46:54 +00:00
|
|
|
PERMIT_PACKAGE = Yes
|
2002-02-15 19:42:18 +00:00
|
|
|
|
2025-01-28 15:08:56 +00:00
|
|
|
# XXX on archs with DEBUG_PACKAGES, -g in CFLAGS is carried through to
|
|
|
|
|
# CFLAGS/OPT/PY_CFLAGS/etc in _sysconfigdata*.py, which means that it is
|
|
|
|
|
# picked up when compiling Python extensions. it might be helpful to
|
|
|
|
|
# sanitize these.
|
|
|
|
|
|
2013-06-04 08:02:20 +00:00
|
|
|
.if ${VERSION} == "2.7"
|
2024-05-06 12:20:20 +00:00
|
|
|
V_SUBDIR = ${VERSION}
|
2013-10-27 18:32:55 +00:00
|
|
|
MULTI_PACKAGES = -main -tests -tools -gdbm -idle -tkinter -bsddb
|
2019-11-11 17:47:41 +00:00
|
|
|
DEBUG_PACKAGES ?= -main -gdbm -tkinter -bsddb
|
2009-01-01 21:03:27 +00:00
|
|
|
|
2011-09-28 16:59:33 +00:00
|
|
|
# Python 2.7 lists BSD db 4.6.x as unstable on most architectures (see
|
2009-01-01 21:03:27 +00:00
|
|
|
# setup.py:allow_db_version). XXX revisit if databases/db/v4 is updated to 4.7
|
2010-09-03 19:20:06 +00:00
|
|
|
ONLY_FOR_ARCHS-bsddb= amd64 i386
|
2022-03-28 15:48:24 +00:00
|
|
|
.else
|
2024-05-06 12:20:20 +00:00
|
|
|
V_SUBDIR = 3
|
2022-03-28 15:48:24 +00:00
|
|
|
MULTI_PACKAGES = -main -tests -gdbm -idle -tkinter
|
|
|
|
|
DEBUG_PACKAGES ?= -main -gdbm -tkinter
|
2008-10-18 11:55:57 +00:00
|
|
|
.endif
|
|
|
|
|
|
2018-10-24 14:27:57 +00:00
|
|
|
COMPILER = base-clang ports-gcc base-gcc
|
2022-12-06 15:55:58 +00:00
|
|
|
COMPILER_LANGS = c
|
2018-10-24 14:27:57 +00:00
|
|
|
|
2002-03-23 04:34:22 +00:00
|
|
|
# All subpackages depend on the main python package.
|
|
|
|
|
|
2024-05-06 12:20:20 +00:00
|
|
|
RUN_DEPENDS = ${FULLPKGNAME-main}:lang/python/${V_SUBDIR},-main
|
2013-10-27 18:32:55 +00:00
|
|
|
LIB_DEPENDS =
|
2006-11-24 20:48:23 +00:00
|
|
|
|
2022-12-06 15:55:58 +00:00
|
|
|
LIB_DEPENDS-main += archivers/bzip2 \
|
2016-09-23 09:16:52 +00:00
|
|
|
databases/sqlite3 \
|
2013-10-27 18:32:55 +00:00
|
|
|
devel/libffi \
|
2019-05-20 22:15:00 +00:00
|
|
|
devel/gettext,-runtime
|
2010-11-07 19:12:42 +00:00
|
|
|
RUN_DEPENDS-main =
|
2022-09-12 21:12:39 +00:00
|
|
|
WANTLIB-main += bz2 c crypto expat ffi intl m curses panel pthread \
|
2019-04-21 09:32:19 +00:00
|
|
|
readline sqlite3 ssl util z
|
2015-10-08 07:18:24 +00:00
|
|
|
.if ${VERSION} != "2.7"
|
2024-05-06 12:20:20 +00:00
|
|
|
LIB_DEPENDS-main += archivers/xz \
|
2026-05-12 13:45:10 +00:00
|
|
|
archivers/zstd
|
|
|
|
|
WANTLIB-main += lzma zstd
|
2022-11-01 16:18:22 +00:00
|
|
|
.endif
|
2013-05-18 04:13:16 +00:00
|
|
|
|
2013-05-22 12:36:03 +00:00
|
|
|
WANTLIB-tests =
|
|
|
|
|
WANTLIB-tools =
|
|
|
|
|
|
2024-05-06 12:20:20 +00:00
|
|
|
LIB_DEPENDS-bsddb = lang/python/${V_SUBDIR},-main
|
2011-10-18 06:46:24 +00:00
|
|
|
.if ${MACHINE_ARCH} == "i386" || ${MACHINE_ARCH} == "amd64"
|
|
|
|
|
# XXX recursion: if we have java, then db/v4 depends on libxml
|
|
|
|
|
LIB_DEPENDS-bsddb += databases/db/v4,no_tcl,no_java,bootstrap
|
|
|
|
|
.else
|
|
|
|
|
LIB_DEPENDS-bsddb += databases/db/v4
|
|
|
|
|
.endif
|
2020-12-29 23:59:06 +00:00
|
|
|
WANTLIB-bsddb = lib/db4/db>=4 pthread python${VERSION}
|
2011-10-18 06:46:24 +00:00
|
|
|
|
2011-05-30 21:11:44 +00:00
|
|
|
LIB_DEPENDS-gdbm = databases/gdbm \
|
2024-05-06 12:20:20 +00:00
|
|
|
lang/python/${V_SUBDIR},-main
|
2020-12-29 23:59:06 +00:00
|
|
|
WANTLIB-gdbm = gdbm>=3 pthread python${VERSION}
|
2013-05-22 12:36:03 +00:00
|
|
|
|
2024-05-06 12:20:20 +00:00
|
|
|
RUN_DEPENDS-idle = lang/python/${V_SUBDIR},-tkinter \
|
2013-05-22 12:36:03 +00:00
|
|
|
${RUN_DEPENDS}
|
|
|
|
|
WANTLIB-idle =
|
|
|
|
|
|
2010-11-15 20:55:24 +00:00
|
|
|
MODULES += x11/tk
|
2022-06-09 14:49:29 +00:00
|
|
|
|
|
|
|
|
.if ${VERSION} == "2.7"
|
2013-04-28 00:49:11 +00:00
|
|
|
MODTK_VERSION = 8.5
|
2022-06-09 14:49:29 +00:00
|
|
|
.else
|
|
|
|
|
MODTK_VERSION = 8.6
|
|
|
|
|
.endif
|
|
|
|
|
|
2024-05-06 12:20:20 +00:00
|
|
|
LIB_DEPENDS-tkinter = lang/python/${V_SUBDIR},-main \
|
2013-05-22 12:36:03 +00:00
|
|
|
${MODTK_LIB_DEPENDS}
|
2022-06-09 14:49:29 +00:00
|
|
|
WANTLIB-tkinter = pthread python${VERSION} \
|
2013-05-22 12:36:03 +00:00
|
|
|
${MODTK_WANTLIB}
|
2002-03-23 04:34:22 +00:00
|
|
|
|
2013-10-27 18:32:55 +00:00
|
|
|
CONFIGURE_STYLE = autoconf
|
2016-03-10 11:50:13 +00:00
|
|
|
CONFIGURE_ARGS += --enable-shared
|
2024-09-12 11:40:45 +00:00
|
|
|
CONFIGURE_ARGS += --enable-ipv6 \
|
|
|
|
|
--with-system-expat \
|
|
|
|
|
--with-system-ffi
|
|
|
|
|
|
|
|
|
|
.if ${VERSION} == "2.7"
|
2022-03-28 15:48:24 +00:00
|
|
|
CONFIGURE_ARGS += --with-fpectl \
|
2013-10-27 18:32:55 +00:00
|
|
|
--with-threads \
|
2022-06-09 14:49:29 +00:00
|
|
|
--with-tcltk-includes='-I${MODTCL_INCDIR} -I${MODTK_INCDIR} -I${X11BASE}/include' \
|
|
|
|
|
--with-tcltk-libs='-L${X11BASE}/lib -l${MODTCL_LIB} -l${MODTK_LIB}'
|
2024-09-12 11:40:45 +00:00
|
|
|
.else
|
2022-03-28 15:48:24 +00:00
|
|
|
CONFIGURE_ARGS += --enable-loadable-sqlite-extensions
|
2025-10-21 17:09:38 +00:00
|
|
|
. if ${PROPERTIES:Mlld} && ${MACHINE_ARCH} != "arm"
|
2022-08-07 17:00:43 +00:00
|
|
|
CONFIGURE_ARGS += --with-lto
|
2025-10-21 17:09:38 +00:00
|
|
|
. else
|
2025-11-02 19:02:09 +00:00
|
|
|
CONFIGURE_ARGS += --without-lto
|
2022-04-28 14:47:56 +00:00
|
|
|
. endif
|
2025-11-02 19:02:09 +00:00
|
|
|
# also available is "--enable-optimizations" to use profile-guided
|
|
|
|
|
# optimisation; supposedly quite a good performance improvement,
|
|
|
|
|
# but fails with our clang toolchain as of v16 (and still the case
|
|
|
|
|
# with 19). if it can be enabled again, it needs testing per-arch
|
|
|
|
|
# and only adding where working.
|
2022-03-28 15:48:24 +00:00
|
|
|
TEST_IS_INTERACTIVE = Yes
|
|
|
|
|
.endif
|
2009-01-01 21:03:27 +00:00
|
|
|
|
2014-03-09 20:23:44 +00:00
|
|
|
CONFIGURE_ENV += OPT='${CFLAGS} -fPIC' CPPFLAGS='-I${LOCALBASE}/include' \
|
2011-05-30 21:11:44 +00:00
|
|
|
LDFLAGS='-L${LOCALBASE}/lib/' SVNVERSION=no \
|
2009-01-01 21:03:27 +00:00
|
|
|
LOCALBASE=${LOCALBASE} X11BASE=${X11BASE}
|
2013-10-27 18:32:55 +00:00
|
|
|
MAKE_ENV += LOCALBASE=${LOCALBASE} X11BASE=${X11BASE}
|
|
|
|
|
MAKE_FLAGS += LD_LIBRARY_PATH=${WRKSRC} PATH="${WRKDIST}:${PORTPATH}"
|
2021-11-01 07:43:39 +00:00
|
|
|
MAKE_FLAGS += CFLAGS_NODIST='-I${LOCALBASE}/include' LDFLAGS_NODIST='-L${WRKSRC} -L${LOCALBASE}/lib/'
|
2016-08-18 12:50:42 +00:00
|
|
|
FAKE_FLAGS += RANLIB=:
|
|
|
|
|
|
2021-07-30 20:01:19 +00:00
|
|
|
PY_PLATFORM = openbsd${OSMAJOR}
|
2026-05-12 09:50:42 +00:00
|
|
|
PY_VERSION = python${VERSION}
|
|
|
|
|
PYC_MAGIC_TAG = cpython-${VERSION:S/.//}
|
|
|
|
|
SUBST_VARS += FULL_VERSION PY_PLATFORM PY_VERSION PYC_MAGIC_TAG VERSION VERSION_SPEC
|
2020-02-11 11:45:31 +00:00
|
|
|
|
2023-08-30 08:50:28 +00:00
|
|
|
# Python itself is clean, but some dlopen()'d extensions e.g. QtWebKit
|
|
|
|
|
# require W|X mappings and/or don't have the required landing pads for
|
|
|
|
|
# branch-tracking control flow integrity.
|
2016-08-18 12:50:42 +00:00
|
|
|
USE_WXNEEDED = Yes
|
2023-08-30 08:50:28 +00:00
|
|
|
USE_NOBTCFI = Yes
|
2002-02-15 19:42:18 +00:00
|
|
|
|
2019-04-21 09:32:19 +00:00
|
|
|
.if ${VERSION} == "2.7"
|
2021-07-30 20:01:19 +00:00
|
|
|
ALL_TARGET = all ./Lib/plat-${PY_PLATFORM}
|
2019-04-21 09:32:19 +00:00
|
|
|
.else
|
|
|
|
|
ALL_TARGET = all
|
2016-12-26 19:41:45 +00:00
|
|
|
.endif
|
2002-02-15 19:42:18 +00:00
|
|
|
|
2010-10-28 08:22:11 +00:00
|
|
|
post-extract:
|
|
|
|
|
rm -r ${WRKDIST}/Modules/expat
|
|
|
|
|
|
2019-04-21 09:32:19 +00:00
|
|
|
do-gen:
|
2013-04-28 00:49:11 +00:00
|
|
|
${SUBST_CMD} ${WRKSRC}/configure.ac
|
2019-04-21 09:32:19 +00:00
|
|
|
${MODGNU_gen}
|
2013-03-31 21:35:26 +00:00
|
|
|
|
2002-02-15 19:42:18 +00:00
|
|
|
post-configure:
|
|
|
|
|
@cd ${WRKSRC} && ${MAKE_PROGRAM} Makefile
|
|
|
|
|
|
2025-01-31 12:46:51 +00:00
|
|
|
ADJ_FILES = ${WRKSRC}/python-gdb.py
|
2011-09-21 14:37:28 +00:00
|
|
|
.if ${VERSION} == "2.7"
|
2025-01-31 12:46:51 +00:00
|
|
|
ADJ_FILES += ${WRKSRC}/Tools/scripts/pydoc*
|
2011-05-03 17:14:43 +00:00
|
|
|
ADJ_FILES += ${WRKSRC}/Tools/scripts/2to3
|
|
|
|
|
.endif
|
|
|
|
|
|
2011-04-12 19:28:13 +00:00
|
|
|
post-build:
|
|
|
|
|
perl -pi -e \
|
2021-03-22 17:35:26 +00:00
|
|
|
's@#! */usr/bin/(env +)?python@#!${PREFIX}/bin/python${VERSION}@' \
|
2011-05-03 17:14:43 +00:00
|
|
|
${ADJ_FILES}
|
2011-04-12 19:28:13 +00:00
|
|
|
|
2002-02-15 19:42:18 +00:00
|
|
|
post-install:
|
2013-06-04 08:02:20 +00:00
|
|
|
.if ${VERSION} == "2.7"
|
2003-12-30 17:05:30 +00:00
|
|
|
${INSTALL_SCRIPT} ${WRKSRC}/Tools/scripts/pydoc \
|
|
|
|
|
${PREFIX}/bin/pydoc${VERSION}
|
2003-12-13 15:03:07 +00:00
|
|
|
@sed -e "s,@VERSION@,${VERSION},g" -e "s,@LOCALBASE@,${LOCALBASE},g" \
|
|
|
|
|
${FILESDIR}/idle > ${WRKSRC}/idle
|
|
|
|
|
${INSTALL_SCRIPT} ${WRKSRC}/idle ${PREFIX}/bin/idle${VERSION}
|
2017-11-03 13:13:05 +00:00
|
|
|
cd ${PREFIX}/bin && ln -sf idle${VERSION} idle${VERSION:R}
|
|
|
|
|
mv ${PREFIX}/bin/pydoc ${PREFIX}/bin/pydoc2
|
2002-02-15 19:42:18 +00:00
|
|
|
@cd ${WRKSRC}; tar -cf - Tools | (cd ${PREFIX}/lib/python${VERSION}; \
|
|
|
|
|
tar -xf -)
|
2013-06-04 08:02:20 +00:00
|
|
|
${INSTALL_SCRIPT} ${WRKSRC}/Tools/scripts/2to3 \
|
|
|
|
|
${PREFIX}/bin/python${VERSION}-2to3
|
2022-03-28 15:48:24 +00:00
|
|
|
.else
|
2026-05-12 13:45:10 +00:00
|
|
|
cd ${PREFIX}/bin && ln -sf python3 python
|
2026-01-15 11:53:46 +00:00
|
|
|
rm -f ${PREFIX}/bin/pip3 # in devel/py-pip
|
2011-09-21 14:37:28 +00:00
|
|
|
.endif
|
2024-03-24 08:50:43 +00:00
|
|
|
if [ -e ${FILESDIR}/EXTERNALLY-MANAGED ]; then \
|
2024-03-23 12:35:27 +00:00
|
|
|
${INSTALL_DATA} ${FILESDIR}/EXTERNALLY-MANAGED \
|
2024-03-24 08:50:43 +00:00
|
|
|
${PREFIX}/lib/python${VERSION}/EXTERNALLY-MANAGED; fi # PEP-668
|
2002-05-11 21:35:13 +00:00
|
|
|
${INSTALL_DATA_DIR} ${PREFIX}/share/doc/python${VERSION}
|
|
|
|
|
${INSTALL_DATA} ${FILESDIR}/CHANGES.OpenBSD \
|
|
|
|
|
${PREFIX}/share/doc/python${VERSION}/CHANGES.OpenBSD
|
2021-03-22 17:35:26 +00:00
|
|
|
${INSTALL_DATA_DIR} ${PREFIX}/share/gdb/auto-load/usr/local/bin
|
|
|
|
|
${INSTALL_SCRIPT} ${WRKSRC}/python-gdb.py \
|
|
|
|
|
${PREFIX}/share/gdb/auto-load/usr/local/bin/python${VERSION}-gdb.py
|
2022-05-26 15:13:55 +00:00
|
|
|
@for i in _hashlib _ssl; do \
|
|
|
|
|
if ! [ -r ${PREFIX}/lib/python*/lib-dynload/$$i*.so ]; then echo; \
|
|
|
|
|
echo "*** check logs - $$i was not built!"; echo; exit 1; fi; done
|
2008-05-10 17:10:24 +00:00
|
|
|
|
2013-03-11 11:20:26 +00:00
|
|
|
TEST_TARGET= test
|
|
|
|
|
TEST_FLAGS= "EXTRATESTOPTS=-w"
|
2009-01-01 21:03:27 +00:00
|
|
|
# Some regress tests write to $HOME
|
|
|
|
|
PORTHOME= ${WRKDIR}
|