openbsd-ports/lang/python/Makefile.inc
sthen ef465900cd Fix python upgrade paths, problem reported by Mikolaj Kucharski and I had
already run into it myself. Add comments to hopefully make it simpler
and more understandable for future changes to the default version.
Zero feedback but tests well here, committing before I forget about
it because people will run into this with 6.7.
2020-02-11 11:45:31 +00:00

187 lines
5.6 KiB
Makefile

# $OpenBSD: Makefile.inc,v 1.134 2020/02/11 11:45:31 sthen Exp $
# 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.
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
COMMENT-tkinter = tk GUI module for Python
COMMENT-tools = extra tools for Python
DISTNAME = Python-${VERSION}${PATCHLEVEL}
PKGNAME-main = python-${VERSION}${PATCHLEVEL}
PKGSPEC-main = python-${VERSION_SPEC}
PKGNAME-bsddb = python-bsddb-${VERSION}${PATCHLEVEL}
PKGSPEC-bsddb = python-bsddb-${VERSION_SPEC}
PKGNAME-gdbm = python-gdbm-${VERSION}${PATCHLEVEL}
PKGSPEC-gdbm = python-gdbm-${VERSION_SPEC}
PKGNAME-idle = python-idle-${VERSION}${PATCHLEVEL}
PKGSPEC-idle = python-idle-${VERSION_SPEC}
PKGNAME-tests = python-tests-${VERSION}${PATCHLEVEL}
PKGSPEC-tests = python-tests-${VERSION_SPEC}
PKGNAME-tkinter = python-tkinter-${VERSION}${PATCHLEVEL}
PKGSPEC-tkinter = python-tkinter-${VERSION_SPEC}
PKGNAME-tools = python-tools-${VERSION}${PATCHLEVEL}
PKGSPEC-tools = python-tools-${VERSION_SPEC}
CATEGORIES = lang
MASTER_SITES = https://www.python.org/ftp/${PSUBDIR}/
PSUBDIR ?= python/${VERSION}${PATCHLEVEL}
EXTRACT_SUFX = .tgz
HOMEPAGE = https://www.python.org/
MAINTAINER = Remi Pointel <rpointel@openbsd.org>
# PSF license <http://www.python.org/${VERSION}/license.html>
# A summary of changes to Python is required to be distributed
PERMIT_PACKAGE = Yes
.if ${VERSION} == "2.7"
MULTI_PACKAGES = -main -tests -tools -gdbm -idle -tkinter -bsddb
DEBUG_PACKAGES ?= -main -gdbm -tkinter -bsddb
.else
MULTI_PACKAGES = -main -tests -gdbm -idle -tkinter
DEBUG_PACKAGES ?= -main -gdbm -tkinter
.endif
.if ${VERSION} == "3.7"
LIB_SUFX = m
.else
LIB_SUFX =
.endif
# Python 2.7 lists BSD db 4.6.x as unstable on most architectures (see
# setup.py:allow_db_version). XXX revisit if databases/db/v4 is updated to 4.7
.if ${VERSION} == "2.7"
ONLY_FOR_ARCHS-bsddb= amd64 i386
.endif
COMPILER = base-clang ports-gcc base-gcc
# All subpackages depend on the main python package.
RUN_DEPENDS = ${FULLPKGNAME-main}:lang/python/${VERSION},-main
LIB_DEPENDS =
LIB_DEPENDS-main = ${MODGCC4_CPPLIBDEP} \
archivers/bzip2 \
databases/sqlite3 \
devel/libffi \
devel/gettext,-runtime
RUN_DEPENDS-main =
WANTLIB-main = bz2 c crypto expat ffi intl m curses panel pthread \
readline sqlite3 ssl util z
.if ${VERSION} != "2.7"
LIB_DEPENDS-main += archivers/xz
WANTLIB-main += lzma
.endif
WANTLIB-tests =
WANTLIB-tools =
LIB_DEPENDS-bsddb = lang/python/${VERSION},-main
.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
WANTLIB-bsddb = lib/db4/db>=4 pthread python${VERSION}${LIB_SUFX}
LIB_DEPENDS-gdbm = databases/gdbm \
lang/python/${VERSION},-main
WANTLIB-gdbm = gdbm>=3 pthread python${VERSION}${LIB_SUFX}
RUN_DEPENDS-idle = lang/python/${VERSION},-tkinter \
${RUN_DEPENDS}
WANTLIB-idle =
MODULES += x11/tk
# Tcl/Tk version needs to be in sync with patch-setup_py's one
MODTK_VERSION = 8.5
LIB_DEPENDS-tkinter = lang/python/${VERSION},-main \
${MODTK_LIB_DEPENDS}
WANTLIB-tkinter = X11 pthread python${VERSION}${LIB_SUFX} \
${MODTK_WANTLIB}
AUTOCONF_VERSION = 2.69
CONFIGURE_STYLE = autoconf
CONFIGURE_ARGS += --enable-shared
# --srcdir is needed for systrace to work correctly
CONFIGURE_ARGS += --srcdir=${WRKSRC} \
--with-fpectl \
--with-threads \
--enable-ipv6 \
--with-system-expat \
--with-system-ffi
CONFIGURE_ENV += OPT='${CFLAGS} -fPIC' CPPFLAGS='-I${LOCALBASE}/include' \
LDFLAGS='-L${LOCALBASE}/lib/' SVNVERSION=no \
LOCALBASE=${LOCALBASE} X11BASE=${X11BASE}
MAKE_ENV += LOCALBASE=${LOCALBASE} X11BASE=${X11BASE}
MAKE_FLAGS += LD_LIBRARY_PATH=${WRKSRC} PATH="${WRKDIST}:${PORTPATH}"
MAKE_FLAGS += LDFLAGS='-L${WRKSRC} -L${LOCALBASE}/lib/'
FAKE_FLAGS += RANLIB=:
SUBST_VARS += VERSION_SPEC
# Python itself is clean, but some extensions e.g. py-cryptography
# and QtWebKit require W|X mappings.
USE_WXNEEDED = Yes
.if ${VERSION} == "2.7"
ALL_TARGET = all ./Lib/plat-openbsd6
.else
ALL_TARGET = all
.endif
post-extract:
rm -r ${WRKDIST}/Modules/expat
do-gen:
${SUBST_CMD} ${WRKSRC}/configure.ac
${MODGNU_gen}
post-configure:
@cd ${WRKSRC} && ${MAKE_PROGRAM} Makefile
ADJ_FILES = ${WRKSRC}/Tools/scripts/pydoc*
.if ${VERSION} == "2.7"
ADJ_FILES += ${WRKSRC}/Tools/scripts/2to3
.endif
post-build:
perl -pi -e \
's@#! */usr/bin/env +python@#!${PREFIX}/bin/python${VERSION}@' \
${ADJ_FILES}
post-install:
.if ${VERSION} == "2.7"
${INSTALL_SCRIPT} ${WRKSRC}/Tools/scripts/pydoc \
${PREFIX}/bin/pydoc${VERSION}
@sed -e "s,@VERSION@,${VERSION},g" -e "s,@LOCALBASE@,${LOCALBASE},g" \
${FILESDIR}/idle > ${WRKSRC}/idle
${INSTALL_SCRIPT} ${WRKSRC}/idle ${PREFIX}/bin/idle${VERSION}
cd ${PREFIX}/bin && ln -sf idle${VERSION} idle${VERSION:R}
mv ${PREFIX}/bin/pydoc ${PREFIX}/bin/pydoc2
@cd ${WRKSRC}; tar -cf - Tools | (cd ${PREFIX}/lib/python${VERSION}; \
tar -xf -)
${INSTALL_SCRIPT} ${WRKSRC}/Tools/scripts/2to3 \
${PREFIX}/bin/python${VERSION}-2to3
.endif
${INSTALL_DATA_DIR} ${PREFIX}/share/doc/python${VERSION}
${INSTALL_DATA} ${FILESDIR}/CHANGES.OpenBSD \
${PREFIX}/share/doc/python${VERSION}/CHANGES.OpenBSD
TEST_TARGET= test
TEST_FLAGS= "EXTRATESTOPTS=-w"
# Some regress tests write to $HOME
PORTHOME= ${WRKDIR}