diff options
author | riastradh <riastradh@pkgsrc.org> | 2022-04-03 10:51:19 +0000 |
---|---|---|
committer | riastradh <riastradh@pkgsrc.org> | 2022-04-03 10:51:19 +0000 |
commit | ce3ca66da2e87e33b92c870d47e1418d601252ec (patch) | |
tree | 8487bc96f5e37a764e65d28a28130bf4a360f8e1 /lang | |
parent | bfb223ca15afc1ba4dbb4c87f9848b225f7566fe (diff) | |
download | pkgsrc-ce3ca66da2e87e33b92c870d47e1418d601252ec.tar.gz |
lang/python39: Make it cross-compile.
Diffstat (limited to 'lang')
-rw-r--r-- | lang/python39/Makefile | 23 | ||||
-rw-r--r-- | lang/python39/distinfo | 6 | ||||
-rw-r--r-- | lang/python39/patches/patch-configure | 28 | ||||
-rw-r--r-- | lang/python39/patches/patch-setup.py | 41 |
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 |