summaryrefslogtreecommitdiff
path: root/lang
diff options
context:
space:
mode:
authorriastradh <riastradh@pkgsrc.org>2022-04-03 10:51:19 +0000
committerriastradh <riastradh@pkgsrc.org>2022-04-03 10:51:19 +0000
commitce3ca66da2e87e33b92c870d47e1418d601252ec (patch)
tree8487bc96f5e37a764e65d28a28130bf4a360f8e1 /lang
parentbfb223ca15afc1ba4dbb4c87f9848b225f7566fe (diff)
downloadpkgsrc-ce3ca66da2e87e33b92c870d47e1418d601252ec.tar.gz
lang/python39: Make it cross-compile.
Diffstat (limited to 'lang')
-rw-r--r--lang/python39/Makefile23
-rw-r--r--lang/python39/distinfo6
-rw-r--r--lang/python39/patches/patch-configure28
-rw-r--r--lang/python39/patches/patch-setup.py41
4 files changed, 71 insertions, 27 deletions
diff --git a/lang/python39/Makefile b/lang/python39/Makefile
index 12cf4d00902..92c2ddf2bf3 100644
--- a/lang/python39/Makefile
+++ b/lang/python39/Makefile
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.19 2022/03/19 18:58:24 adam Exp $
+# $NetBSD: Makefile,v 1.20 2022/04/03 10:51:19 riastradh Exp $
.include "dist.mk"
@@ -36,6 +36,27 @@ PTHREAD_OPTS+= require
.include "../../mk/bsd.prefs.mk"
+.if !empty(USE_CROSS_COMPILE:M[yY][eE][sS])
+TOOL_DEPENDS+= ${PKGNAME}:../../${PKGPATH}
+# XXX copied from ../../lang/python/pyversion.mk to avoid including it
+# XXX should use NATIVE_PREFIX but we don't have that
+CONFIGURE_ARGS+= PYTHON_FOR_BUILD=${PREFIX:Q}/bin/python3.9
+CONFIGURE_ARGS+= MACHDEP=${PY_PLATNAME}
+CONFIGURE_ARGS+= \
+ _PYTHON_HOST_PLATFORM=${LOWER_OPSYS}-${MACHINE_GNU_ARCH}
+CONFIGURE_ARGS+= ac_sys_system=${OPSYS}
+. if ${OPSYS} == "OSF1"
+CONFIGURE_ARGS+= ac_cv_buggy_getaddrinfo=true
+. else
+CONFIGURE_ARGS+= ac_cv_buggy_getaddrinfo=false
+. endif
+CONFIGURE_ARGS.NetBSD+= ac_cv_file__dev_ptmx=yes
+CONFIGURE_ARGS.NetBSD+= ac_cv_file__dev_ptc=no
+MAKE_ENV+= \
+ _PYTHON_HOST_PLATFORM=${LOWER_OPSYS}-${MACHINE_GNU_ARCH}
+MAKE_ENV+= _PYTHON_PROJECT_BASE=${WRKSRC:Q}
+.endif
+
# http://bugs.python.org/issue13241
.if !empty(MACHINE_PLATFORM:MDarwin-1[12].*)
PKGSRC_COMPILER= clang
diff --git a/lang/python39/distinfo b/lang/python39/distinfo
index bbb666847b0..ca4b464fed7 100644
--- a/lang/python39/distinfo
+++ b/lang/python39/distinfo
@@ -1,4 +1,4 @@
-$NetBSD: distinfo,v 1.26 2022/03/25 17:54:37 adam Exp $
+$NetBSD: distinfo,v 1.27 2022/04/03 10:51:19 riastradh Exp $
BLAKE2s (Python-3.9.12.tar.xz) = 501eaf0162b3030762c2a7e20ed83294a91afbf8b491fb560c2d5517ee9ec5a8
SHA512 (Python-3.9.12.tar.xz) = 081981901e14149748fd35228db0b3b1d96fef227ae7404f07b8bad0fda4b02649bf31c348c94aefdaf3327565d78f9489437c2c02f647b15d41376a27a23e97
@@ -15,6 +15,6 @@ SHA1 (patch-Modules_nismodule.c) = 1bafe9b06359586d027a77011b103877590d947d
SHA1 (patch-Modules_socketmodule.c) = 5c894f2291cdf0dd355671a1878863e0342207de
SHA1 (patch-Modules_socketmodule.h) = 8761c7238bc74e45adefb6e647dc3b39b7bdd81c
SHA1 (patch-Python_thread__pthread.h) = fb81eaa604b4ed7c1b64c3f4731d58a8aee257be
-SHA1 (patch-configure) = d44439b22e8444141e2632b9fd9b1f343b38b712
+SHA1 (patch-configure) = 944b8bb9601fd064333305778fb57997ce0ac531
SHA1 (patch-pyconfig.h.in) = 2f06af7358690b46eaff404226b898962b049a0e
-SHA1 (patch-setup.py) = 58cb7c277962a89586631f8f2c953e451537690a
+SHA1 (patch-setup.py) = 12e485a46c63bfe4da3ee6f9072bdab3694830d2
diff --git a/lang/python39/patches/patch-configure b/lang/python39/patches/patch-configure
index d28f3841fe2..694c9c16b73 100644
--- a/lang/python39/patches/patch-configure
+++ b/lang/python39/patches/patch-configure
@@ -1,14 +1,24 @@
-$NetBSD: patch-configure,v 1.6 2021/05/22 11:36:01 bouyer Exp $
+$NetBSD: patch-configure,v 1.7 2022/04/03 10:51:19 riastradh Exp $
Use gnu99 instead of c99 to avoid "alloca() undefined" problems.
Fix linking on Darwin; don't use -stack_size.
Changes for consistency across pkgsrc platforms.
Simplify _sysconfigdata to include only platform name.
detect netcan/can.h on NetBSD
+Disable barrier to cross-compilation.
---- configure.orig 2021-05-03 16:54:42.000000000 +0200
-+++ configure 2021-05-22 11:50:33.365792903 +0200
-@@ -6964,7 +6964,7 @@
+--- configure.orig 2022-03-23 21:12:08.000000000 +0000
++++ configure
+@@ -3352,7 +3352,7 @@ fi
+ $as_echo "\"$MACHDEP\"" >&6; }
+
+
+-if test "$cross_compiling" = yes; then
++if false && test "$cross_compiling" = yes; then
+ case "$host" in
+ *-*-linux*)
+ case "$host_cpu" in
+@@ -6992,7 +6992,7 @@ UNIVERSAL_ARCH_FLAGS=
# tweak BASECFLAGS based on compiler and platform
case $GCC in
yes)
@@ -17,7 +27,7 @@ detect netcan/can.h on NetBSD
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for -Wextra" >&5
$as_echo_n "checking for -Wextra... " >&6; }
-@@ -8344,7 +8344,7 @@
+@@ -8372,7 +8372,7 @@ done
# On Linux, can.h, can/bcm.h, can/j1939.h, can/raw.h require sys/socket.h
@@ -26,7 +36,7 @@ detect netcan/can.h on NetBSD
do :
as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "
-@@ -9655,7 +9655,6 @@
+@@ -9683,7 +9683,6 @@ then
# to ensure that tests don't crash
# Note: This matches the value of THREAD_STACK_SIZE in
# thread_pthread.h
@@ -34,7 +44,7 @@ detect netcan/can.h on NetBSD
if test "$enable_framework"
then
-@@ -14500,10 +14499,10 @@
+@@ -14544,10 +14543,10 @@ _ACEOF
if ac_fn_c_try_compile "$LINENO"; then :
@@ -47,7 +57,7 @@ detect netcan/can.h on NetBSD
if test "$ax_cv_c_float_words_bigendian" = unknown; then
ax_cv_c_float_words_bigendian=no
else
-@@ -15388,7 +15387,7 @@
+@@ -15448,7 +15447,7 @@ _ACEOF
fi
@@ -56,7 +66,7 @@ detect netcan/can.h on NetBSD
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking LDVERSION" >&5
$as_echo_n "checking LDVERSION... " >&6; }
-@@ -15441,11 +15440,7 @@
+@@ -15501,11 +15500,7 @@ fi
diff --git a/lang/python39/patches/patch-setup.py b/lang/python39/patches/patch-setup.py
index 58443eba3f3..dbb73bae2aa 100644
--- a/lang/python39/patches/patch-setup.py
+++ b/lang/python39/patches/patch-setup.py
@@ -1,4 +1,4 @@
-$NetBSD: patch-setup.py,v 1.7 2022/01/14 10:32:28 tnn Exp $
+$NetBSD: patch-setup.py,v 1.8 2022/04/03 10:51:19 riastradh Exp $
Disable certain modules, so they can be built as separate packages.
Do not look for ncursesw.
@@ -6,10 +6,23 @@ Assume panel_library is correct; this is a fix for ncurses' gnupanel
which will get transformed to panel in buildlink.
Don't search for modules in PREFIX. Fixes build failure when py-setuptools
are installed.
+Enable cross-build by setting sys._home and sys.path to build directory
---- setup.py.orig 2021-11-15 17:43:00.000000000 +0000
+--- setup.py.orig 2022-03-23 21:12:08.000000000 +0000
+++ setup.py
-@@ -11,6 +11,7 @@ import sysconfig
+@@ -1,5 +1,11 @@
+ # Autodetecting setup.py script for building the Python extensions
+
++import sys
++sys._home = __file__[:-len('/setup.py')]
++sys.path.append(__file__[:-len('/setup.py')] + '/Lib')
++with open('pybuilddir.txt') as pybuilddir:
++ sys.path.append(__file__[:-len('/setup.py')] + '/' + next(pybuilddir))
++
+ import argparse
+ import importlib._bootstrap
+ import importlib.machinery
+@@ -11,6 +17,7 @@ import sysconfig
from glob import glob, escape
import _osx_support
@@ -17,7 +30,7 @@ Don't search for modules in PREFIX. Fixes build failure when py-setuptools
try:
import subprocess
-@@ -30,7 +31,7 @@ except ImportError:
+@@ -30,7 +37,7 @@ except ImportError:
SUBPROCESS_BOOTSTRAP = True
@@ -26,7 +39,7 @@ Don't search for modules in PREFIX. Fixes build failure when py-setuptools
from distutils.command.build_ext import build_ext
from distutils.command.build_scripts import build_scripts
from distutils.command.install import install
-@@ -44,7 +45,7 @@ from distutils.spawn import find_executa
+@@ -44,7 +51,7 @@ from distutils.spawn import find_executa
TEST_EXTENSIONS = True
# This global variable is used to hold the list of modules to be disabled.
@@ -35,7 +48,7 @@ Don't search for modules in PREFIX. Fixes build failure when py-setuptools
def get_platform():
-@@ -224,6 +225,16 @@ def grep_headers_for(function, headers):
+@@ -227,6 +234,16 @@ def grep_headers_for(function, headers):
return True
return False
@@ -52,7 +65,7 @@ Don't search for modules in PREFIX. Fixes build failure when py-setuptools
def find_file(filename, std_dirs, paths):
"""Searches for the directory where a given file is located,
and returns a possibly-empty list of additional directories, or None
-@@ -728,15 +739,15 @@ class PyBuildExt(build_ext):
+@@ -733,15 +750,15 @@ class PyBuildExt(build_ext):
add_dir_to_list(dir_list, directory)
def configure_compiler(self):
@@ -77,7 +90,7 @@ Don't search for modules in PREFIX. Fixes build failure when py-setuptools
self.add_multiarch_paths()
self.add_ldflags_cppflags()
-@@ -784,6 +795,9 @@ class PyBuildExt(build_ext):
+@@ -789,6 +806,9 @@ class PyBuildExt(build_ext):
self.lib_dirs += ['/usr/lib/hpux64', '/usr/lib/hpux32']
if MACOS:
@@ -87,7 +100,7 @@ Don't search for modules in PREFIX. Fixes build failure when py-setuptools
# This should work on any unixy platform ;-)
# If the user has bothered specifying additional -I and -L flags
# in OPT and LDFLAGS we might as well use them here.
-@@ -1001,8 +1015,6 @@ class PyBuildExt(build_ext):
+@@ -1006,8 +1026,6 @@ class PyBuildExt(build_ext):
# use the same library for the readline and curses modules.
if 'curses' in readline_termcap_library:
curses_library = readline_termcap_library
@@ -96,7 +109,7 @@ Don't search for modules in PREFIX. Fixes build failure when py-setuptools
# Issue 36210: OSS provided ncurses does not link on AIX
# Use IBM supplied 'curses' for successful build of _curses
elif AIX and self.compiler.find_library_file(self.lib_dirs, 'curses'):
-@@ -1104,8 +1116,7 @@ class PyBuildExt(build_ext):
+@@ -1109,8 +1127,7 @@ class PyBuildExt(build_ext):
# If the curses module is enabled, check for the panel module
# _curses_panel needs some form of ncurses
skip_curses_panel = True if AIX else False
@@ -106,7 +119,7 @@ Don't search for modules in PREFIX. Fixes build failure when py-setuptools
self.add(Extension('_curses_panel', ['_curses_panel.c'],
include_dirs=curses_includes,
define_macros=curses_defines,
-@@ -1356,6 +1367,31 @@ class PyBuildExt(build_ext):
+@@ -1361,6 +1378,31 @@ class PyBuildExt(build_ext):
dbm_order = ['gdbm']
# The standard Unix dbm module:
if not CYGWIN:
@@ -138,7 +151,7 @@ Don't search for modules in PREFIX. Fixes build failure when py-setuptools
config_args = [arg.strip("'")
for arg in sysconfig.get_config_var("CONFIG_ARGS").split()]
dbm_args = [arg for arg in config_args
-@@ -1367,7 +1403,7 @@ class PyBuildExt(build_ext):
+@@ -1372,7 +1414,7 @@ class PyBuildExt(build_ext):
dbmext = None
for cand in dbm_order:
if cand == "ndbm":
@@ -147,7 +160,7 @@ Don't search for modules in PREFIX. Fixes build failure when py-setuptools
# Some systems have -lndbm, others have -lgdbm_compat,
# others don't have either
if self.compiler.find_library_file(self.lib_dirs,
-@@ -2207,10 +2243,7 @@ class PyBuildExt(build_ext):
+@@ -2209,10 +2251,7 @@ class PyBuildExt(build_ext):
sources = ['_decimal/_decimal.c']
depends = ['_decimal/docstrings.h']
else:
@@ -159,7 +172,7 @@ Don't search for modules in PREFIX. Fixes build failure when py-setuptools
libraries = ['m']
sources = [
'_decimal/_decimal.c',
-@@ -2595,7 +2628,7 @@ def main():
+@@ -2597,7 +2636,7 @@ def main():
# If you change the scripts installed here, you also need to
# check the PyBuildScripts command above, and change the links
# created by the bininstall target in Makefile.pre.in