diff options
author | fuzzard <fuzzard@kodi.tv> | 2024-08-11 17:44:51 +1000 |
---|---|---|
committer | fuzzard <fuzzard@kodi.tv> | 2024-08-15 14:57:17 +1000 |
commit | 2e6e702de0e5c630a4e7549ad85f587d43c8bd48 (patch) | |
tree | 4703cb70fcb5232d1839ae9085d8e1e393e35524 /tools | |
parent | 8ace54403bcbb9d0a16ab30eca0fdacaec1b23a6 (diff) |
[tools/depends] Bump Python 3.12.5
[tools/depends][native] Bump Markupsafe 2.1.5
[tools/depends][native] Bump Mako 1.3.5
[tools/depends][target] Bump pythonmodules-setuptools 72.1.0
[tools/depends][target] Bump Python 3.12.5
[tools/depends][target] samba-gplv3 patch distutils usage
python 3.12 removed distutils from core cpython, and it is now only available from
setuptools. Patch to import setuptools before trying to use distutils in samba
python functionality testing
[tools/depends][target] Mesa support setuptools for py3.12
Fix failure to find Mako due to error on import of distutils
Patch imports setuptools first, which allows distutils to succeed
Diffstat (limited to 'tools')
25 files changed, 629 insertions, 473 deletions
diff --git a/tools/depends/Makefile.include.in b/tools/depends/Makefile.include.in index 1903fecd85..8a42fea4bc 100644 --- a/tools/depends/Makefile.include.in +++ b/tools/depends/Makefile.include.in @@ -108,7 +108,7 @@ VERSION.TXT := $(CMAKE_SOURCE_DIR)/version.txt APP_NAME=$(shell awk '/APP_NAME/ {print tolower($$2)}' $(VERSION.TXT)) # Python related vars -PYTHON_VERSION=3.11 +PYTHON_VERSION=3.12 PYTHON_SITE_PKG=@prefix@/@deps_dir@/lib/python${PYTHON_VERSION}/site-packages ifeq ($(CPU), arm64) diff --git a/tools/depends/native/Mako/MAKO-VERSION b/tools/depends/native/Mako/MAKO-VERSION new file mode 100644 index 0000000000..d863d172c7 --- /dev/null +++ b/tools/depends/native/Mako/MAKO-VERSION @@ -0,0 +1,4 @@ +LIBNAME=Mako +VERSION=1.3.5 +ARCHIVE=$(LIBNAME)-$(VERSION).tar.gz +SHA512=9a2f96bcb650f40cc2a9daa05904e54efca1fa30022ab641c850f6e32b84a38368d4c5d328f94ac4495ed97778d6ab0b661bc93a14740ed7e5d518f03bc9a59f diff --git a/tools/depends/native/Mako/Makefile b/tools/depends/native/Mako/Makefile index c31e462db4..559c88b0f2 100644 --- a/tools/depends/native/Mako/Makefile +++ b/tools/depends/native/Mako/Makefile @@ -1,14 +1,8 @@ -include ../../Makefile.include +include ../../Makefile.include MAKO-VERSION ../../download-files.include PREFIX=$(NATIVEPREFIX) PLATFORM=$(NATIVEPLATFORM) -DEPS = ../../Makefile.include Makefile ../../download-files.include +DEPS = ../../Makefile.include Makefile MAKO-VERSION ../../download-files.include -# lib name, version -LIBNAME=Mako -VERSION=1.1.3 -ARCHIVE=$(LIBNAME)-$(VERSION).tar.gz -SHA512=a9b94fa34a61e7794b6e4549fa0bada6ff84dfb0d9edb8d5c7f9b95d12184fa4499f42303cfee720b576a9f7e986a57d91ad3aeb26c9f93154dbc08fb2975952 -include ../../download-files.include all: .installed-$(PLATFORM) diff --git a/tools/depends/native/MarkupSafe/01-all-GH399-removedistutils.patch b/tools/depends/native/MarkupSafe/01-all-GH399-removedistutils.patch new file mode 100644 index 0000000000..029157b33f --- /dev/null +++ b/tools/depends/native/MarkupSafe/01-all-GH399-removedistutils.patch @@ -0,0 +1,48 @@ +From 1f6697fcb27824fefd02b5c0890a319cf17fa3de Mon Sep 17 00:00:00 2001 +From: David Lord <davidism@gmail.com> +Date: Thu, 7 Sep 2023 10:17:17 -0700 +Subject: [PATCH] import from setuptools instead of distutils + +--- + setup.py | 14 +++++++------- + 1 files changed, 7 insertions(+), 7 deletions(-) + +diff --git a/setup.py b/setup.py +index 7208cdd7..d19a4faa 100644 +--- a/setup.py ++++ b/setup.py +@@ -2,12 +2,12 @@ + import platform + import sys + +-from distutils.errors import CCompilerError +-from distutils.errors import DistutilsExecError +-from distutils.errors import DistutilsPlatformError + from setuptools import Extension + from setuptools import setup + from setuptools.command.build_ext import build_ext ++from setuptools.errors import CCompilerError ++from setuptools.errors import ExecError ++from setuptools.errors import PlatformError + + ext_modules = [Extension("markupsafe._speedups", ["src/markupsafe/_speedups.c"])] + +@@ -21,14 +21,14 @@ class ve_build_ext(build_ext): + + def run(self): + try: +- build_ext.run(self) +- except DistutilsPlatformError as e: ++ super().run() ++ except PlatformError as e: + raise BuildFailed() from e + + def build_extension(self, ext): + try: +- build_ext.build_extension(self, ext) +- except (CCompilerError, DistutilsExecError, DistutilsPlatformError) as e: ++ super().build_extension(ext) ++ except (CCompilerError, ExecError, PlatformError) as e: + raise BuildFailed() from e + except ValueError as e: + # this can happen on Windows 64 bit, see Python issue 7511 diff --git a/tools/depends/native/MarkupSafe/MARKUPSAFE-VERSION b/tools/depends/native/MarkupSafe/MARKUPSAFE-VERSION new file mode 100644 index 0000000000..d7b442fa7e --- /dev/null +++ b/tools/depends/native/MarkupSafe/MARKUPSAFE-VERSION @@ -0,0 +1,4 @@ +LIBNAME=MarkupSafe +VERSION=2.1.5 +ARCHIVE=$(LIBNAME)-$(VERSION).tar.gz +SHA512=3ba5af43d23c266377f5d32b11e1faa7955ea8c67eb1c32886c308527f93e75e387294d0eec7794c0c20aad0c705b27f3d1f86b04202f3b63068d12d4053cc71 diff --git a/tools/depends/native/MarkupSafe/Makefile b/tools/depends/native/MarkupSafe/Makefile index fa4372735e..358e5ccb39 100644 --- a/tools/depends/native/MarkupSafe/Makefile +++ b/tools/depends/native/MarkupSafe/Makefile @@ -1,14 +1,9 @@ -include ../../Makefile.include +include ../../Makefile.include MARKUPSAFE-VERSION ../../download-files.include PREFIX=$(NATIVEPREFIX) PLATFORM=$(NATIVEPLATFORM) -DEPS = ../../Makefile.include Makefile ../../download-files.include +DEPS = ../../Makefile.include Makefile MARKUPSAFE-VERSION ../../download-files.include \ + 01-all-GH399-removedistutils.patch -# lib name, version -LIBNAME=MarkupSafe -VERSION=1.1.1 -ARCHIVE=$(LIBNAME)-$(VERSION).tar.gz -SHA512=f3014e6131a3ab866914c5635b5397ef71906bffb1b6f8c5f2ed2acf167429ff7914236d38943e872683a57a9be9669f4c5aace6274f3307ab21ef25373db0b6 -include ../../download-files.include all: .installed-$(PLATFORM) @@ -17,6 +12,7 @@ $(PLATFORM): $(DEPS) | $(TARBALLS_LOCATION)/$(ARCHIVE).$(HASH_TYPE) cd $(PLATFORM); $(ARCHIVE_TOOL) $(ARCHIVE_TOOL_FLAGS) $(TARBALLS_LOCATION)/$(ARCHIVE) .installed-$(PLATFORM): $(PLATFORM) + cd $(PLATFORM); patch -p1 -i ../01-all-GH399-removedistutils.patch cd $(PLATFORM); $(PREFIX)/bin/python3 setup.py install --prefix=$(PREFIX) touch $@ diff --git a/tools/depends/native/python3/01-distutil-flags.patch b/tools/depends/native/python3/01-distutil-flags.patch deleted file mode 100644 index 28cd2f98ba..0000000000 --- a/tools/depends/native/python3/01-distutil-flags.patch +++ /dev/null @@ -1,12 +0,0 @@ ---- a/Lib/distutils/sysconfig.py -+++ b/Lib/distutils/sysconfig.py -@@ -214,6 +214,9 @@ - (cc, cxx, cflags, ccshared, ldshared, shlib_suffix, ar, ar_flags) = \ - get_config_vars('CC', 'CXX', 'CFLAGS', - 'CCSHARED', 'LDSHARED', 'SHLIB_SUFFIX', 'AR', 'ARFLAGS') -+ # get_config_vars returns host vars. clear cflags, ldshared for crosscompile use -+ cflags = "" -+ ldshared = cc + " -shared" - - if 'CC' in os.environ: - newcc = os.environ['CC'] diff --git a/tools/depends/native/python3/Makefile b/tools/depends/native/python3/Makefile index 74ebe061a0..bb93cc87e7 100644 --- a/tools/depends/native/python3/Makefile +++ b/tools/depends/native/python3/Makefile @@ -1,7 +1,6 @@ include ../../Makefile.include PYTHON3-VERSION ../../download-files.include PLATFORM=$(NATIVEPLATFORM) -DEPS = ../../Makefile.include Makefile PYTHON3-VERSION ../../download-files.include \ - 01-distutil-flags.patch +DEPS = ../../Makefile.include Makefile PYTHON3-VERSION ../../download-files.include CONFIGURE=./configure --prefix=$(NATIVEPREFIX) \ --disable-shared \ @@ -32,11 +31,7 @@ $(LIBDYLIB): $(PLATFORM) cd $(PLATFORM); $(MAKE) .installed-$(PLATFORM): $(LIBDYLIB) - cd $(PLATFORM); patch -p1 -i ../01-distutil-flags.patch cd $(PLATFORM); $(MAKE) install -# Sed patch setuptools that is installed via ensurepip as we cant patch the source - cd $(NATIVE_SITEPACKAGES); sed -ie "s|cflags = cflags + ' ' + os.environ\['CFLAGS'\]|cflags = os.environ\['CFLAGS'\]|" setuptools/_distutils/sysconfig.py - touch $(LIBDYLIB) touch $@ clean: diff --git a/tools/depends/native/python3/PYTHON3-VERSION b/tools/depends/native/python3/PYTHON3-VERSION index c5e1760fb2..9c97bd4018 100644 --- a/tools/depends/native/python3/PYTHON3-VERSION +++ b/tools/depends/native/python3/PYTHON3-VERSION @@ -1,4 +1,4 @@ LIBNAME=Python -VERSION=3.11.7 +VERSION=3.12.5 ARCHIVE=$(LIBNAME)-$(VERSION).tar.xz -SHA512=11e06f2ffe1f66888cb5b4e9f607de815294d6863a77eda6ec6d7c724ef158df9f51881f4a956d4a6fa973c2fb6fd031d495e3496e9b0bb53793fb1cc8434c63 +SHA512=7a1c30d798434fe24697bc253f6010d75145e7650f66803328425c8525331b9fa6b63d12a652687582db205f8d4c8279c8f73c338168592481517b063351c921 diff --git a/tools/depends/target/mesa/01-all-py312-setuptools.patch b/tools/depends/target/mesa/01-all-py312-setuptools.patch new file mode 100644 index 0000000000..fda2061207 --- /dev/null +++ b/tools/depends/target/mesa/01-all-py312-setuptools.patch @@ -0,0 +1,10 @@ +--- a/meson.build ++++ b/meson.build +@@ -1022,6 +1022,7 @@ + has_mako = run_command( + prog_python, '-c', + ''' ++import setuptools + from distutils.version import StrictVersion + import mako + assert StrictVersion(mako.__version__) > StrictVersion("0.8.0") diff --git a/tools/depends/target/mesa/Makefile b/tools/depends/target/mesa/Makefile index f24b673ccf..9312d35512 100644 --- a/tools/depends/target/mesa/Makefile +++ b/tools/depends/target/mesa/Makefile @@ -1,5 +1,6 @@ include ../../Makefile.include -DEPS =../../Makefile.include Makefile ../../download-files.include +DEPS =../../Makefile.include Makefile ../../download-files.include \ + 01-all-py312-setuptools.patch LIBNAME=mesa VERSION=23.0.1 @@ -76,6 +77,7 @@ $(PLATFORM): $(DEPS) | $(TARBALLS_LOCATION)/$(ARCHIVE).$(HASH_TYPE) rm -rf $(PLATFORM)/*; mkdir -p $(PLATFORM) cd $(PLATFORM); $(ARCHIVE_TOOL) $(ARCHIVE_TOOL_FLAGS) $(TARBALLS_LOCATION)/$(ARCHIVE) cd $(PLATFORM); rm -rf build; mkdir -p build + cd $(PLATFORM); patch -p1 -i ../01-all-py312-setuptools.patch cd $(PLATFORM); $(CONFIGURE) . build $(LIBDYLIB): $(PLATFORM) diff --git a/tools/depends/target/python3/01-py312-cpython118618-1.patch b/tools/depends/target/python3/01-py312-cpython118618-1.patch new file mode 100644 index 0000000000..5055a39779 --- /dev/null +++ b/tools/depends/target/python3/01-py312-cpython118618-1.patch @@ -0,0 +1,369 @@ +From 21f8fbaa7c01a8ec2fa2420f44f5cb05a54f55b6 Mon Sep 17 00:00:00 2001 +From: Neil Schemenauer <nas@arctrix.com> +Date: Wed, 27 Mar 2024 09:54:02 -0700 +Subject: [PATCH] Use pointer for interp->obmalloc state. + +For interpreters that share state with the main interpreter, this points +to the same static memory structure. For interpreters with their own +obmalloc state, it is heap allocated. Add free_obmalloc_arenas() which +will free the obmalloc arenas and radix tree structures for interpreters +with their own obmalloc state. +--- + Include/internal/pycore_interp.h | 12 +- + Include/internal/pycore_obmalloc.h | 2 + + Include/internal/pycore_obmalloc_init.h | 7 - + Include/internal/pycore_runtime_init.h | 1 - + ...-12-22-13-21-39.gh-issue-113055.47xBMF.rst | 5 + + Objects/obmalloc.c | 121 +++++++++++++++++- + Python/pylifecycle.c | 16 +++ + Python/pystate.c | 13 +- + Tools/c-analyzer/cpython/ignored.tsv | 3 +- + 9 files changed, 157 insertions(+), 23 deletions(-) + create mode 100644 Misc/NEWS.d/next/Core and Builtins/2023-12-22-13-21-39.gh-issue-113055.47xBMF.rst + +diff --git a/Include/internal/pycore_interp.h b/Include/internal/pycore_interp.h +index 37cc88ed081b72..a0ef5990259e29 100644 +--- a/Include/internal/pycore_interp.h ++++ b/Include/internal/pycore_interp.h +@@ -178,7 +178,17 @@ struct _is { + struct _warnings_runtime_state warnings; + struct atexit_state atexit; + +- struct _obmalloc_state obmalloc; ++ // Per-interpreter state for the obmalloc allocator. For the main ++ // interpreter and for all interpreters that don't have their ++ // own obmalloc state, this points to the static structure in ++ // obmalloc.c obmalloc_state_main. For other interpreters, it is ++ // heap allocated by _PyMem_init_obmalloc() and freed when the ++ // interpreter structure is freed. In the case of a heap allocated ++ // obmalloc state, it is not safe to hold on to or use memory after ++ // the interpreter is freed. The obmalloc state corresponding to ++ // that allocated memory is gone. See free_obmalloc_arenas() for ++ // more comments. ++ struct _obmalloc_state *obmalloc; + + PyObject *audit_hooks; + PyType_WatchCallback type_watchers[TYPE_MAX_WATCHERS]; +diff --git a/Include/internal/pycore_obmalloc.h b/Include/internal/pycore_obmalloc.h +index b1c00654ac1c5d..38427e194956ac 100644 +--- a/Include/internal/pycore_obmalloc.h ++++ b/Include/internal/pycore_obmalloc.h +@@ -686,6 +686,8 @@ extern Py_ssize_t _Py_GetGlobalAllocatedBlocks(void); + _Py_GetGlobalAllocatedBlocks() + extern Py_ssize_t _PyInterpreterState_GetAllocatedBlocks(PyInterpreterState *); + extern void _PyInterpreterState_FinalizeAllocatedBlocks(PyInterpreterState *); ++extern int _PyMem_init_obmalloc(PyInterpreterState *interp); ++extern bool _PyMem_obmalloc_state_on_heap(PyInterpreterState *interp); + + + #ifdef WITH_PYMALLOC +diff --git a/Include/internal/pycore_obmalloc_init.h b/Include/internal/pycore_obmalloc_init.h +index 8ee72ff2d4126f..e6811b7aeca73c 100644 +--- a/Include/internal/pycore_obmalloc_init.h ++++ b/Include/internal/pycore_obmalloc_init.h +@@ -59,13 +59,6 @@ extern "C" { + .dump_debug_stats = -1, \ + } + +-#define _obmalloc_state_INIT(obmalloc) \ +- { \ +- .pools = { \ +- .used = _obmalloc_pools_INIT(obmalloc.pools), \ +- }, \ +- } +- + + #ifdef __cplusplus + } +diff --git a/Include/internal/pycore_runtime_init.h b/Include/internal/pycore_runtime_init.h +index e5f9e17efff24b..d3a64b3d4a7895 100644 +--- a/Include/internal/pycore_runtime_init.h ++++ b/Include/internal/pycore_runtime_init.h +@@ -88,7 +88,6 @@ extern PyTypeObject _PyExc_MemoryError; + { \ + .id_refcount = -1, \ + .imports = IMPORTS_INIT, \ +- .obmalloc = _obmalloc_state_INIT(INTERP.obmalloc), \ + .ceval = { \ + .recursion_limit = Py_DEFAULT_RECURSION_LIMIT, \ + }, \ +diff --git a/Misc/NEWS.d/next/Core and Builtins/2023-12-22-13-21-39.gh-issue-113055.47xBMF.rst b/Misc/NEWS.d/next/Core and Builtins/2023-12-22-13-21-39.gh-issue-113055.47xBMF.rst +new file mode 100644 +index 00000000000000..90f49272218c96 +--- /dev/null ++++ b/Misc/NEWS.d/next/Core and Builtins/2023-12-22-13-21-39.gh-issue-113055.47xBMF.rst +@@ -0,0 +1,5 @@ ++Make interp->obmalloc a pointer. For interpreters that share state with the ++main interpreter, this points to the same static memory structure. For ++interpreters with their own obmalloc state, it is heap allocated. Add ++free_obmalloc_arenas() which will free the obmalloc arenas and radix tree ++structures for interpreters with their own obmalloc state. +diff --git a/Objects/obmalloc.c b/Objects/obmalloc.c +index 9620a8fbb44cac..acbefef614195c 100644 +--- a/Objects/obmalloc.c ++++ b/Objects/obmalloc.c +@@ -3,6 +3,7 @@ + #include "Python.h" + #include "pycore_code.h" // stats + #include "pycore_pystate.h" // _PyInterpreterState_GET ++#include "pycore_obmalloc_init.h" + + #include "pycore_obmalloc.h" + #include "pycore_pymem.h" +@@ -852,6 +853,13 @@ static int running_on_valgrind = -1; + + typedef struct _obmalloc_state OMState; + ++/* obmalloc state for main interpreter and shared by all interpreters without ++ * their own obmalloc state. By not explicitly initalizing this structure, it ++ * will be allocated in the BSS which is a small performance win. The radix ++ * tree arrays are fairly large but are sparsely used. */ ++static struct _obmalloc_state obmalloc_state_main; ++static bool obmalloc_state_initialized; ++ + static inline int + has_own_state(PyInterpreterState *interp) + { +@@ -864,10 +872,8 @@ static inline OMState * + get_state(void) + { + PyInterpreterState *interp = _PyInterpreterState_GET(); +- if (!has_own_state(interp)) { +- interp = _PyInterpreterState_Main(); +- } +- return &interp->obmalloc; ++ assert(interp->obmalloc != NULL); // otherwise not initialized or freed ++ return interp->obmalloc; + } + + // These macros all rely on a local "state" variable. +@@ -893,7 +899,11 @@ _PyInterpreterState_GetAllocatedBlocks(PyInterpreterState *interp) + "the interpreter doesn't have its own allocator"); + } + #endif +- OMState *state = &interp->obmalloc; ++ OMState *state = interp->obmalloc; ++ ++ if (state == NULL) { ++ return 0; ++ } + + Py_ssize_t n = raw_allocated_blocks; + /* add up allocated blocks for used pools */ +@@ -915,13 +925,25 @@ _PyInterpreterState_GetAllocatedBlocks(PyInterpreterState *interp) + return n; + } + ++static void free_obmalloc_arenas(PyInterpreterState *interp); ++ + void + _PyInterpreterState_FinalizeAllocatedBlocks(PyInterpreterState *interp) + { +- if (has_own_state(interp)) { ++ if (has_own_state(interp) && interp->obmalloc != NULL) { + Py_ssize_t leaked = _PyInterpreterState_GetAllocatedBlocks(interp); + assert(has_own_state(interp) || leaked == 0); + interp->runtime->obmalloc.interpreter_leaks += leaked; ++ if (_PyMem_obmalloc_state_on_heap(interp) && leaked == 0) { ++ // free the obmalloc arenas and radix tree nodes. If leaked > 0 ++ // then some of the memory allocated by obmalloc has not been ++ // freed. It might be safe to free the arenas in that case but ++ // it's possible that extension modules are still using that ++ // memory. So, it is safer to not free and to leak. Perhaps there ++ // should be warning when this happens. It should be possible to ++ // use a tool like "-fsanitize=address" to track down these leaks. ++ free_obmalloc_arenas(interp); ++ } + } + } + +@@ -2511,9 +2533,96 @@ _PyDebugAllocatorStats(FILE *out, + (void)printone(out, buf2, num_blocks * sizeof_block); + } + ++// Return true if the obmalloc state structure is heap allocated, ++// by PyMem_RawCalloc(). For the main interpreter, this structure ++// allocated in the BSS. Allocating that way gives some memory savings ++// and a small performance win (at least on a demand paged OS). On ++// 64-bit platforms, the obmalloc structure is 256 kB. Most of that ++// memory is for the arena_map_top array. Since normally only one entry ++// of that array is used, only one page of resident memory is actually ++// used, rather than the full 256 kB. ++bool _PyMem_obmalloc_state_on_heap(PyInterpreterState *interp) ++{ ++#if WITH_PYMALLOC ++ return interp->obmalloc && interp->obmalloc != &obmalloc_state_main; ++#else ++ return false; ++#endif ++} ++ ++#ifdef WITH_PYMALLOC ++static void ++init_obmalloc_pools(PyInterpreterState *interp) ++{ ++ // initialize the obmalloc->pools structure. This must be done ++ // before the obmalloc alloc/free functions can be called. ++ poolp temp[OBMALLOC_USED_POOLS_SIZE] = ++ _obmalloc_pools_INIT(interp->obmalloc->pools); ++ memcpy(&interp->obmalloc->pools.used, temp, sizeof(temp)); ++} ++#endif /* WITH_PYMALLOC */ ++ ++int _PyMem_init_obmalloc(PyInterpreterState *interp) ++{ ++#ifdef WITH_PYMALLOC ++ /* Initialize obmalloc, but only for subinterpreters, ++ since the main interpreter is initialized statically. */ ++ if (_Py_IsMainInterpreter(interp) ++ || _PyInterpreterState_HasFeature(interp, ++ Py_RTFLAGS_USE_MAIN_OBMALLOC)) { ++ interp->obmalloc = &obmalloc_state_main; ++ if (!obmalloc_state_initialized) { ++ init_obmalloc_pools(interp); ++ obmalloc_state_initialized = true; ++ } ++ } else { ++ interp->obmalloc = PyMem_RawCalloc(1, sizeof(struct _obmalloc_state)); ++ if (interp->obmalloc == NULL) { ++ return -1; ++ } ++ init_obmalloc_pools(interp); ++ } ++#endif /* WITH_PYMALLOC */ ++ return 0; // success ++} ++ + + #ifdef WITH_PYMALLOC + ++static void ++free_obmalloc_arenas(PyInterpreterState *interp) ++{ ++ OMState *state = interp->obmalloc; ++ for (uint i = 0; i < maxarenas; ++i) { ++ // free each obmalloc memory arena ++ struct arena_object *ao = &allarenas[i]; ++ _PyObject_Arena.free(_PyObject_Arena.ctx, ++ (void *)ao->address, ARENA_SIZE); ++ } ++ // free the array containing pointers to all arenas ++ PyMem_RawFree(allarenas); ++#if WITH_PYMALLOC_RADIX_TREE ++#ifdef USE_INTERIOR_NODES ++ // Free the middle and bottom nodes of the radix tree. These are allocated ++ // by arena_map_mark_used() but not freed when arenas are freed. ++ for (int i1 = 0; i1 < MAP_TOP_LENGTH; i1++) { ++ arena_map_mid_t *mid = arena_map_root.ptrs[i1]; ++ if (mid == NULL) { ++ continue; ++ } ++ for (int i2 = 0; i2 < MAP_MID_LENGTH; i2++) { ++ arena_map_bot_t *bot = arena_map_root.ptrs[i1]->ptrs[i2]; ++ if (bot == NULL) { ++ continue; ++ } ++ PyMem_RawFree(bot); ++ } ++ PyMem_RawFree(mid); ++ } ++#endif ++#endif ++} ++ + #ifdef Py_DEBUG + /* Is target in the list? The list is traversed via the nextpool pointers. + * The list may be NULL-terminated, or circular. Return 1 if target is in +diff --git a/Python/pylifecycle.c b/Python/pylifecycle.c +index a0130fde15d574..fb833ba61cbd9b 100644 +--- a/Python/pylifecycle.c ++++ b/Python/pylifecycle.c +@@ -28,6 +28,7 @@ + #include "pycore_typeobject.h" // _PyTypes_InitTypes() + #include "pycore_typevarobject.h" // _Py_clear_generic_types() + #include "pycore_unicodeobject.h" // _PyUnicode_InitTypes() ++#include "pycore_obmalloc.h" // _PyMem_init_obmalloc() + #include "opcode.h" + + #include <locale.h> // setlocale() +@@ -636,6 +637,13 @@ pycore_create_interpreter(_PyRuntimeState *runtime, + return status; + } + ++ // initialize the interp->obmalloc state. This must be done after ++ // the settings are loaded (so that feature_flags are set) but before ++ // any calls are made to obmalloc functions. ++ if (_PyMem_init_obmalloc(interp) < 0) { ++ return _PyStatus_NO_MEMORY(); ++ } ++ + /* Auto-thread-state API */ + status = _PyGILState_Init(interp); + if (_PyStatus_EXCEPTION(status)) { +@@ -2051,6 +2059,14 @@ new_interpreter(PyThreadState **tstate_p, const PyInterpreterConfig *config) + return _PyStatus_OK(); + } + ++ // initialize the interp->obmalloc state. This must be done after ++ // the settings are loaded (so that feature_flags are set) but before ++ // any calls are made to obmalloc functions. ++ if (_PyMem_init_obmalloc(interp) < 0) { ++ status = _PyStatus_NO_MEMORY(); ++ goto error; ++ } ++ + PyThreadState *tstate = _PyThreadState_New(interp); + if (tstate == NULL) { + PyInterpreterState_Delete(interp); +diff --git a/Python/pystate.c b/Python/pystate.c +index 1337516aa59cbc..a25c3dcf9d09ea 100644 +--- a/Python/pystate.c ++++ b/Python/pystate.c +@@ -14,6 +14,7 @@ + #include "pycore_pystate.h" + #include "pycore_runtime_init.h" // _PyRuntimeState_INIT + #include "pycore_sysmodule.h" ++#include "pycore_obmalloc.h" // _PyMem_obmalloc_state_on_heap() + + /* -------------------------------------------------------------------------- + CAUTION +@@ -636,6 +637,11 @@ free_interpreter(PyInterpreterState *interp) + // The main interpreter is statically allocated so + // should not be freed. + if (interp != &_PyRuntime._main_interpreter) { ++ if (_PyMem_obmalloc_state_on_heap(interp)) { ++ // interpreter has its own obmalloc state, free it ++ PyMem_RawFree(interp->obmalloc); ++ interp->obmalloc = NULL; ++ } + PyMem_RawFree(interp); + } + } +@@ -679,13 +685,6 @@ init_interpreter(PyInterpreterState *interp, + assert(next != NULL || (interp == runtime->interpreters.main)); + interp->next = next; + +- /* Initialize obmalloc, but only for subinterpreters, +- since the main interpreter is initialized statically. */ +- if (interp != &runtime->_main_interpreter) { +- poolp temp[OBMALLOC_USED_POOLS_SIZE] = \ +- _obmalloc_pools_INIT(interp->obmalloc.pools); +- memcpy(&interp->obmalloc.pools.used, temp, sizeof(temp)); +- } + _PyObject_InitState(interp); + + _PyEval_InitState(interp, pending_lock); +diff --git a/Tools/c-analyzer/cpython/ignored.tsv b/Tools/c-analyzer/cpython/ignored.tsv +index 9f36c47ca7ea03..7bcca27ecc32f6 100644 +--- a/Tools/c-analyzer/cpython/ignored.tsv ++++ b/Tools/c-analyzer/cpython/ignored.tsv +@@ -318,7 +318,8 @@ Objects/obmalloc.c - _PyMem_Debug - + Objects/obmalloc.c - _PyMem_Raw - + Objects/obmalloc.c - _PyObject - + Objects/obmalloc.c - last_final_leaks - +-Objects/obmalloc.c - usedpools - ++Objects/obmalloc.c - obmalloc_state_main - ++Objects/obmalloc.c - obmalloc_state_initialized - + Objects/typeobject.c - name_op - + Objects/typeobject.c - slotdefs - + Objects/unicodeobject.c - stripfuncnames - diff --git a/tools/depends/target/python3/01-py312-cpython118618-2.patch b/tools/depends/target/python3/01-py312-cpython118618-2.patch new file mode 100644 index 0000000000..bbd7a5e0d1 --- /dev/null +++ b/tools/depends/target/python3/01-py312-cpython118618-2.patch @@ -0,0 +1,71 @@ +From a867732a619e1cc02369cf0185b53a484d049369 Mon Sep 17 00:00:00 2001 +From: Neil Schemenauer <nas@arctrix.com> +Date: Mon, 6 May 2024 10:02:17 -0700 +Subject: [PATCH] Fix merge, move _PyMem_init_obmalloc() calls. + +--- + Python/pylifecycle.c | 30 +++++++++++++++--------------- + 1 file changed, 15 insertions(+), 15 deletions(-) + +diff --git a/Python/pylifecycle.c b/Python/pylifecycle.c +index fb833ba61cbd9b..31a24d4a65aebf 100644 +--- a/Python/pylifecycle.c ++++ b/Python/pylifecycle.c +@@ -637,13 +637,6 @@ pycore_create_interpreter(_PyRuntimeState *runtime, + return status; + } + +- // initialize the interp->obmalloc state. This must be done after +- // the settings are loaded (so that feature_flags are set) but before +- // any calls are made to obmalloc functions. +- if (_PyMem_init_obmalloc(interp) < 0) { +- return _PyStatus_NO_MEMORY(); +- } +- + /* Auto-thread-state API */ + status = _PyGILState_Init(interp); + if (_PyStatus_EXCEPTION(status)) { +@@ -658,6 +651,13 @@ pycore_create_interpreter(_PyRuntimeState *runtime, + return status; + } + ++ // initialize the interp->obmalloc state. This must be done after ++ // the settings are loaded (so that feature_flags are set) but before ++ // any calls are made to obmalloc functions. ++ if (_PyMem_init_obmalloc(interp) < 0) { ++ return _PyStatus_NO_MEMORY(); ++ } ++ + PyThreadState *tstate = _PyThreadState_New(interp); + if (tstate == NULL) { + return _PyStatus_ERR("can't make first thread"); +@@ -2059,14 +2059,6 @@ new_interpreter(PyThreadState **tstate_p, const PyInterpreterConfig *config) + return _PyStatus_OK(); + } + +- // initialize the interp->obmalloc state. This must be done after +- // the settings are loaded (so that feature_flags are set) but before +- // any calls are made to obmalloc functions. +- if (_PyMem_init_obmalloc(interp) < 0) { +- status = _PyStatus_NO_MEMORY(); +- goto error; +- } +- + PyThreadState *tstate = _PyThreadState_New(interp); + if (tstate == NULL) { + PyInterpreterState_Delete(interp); +@@ -2110,6 +2102,14 @@ new_interpreter(PyThreadState **tstate_p, const PyInterpreterConfig *config) + goto error; + } + ++ // initialize the interp->obmalloc state. This must be done after ++ // the settings are loaded (so that feature_flags are set) but before ++ // any calls are made to obmalloc functions. ++ if (_PyMem_init_obmalloc(interp) < 0) { ++ status = _PyStatus_NO_MEMORY(); ++ goto error; ++ } ++ + status = init_interp_create_gil(tstate, config->gil); + if (_PyStatus_EXCEPTION(status)) { + goto error; diff --git a/tools/depends/target/python3/02-android-cpython114875.patch b/tools/depends/target/python3/02-android-cpython114875.patch new file mode 100644 index 0000000000..edf2335a8f --- /dev/null +++ b/tools/depends/target/python3/02-android-cpython114875.patch @@ -0,0 +1,36 @@ +--- a/configure.ac ++++ b/configure.ac +@@ -4906,7 +4906,7 @@ + copy_file_range ctermid dup dup3 execv explicit_bzero explicit_memset \ + faccessat fchmod fchmodat fchown fchownat fdopendir fdwalk fexecve \ + fork fork1 fpathconf fstatat ftime ftruncate futimens futimes futimesat \ +- gai_strerror getegid getentropy geteuid getgid getgrgid getgrgid_r \ ++ gai_strerror getegid getentropy geteuid getgid getgrent getgrgid getgrgid_r \ + getgrnam_r getgrouplist getgroups gethostname getitimer getloadavg getlogin \ + getpeername getpgid getpid getppid getpriority _getpty \ + getpwent getpwnam_r getpwuid getpwuid_r getresgid getresuid getrusage getsid getspent \ +@@ -7445,7 +7445,9 @@ + -a "$ac_cv_header_netinet_in_h" = "yes"])) + + dnl platform specific extensions +-PY_STDLIB_MOD([grp], [], [test "$ac_cv_func_getgrgid" = yes -o "$ac_cv_func_getgrgid_r" = yes]) ++PY_STDLIB_MOD([grp], [], ++ [test "$ac_cv_func_getgrent" = "yes" && ++ { test "$ac_cv_func_getgrgid" = "yes" || test "$ac_cv_func_getgrgid_r" = "yes"; }]) + PY_STDLIB_MOD([ossaudiodev], + [], [test "$ac_cv_header_linux_soundcard_h" = yes -o "$ac_cv_header_sys_soundcard_h" = yes], + [], [$OSSAUDIODEV_LIBS]) +diff --git a/pyconfig.h.in b/pyconfig.h.in +index d8a9f68951afbd..36a46b1d14909f 100644 +--- a/pyconfig.h.in ++++ b/pyconfig.h.in +@@ -477,6 +477,9 @@ + /* Define to 1 if you have the `getgid' function. */ + #undef HAVE_GETGID + ++/* Define to 1 if you have the `getgrent' function. */ ++#undef HAVE_GETGRENT ++ + /* Define to 1 if you have the `getgrgid' function. */ + #undef HAVE_GETGRGID + diff --git a/tools/depends/target/python3/10-linux-modules.patch b/tools/depends/target/python3/10-linux-modules.patch deleted file mode 100644 index 97753d9aa7..0000000000 --- a/tools/depends/target/python3/10-linux-modules.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- a/Modules/Setup -+++ b/Modules/Setup -@@ -182,7 +182,7 @@ - # Modules with some UNIX dependencies - - _posixsubprocess _posixsubprocess.c --_posixshmem -I$(srcdir)/Modules/_multiprocessing _multiprocessing/posixshmem.c # -lrt # _posixshmem -+_posixshmem -I$(srcdir)/Modules/_multiprocessing _multiprocessing/posixshmem.c -lrt # _posixshmem - fcntl fcntlmodule.c - #grp grpmodule.c - #ossaudiodev ossaudiodev.c diff --git a/tools/depends/target/python3/10-osx-modules.patch b/tools/depends/target/python3/10-osx-modules.patch deleted file mode 100644 index 8050f5ae5d..0000000000 --- a/tools/depends/target/python3/10-osx-modules.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- a/Modules/Setup -+++ b/Modules/Setup -@@ -270,7 +270,7 @@ - - # macOS specific module, needs SystemConfiguration and CoreFoundation framework - # _scproxy _scproxy.c --$(OSX_SCPROXY) -+_scproxy _scproxy.c -framework SystemConfiguration -framework CoreFoundation - - # Examples - diff --git a/tools/depends/target/python3/Makefile b/tools/depends/target/python3/Makefile index 53942259aa..c8682f6029 100644 --- a/tools/depends/target/python3/Makefile +++ b/tools/depends/target/python3/Makefile @@ -1,16 +1,14 @@ include ../../Makefile.include PYTHON3-VERSION ../../download-files.include DEPS = ../../Makefile.include Makefile PYTHON3-VERSION ../../download-files.include \ + 01-py312-cpython118618-1.patch \ + 01-py312-cpython118618-2.patch \ + 02-android-cpython114875.patch \ apple.patch \ - crosscompile.patch \ darwin_embedded.patch \ - 10-android-modules.patch \ - 10-linux-modules.patch \ - 10-osx-modules.patch \ - modules.setup + 10-android-modules.patch ifeq ($(findstring apple-darwin, $(HOST)), apple-darwin) HOSTPLATFORM=_PYTHON_HOST_PLATFORM="darwin" - LINK_ICONV=-liconv ifeq ($(OS), darwin_embedded) EXTRA_CONFIGURE=ac_cv_func_wait3=no ac_cv_func_wait4=no ac_cv_func_waitpid=no \ ac_cv_func_execv=no ac_cv_func_fexecv=no ac_cv_func_getentropy=no \ @@ -19,23 +17,64 @@ ifeq ($(findstring apple-darwin, $(HOST)), apple-darwin) ac_cv_func_forkpty=no ac_cv_lib_util_forkpty=no \ ac_cv_func_getgroups=no \ ac_cv_func_system=no + export SDKROOT + endif + ifeq ($(OS), osx) + export SDKROOT endif # required for _localemodule EXTRA_CONFIGURE+= ac_cv_lib_intl_textdomain=yes - # uses SDK ffi - EXTRA_CONFIGURE+= --with-system-ffi endif ifeq ($(OS),android) - LDFLAGS+= -liconv + LIBS=-liconv endif ifeq ($(OS), linux) EXTRA_CONFIGURE=ac_cv_pthread=yes ifeq ($(TARGET_PLATFORM),webos) - LDFLAGS+= -liconv + # Force intl check to succeed + EXTRA_CONFIGURE+=ac_cv_lib_intl_textdomain=yes + # Export iconv as LIBS for link ordering (After -lintl from configure search) + LIBS=-liconv endif +endif + +# Disabled c extension modules for all platforms +PY_MODULES = py_cv_module_audioop=n/a \ + py_cv_module_grp=n/a \ + py_cv_module_ossaudiodev=n/a \ + py_cv_module_spwd=n/a \ + py_cv_module_syslog=n/a \ + py_cv_module__crypt=n/a \ + py_cv_module_nis=n/a \ + py_cv_module__dbm=n/a \ + py_cv_module__gdbm=n/a \ + py_cv_module__uuid=n/a \ + py_cv_module_readline=n/a \ + py_cv_module__curses=n/a \ + py_cv_module__curses_panel=n/a \ + py_cv_module__scproxy=n/a \ + py_cv_module_xx=n/a \ + py_cv_module_xxlimited=n/a \ + py_cv_module_xxlimited_35=n/a \ + py_cv_module_xxsubtype=n/a \ + py_cv_module__xxsubinterpreters=n/a \ + py_cv_module__tkinter=n/a \ + py_cv_module__curses=n/a \ + py_cv_module__codecs_jp=n/a \ + py_cv_module__codecs_kr=n/a \ + py_cv_module__codecs_tw=n/a + +# These modules use "internal" libs for building. The required static archives +# are not installed outside of the cpython build tree, and cause failure in kodi linking +# If we wish to support them in the future, we should create "system libs" for them +PY_MODULES+= py_cv_module__decimal=n/a \ + py_cv_module__sha2=n/a + +ifeq ($(OS), darwin_embedded) + PY_MODULES+= py_cv_module__posixsubprocess=n/a endif # configuration settings @@ -49,9 +88,11 @@ CONFIGURE=./configure --prefix=$(PREFIX) \ --with-system-expat=yes \ --disable-test-modules \ MODULE_BUILDTYPE=static \ + $(PY_MODULES) \ $(EXTRA_CONFIGURE) export LDFLAGS +export LIBS LIBDYLIB=$(PLATFORM)/libpython$(PYTHON_VERSION).a @@ -60,32 +101,27 @@ all: .installed-$(PLATFORM) $(PLATFORM): $(DEPS) | $(TARBALLS_LOCATION)/$(ARCHIVE).$(HASH_TYPE) rm -rf $(PLATFORM)/*; mkdir -p $(PLATFORM) cd $(PLATFORM); $(ARCHIVE_TOOL) $(ARCHIVE_TOOL_FLAGS) $(TARBALLS_LOCATION)/$(ARCHIVE) - cd $(PLATFORM); patch -p1 -i ../crosscompile.patch + cd $(PLATFORM); patch -p1 -i ../01-py312-cpython118618-1.patch + cd $(PLATFORM); patch -p1 -i ../01-py312-cpython118618-2.patch cd $(PLATFORM); patch -p1 -i ../apple.patch ifeq ($(OS),darwin_embedded) cd $(PLATFORM); patch -p1 -i ../darwin_embedded.patch endif - cp modules.setup $(PLATFORM)/Modules/Setup ifeq ($(OS),android) + cd $(PLATFORM); patch -p1 -i ../02-android-cpython114875.patch cd $(PLATFORM); patch -p1 -i ../10-android-modules.patch endif -ifeq ($(OS),linux) - cd $(PLATFORM); patch -p1 -i ../10-linux-modules.patch -endif -ifeq ($(OS),osx) - cd $(PLATFORM); patch -p1 -i ../10-osx-modules.patch -endif - cd $(PLATFORM); $(AUTORECONF) cd $(PLATFORM); $(CONFIGURE) $(LIBDYLIB): $(PLATFORM) - $(MAKE) -C $(PLATFORM) $(HOSTPLATFORM) CROSS_COMPILE_TARGET=yes libpython$(PYTHON_VERSION).a + $(MAKE) -C $(PLATFORM) $(HOSTPLATFORM) libpython$(PYTHON_VERSION).a touch $@ .installed-$(PLATFORM): $(LIBDYLIB) - $(MAKE) -C $(PLATFORM) $(HOSTPLATFORM) CROSS_COMPILE_TARGET=yes install +# We specifically use -j1 as some threading issues can occur with install directory creation + $(MAKE) -C $(PLATFORM) $(HOSTPLATFORM) install -j1 find $(PREFIX)/lib/python$(PYTHON_VERSION) -type f -name "*.pyc" -delete touch $(LIBDYLIB) touch $@ diff --git a/tools/depends/target/python3/PYTHON3-VERSION b/tools/depends/target/python3/PYTHON3-VERSION index c5e1760fb2..9c97bd4018 100644 --- a/tools/depends/target/python3/PYTHON3-VERSION +++ b/tools/depends/target/python3/PYTHON3-VERSION @@ -1,4 +1,4 @@ LIBNAME=Python -VERSION=3.11.7 +VERSION=3.12.5 ARCHIVE=$(LIBNAME)-$(VERSION).tar.xz -SHA512=11e06f2ffe1f66888cb5b4e9f607de815294d6863a77eda6ec6d7c724ef158df9f51881f4a956d4a6fa973c2fb6fd031d495e3496e9b0bb53793fb1cc8434c63 +SHA512=7a1c30d798434fe24697bc253f6010d75145e7650f66803328425c8525331b9fa6b63d12a652687582db205f8d4c8279c8f73c338168592481517b063351c921 diff --git a/tools/depends/target/python3/apple.patch b/tools/depends/target/python3/apple.patch index 4deda311fb..1cad7696d2 100644 --- a/tools/depends/target/python3/apple.patch +++ b/tools/depends/target/python3/apple.patch @@ -28,12 +28,3 @@ # On QNX 6.3.2, defining _XOPEN_SOURCE prevents netdb.h from # defining NI_NUMERICHOST. QNX/6.3.2) -@@ -2947,7 +2947,7 @@ - return 1; - } - } -- ]])],[ac_osx_32bit=yes],[ac_osx_32bit=no],[ac_osx_32bit=yes]) -+ ]])],[ac_osx_32bit=yes],[ac_osx_32bit=no],[ac_osx_32bit=no]) - - if test "${ac_osx_32bit}" = "yes"; then - case `/usr/bin/arch` in diff --git a/tools/depends/target/python3/crosscompile.patch b/tools/depends/target/python3/crosscompile.patch deleted file mode 100644 index 6757c75ace..0000000000 --- a/tools/depends/target/python3/crosscompile.patch +++ /dev/null @@ -1,64 +0,0 @@ ---- a/configure.ac -+++ b/configure.ac -@@ -1625,15 +1625,6 @@ - ARFLAGS="rcs" - fi - --AC_CHECK_TOOLS([READELF], [readelf], [:]) --if test "$cross_compiling" = yes; then -- case "$READELF" in -- readelf|:) -- AC_MSG_ERROR([readelf for the host is required for cross builds]) -- ;; -- esac --fi --AC_SUBST(READELF) - - - case $MACHDEP in ---- a/Makefile.pre.in -+++ b/Makefile.pre.in -@@ -2233,10 +2233,11 @@ - # This goes into $(exec_prefix) - sharedinstall: all - $(RUNSHARED) $(PYTHON_FOR_BUILD) $(srcdir)/setup.py install \ -+ --skip-build \ - --prefix=$(prefix) \ -- --install-scripts=$(BINDIR) \ -- --install-platlib=$(DESTSHARED) \ -- --root=$(DESTDIR)/ -+ --install-scripts=$(DESTDIR)$(BINDIR) \ -+ --install-platlib=$(DESTDIR)$(DESTSHARED) \ -+ --root=/ - -rm $(DESTDIR)$(DESTSHARED)/_sysconfigdata_$(ABIFLAGS)_$(MACHDEP)_$(MULTIARCH).py - -rm -r $(DESTDIR)$(DESTSHARED)/__pycache__ - ---- a/setup.py -+++ b/setup.py -@@ -77,7 +77,7 @@ - return sys.platform - - --CROSS_COMPILING = ("_PYTHON_HOST_PLATFORM" in os.environ) -+CROSS_COMPILING = ("_PYTHON_HOST_PLATFORM" in os.environ) or ('CROSS_COMPILE_TARGET' in os.environ) - HOST_PLATFORM = get_platform() - MS_WINDOWS = (HOST_PLATFORM == 'win32') - CYGWIN = (HOST_PLATFORM == 'cygwin') -@@ -488,6 +488,7 @@ - self.compiler.set_executables(**args) - - def build_extensions(self): -+ return - self.set_srcdir() - self.set_compiler_executables() - self.configure_compiler() -@@ -1343,7 +1343,7 @@ - # These are extensions are required to bootstrap the interpreter or - # build process. - self.detect_simple_extensions() -- self.detect_test_extensions() -+ #self.detect_test_extensions() - self.detect_readline_curses() - self.detect_crypt() - self.detect_openssl_hashlib() - diff --git a/tools/depends/target/python3/darwin_embedded.patch b/tools/depends/target/python3/darwin_embedded.patch index 77c9d0f30a..bd27f7ef1f 100644 --- a/tools/depends/target/python3/darwin_embedded.patch +++ b/tools/depends/target/python3/darwin_embedded.patch @@ -1,14 +1,3 @@ ---- a/configure.ac -+++ b/configure.ac -@@ -6827,7 +6827,7 @@ - AS_CASE([$ac_sys_system], - [AIX], [PY_STDLIB_MOD_SET_NA([_scproxy], [spwd])], - [VxWorks*], [PY_STDLIB_MOD_SET_NA([_scproxy], [_crypt], [termios], [grp])], -- [Darwin], [PY_STDLIB_MOD_SET_NA([ossaudiodev], [spwd])], -+ [Darwin], [PY_STDLIB_MOD_SET_NA([ossaudiodev], [spwd], [_posixsubprocess], [_scproxy], [_tkinter], [_xxsubinterpreters])], - [CYGWIN*], [PY_STDLIB_MOD_SET_NA([_scproxy], [nis])], - [QNX*], [PY_STDLIB_MOD_SET_NA([_scproxy], [nis])], - [FreeBSD*], [PY_STDLIB_MOD_SET_NA([_scproxy], [spwd])], --- a/Lib/os.py +++ b/Lib/os.py @@ -605,6 +605,7 @@ diff --git a/tools/depends/target/python3/modules.setup b/tools/depends/target/python3/modules.setup deleted file mode 100644 index c974a066c9..0000000000 --- a/tools/depends/target/python3/modules.setup +++ /dev/null @@ -1,304 +0,0 @@ -# -*- makefile -*- -# The file Setup is used by the makesetup script to construct the files -# Makefile and config.c, from Makefile.pre and config.c.in, -# respectively. Note that Makefile.pre is created from Makefile.pre.in -# by the toplevel configure script. - -# (VPATH notes: Setup and Makefile.pre are in the build directory, as -# are Makefile and config.c; the *.in files are in the source directory.) - -# Each line in this file describes one or more optional modules. -# Modules configured here will not be compiled by the setup.py script, -# so the file can be used to override setup.py's behavior. -# Tag lines containing just the word "*static*", "*shared*" or "*disabled*" -# (without the quotes but with the stars) are used to tag the following module -# descriptions. Tag lines may alternate throughout this file. Modules are -# built statically when they are preceded by a "*static*" tag line or when -# there is no tag line between the start of the file and the module -# description. Modules are built as a shared library when they are preceded by -# a "*shared*" tag line. Modules are not built at all, not by the Makefile, -# nor by the setup.py script, when they are preceded by a "*disabled*" tag -# line. - -# Lines have the following structure: -# -# <module> ... [<sourcefile> ...] [<cpparg> ...] [<library> ...] -# -# <sourcefile> is anything ending in .c (.C, .cc, .c++ are C++ files) -# <cpparg> is anything starting with -I, -D, -U or -C -# <library> is anything ending in .a or beginning with -l or -L -# <module> is anything else but should be a valid Python -# identifier (letters, digits, underscores, beginning with non-digit) -# -# (As the makesetup script changes, it may recognize some other -# arguments as well, e.g. *.so and *.sl as libraries. See the big -# case statement in the makesetup script.) -# -# Lines can also have the form -# -# <name> = <value> -# -# which defines a Make variable definition inserted into Makefile.in. -# You can also use any Make variable that is detected by configure and -# defined in Makefile.pre.in, e.g. OpenSSL flags $(OPENSSL_INCLUDES). -# -# Rules generated by makesetup use additional variables: -# -# - All source file rules have a dependency on $(PYTHON_HEADERS) and on -# optional variable $(MODULES_{mod_upper}_DEPS). -# - If no <cpparg> and no <library> arguments are given, then makesetup -# defaults to $(MODULES_{mod_upper}_CFLAGS) cppargs and -# $(MODULES_{mod_upper}_LDFLAGS) libraries. The variables are typically -# defined by configure. -# -# The build process works like this: -# -# 1. Build all modules that are declared as static in Modules/Setup, -# combine them into libpythonxy.a, combine that into python. -# 2. Build all modules that are listed as shared in Modules/Setup. -# 3. Invoke setup.py. That builds all modules that -# a) are not builtin, and -# b) are not listed in Modules/Setup, and -# c) can be build on the target -# -# Therefore, modules declared to be shared will not be -# included in the config.c file, nor in the list of objects to be -# added to the library archive, and their linker options won't be -# added to the linker options. Rules to create their .o files and -# their shared libraries will still be added to the Makefile, and -# their names will be collected in the Make variable SHAREDMODS. This -# is used to build modules as shared libraries. (They can be -# installed using "make sharedinstall", which is implied by the -# toplevel "make install" target.) (For compatibility, -# *noconfig* has the same effect as *shared*.) -# -# NOTE: As a standard policy, as many modules as can be supported by a -# platform should be listed below. The distribution comes with all -# modules enabled that are supported by most platforms and don't -# require you to download sources from elsewhere. -# -# NOTE: Avoid editing this file directly. Local changes should go into -# Modules/Setup.local file. To enable all modules for testing, run -# -# sed -n -E 's/^#([a-z_\*].*)$/\1/p' Modules/Setup > Modules/Setup.local - - -# Some special rules to define PYTHONPATH. -# Edit the definitions below to indicate which options you are using. -# Don't add any whitespace or comments! - -# Directories where library files get installed. -# DESTLIB is for Python modules; MACHDESTLIB for shared libraries. -DESTLIB=$(LIBDEST) -MACHDESTLIB=$(BINLIBDEST) - -# NOTE: all the paths are now relative to the prefix that is computed -# at run time! - -# Standard path -- don't edit. -# No leading colon since this is the first entry. -# Empty since this is now just the runtime prefix. -DESTPATH= - -# Site specific path components -- should begin with : if non-empty -SITEPATH=:site-packages - -# Standard path components for test modules -TESTPATH= - -COREPYTHONPATH=$(DESTPATH)$(SITEPATH)$(TESTPATH) -PYTHONPATH=$(COREPYTHONPATH) - - -# --- -# Built-in modules required to get a functioning interpreter are listed in -# Modules/Setup.bootstrap. - -# --- -# The rest of the modules listed in this file are all commented out by -# default. Usually they can be detected and built as dynamically -# loaded modules by setup.py. If you're on a platform that doesn't -# support dynamic loading, want to compile modules statically into the -# Python binary, or need to specify some odd set of compiler switches, -# you can uncomment the appropriate lines below. - -# Uncommenting the following line tells makesetup that all following -# modules are to be built as shared libraries (see above for more -# detail; also note that *static* or *disabled* cancels this effect): - -#*shared* - -# Modules that should always be present (POSIX and Windows): - -_asyncio _asynciomodule.c -_bisect _bisectmodule.c -_contextvars _contextvarsmodule.c -_csv _csv.c -_datetime _datetimemodule.c -# _decimal _decimal/_decimal.c -_heapq _heapqmodule.c -_json _json.c -_lsprof _lsprof.c rotatingtree.c -_multiprocessing -I$(srcdir)/Modules/_multiprocessing _multiprocessing/multiprocessing.c _multiprocessing/semaphore.c -_opcode _opcode.c -_pickle _pickle.c -_queue _queuemodule.c -_random _randommodule.c -_socket socketmodule.c -_statistics _statisticsmodule.c -_struct _struct.c -_typing _typingmodule.c -_zoneinfo _zoneinfo.c -array arraymodule.c -#audioop audioop.c -binascii binascii.c -cmath cmathmodule.c -math mathmodule.c -mmap mmapmodule.c -select selectmodule.c - -# XML -_elementtree _elementtree.c -pyexpat pyexpat.c - -# hashing builtins -_blake2 _blake2/blake2module.c _blake2/blake2b_impl.c _blake2/blake2s_impl.c -_md5 md5module.c -_sha1 sha1module.c -_sha256 sha256module.c -_sha512 sha512module.c -_sha3 _sha3/sha3module.c - -# text encodings and unicode -_codecs_cn cjkcodecs/_codecs_cn.c -_codecs_hk cjkcodecs/_codecs_hk.c -_codecs_iso2022 cjkcodecs/_codecs_iso2022.c -_codecs_jp cjkcodecs/_codecs_jp.c -_codecs_kr cjkcodecs/_codecs_kr.c -_codecs_tw cjkcodecs/_codecs_tw.c -_multibytecodec cjkcodecs/multibytecodec.c -unicodedata unicodedata.c - -# Modules with some UNIX dependencies - -_posixsubprocess _posixsubprocess.c -_posixshmem -I$(srcdir)/Modules/_multiprocessing _multiprocessing/posixshmem.c # -lrt # _posixshmem -fcntl fcntlmodule.c -#grp grpmodule.c -#ossaudiodev ossaudiodev.c -resource resource.c -#spwd spwdmodule.c -#syslog syslogmodule.c -termios termios.c - -# Modules with UNIX dependencies that require external libraries - -#_crypt _cryptmodule.c -lcrypt -#nis nismodule.c -I/usr/include/tirpc -lnsl -ltirpc - -# Modules that require external libraries. - -_bz2 _bz2module.c -lbz2 -_ctypes _ctypes/_ctypes.c _ctypes/callbacks.c _ctypes/callproc.c _ctypes/stgdict.c _ctypes/cfield.c -I$(prefix)/include -L$(prefix)/lib -ldl -lffi -DHAVE_FFI_PREP_CIF_VAR -DHAVE_FFI_PREP_CLOSURE_LOC -DHAVE_FFI_CLOSURE_ALLOC -# The _dbm module supports NDBM, GDBM with compat module, and Berkeley DB. -#_dbm _dbmmodule.c -lgdbm_compat -DUSE_GDBM_COMPAT -#_gdbm _gdbmmodule.c -lgdbm -_lzma _lzmamodule.c -llzma -#_uuid _uuidmodule.c -luuid -zlib zlibmodule.c -lz - -_sqlite3 _sqlite/blob.c _sqlite/connection.c _sqlite/cursor.c _sqlite/microprotocols.c _sqlite/module.c _sqlite/prepare_protocol.c _sqlite/row.c _sqlite/statement.c _sqlite/util.c -lsqlite3 - -# The readline module also supports libeditline (-leditline). -# Some systems may require -ltermcap or -ltermlib. -#readline readline.c -lreadline -ltermcap - -# OpenSSL bindings -#_ssl _ssl.c $(OPENSSL_INCLUDES) $(OPENSSL_LDFLAGS) $(OPENSSL_LIBS) -#_hashlib _hashopenssl.c $(OPENSSL_INCLUDES) $(OPENSSL_LDFLAGS) -lcrypto - -# To statically link OpenSSL: - _ssl _ssl.c -I$(prefix)/include -I$(prefix)/include/openssl \ - -L$(prefix)/lib -lintl $(LDFLAGS) -lssl -lcrypto - _hashlib _hashopenssl.c -I$(prefix)/include -I$(prefix)/include/openssl \ - -L$(prefix)/lib - -# The _tkinter module. -# -# The command for _tkinter is long and site specific. Please -# uncomment and/or edit those parts as indicated. If you don't have a -# specific extension (e.g. Tix or BLT), leave the corresponding line -# commented out. (Leave the trailing backslashes in! If you -# experience strange errors, you may want to join all uncommented -# lines and remove the backslashes -- the backslash interpretation is -# done by the shell's "read" command and it may not be implemented on -# every system. - -# *** Always uncomment this (leave the leading underscore in!): -#_tkinter _tkinter.c tkappinit.c -DWITH_APPINIT $(TCLTK_INCLUDES) $(TCLTK_LIBS) \ -# *** Uncomment and edit to reflect where your Tcl/Tk libraries are: -# -L/usr/local/lib \ -# *** Uncomment and edit to reflect where your Tcl/Tk headers are: -# -I/usr/local/include \ -# *** Uncomment and edit to reflect where your X11 header files are: -# -I/usr/X11R6/include \ -# *** Or uncomment this for Solaris: -# -I/usr/openwin/include \ -# *** Uncomment and edit for Tix extension only: -# -DWITH_TIX -ltix8.1.8.2 \ -# *** Uncomment and edit for BLT extension only: -# -DWITH_BLT -I/usr/local/blt/blt8.0-unoff/include -lBLT8.0 \ -# *** Uncomment and edit for PIL (TkImaging) extension only: -# (See http://www.pythonware.com/products/pil/ for more info) -# -DWITH_PIL -I../Extensions/Imaging/libImaging tkImaging.c \ -# *** Uncomment and edit for TOGL extension only: -# -DWITH_TOGL togl.c \ -# *** Uncomment and edit to reflect where your X11 libraries are: -# -L/usr/X11R6/lib \ -# *** Or uncomment this for Solaris: -# -L/usr/openwin/lib \ -# *** Uncomment these for TOGL extension only: -# -lGL -lGLU -lXext -lXmu \ -# *** Uncomment for AIX: -# -lld \ -# *** Always uncomment this; X11 libraries to link with: -# -lX11 - -# Some system have -lcurses -#_curses -lncurses -lncursesw -ltermcap _cursesmodule.c -#_curses_panel -lpanel -lncurses _curses_panel.c - -# macOS specific module, needs SystemConfiguration and CoreFoundation framework -# _scproxy _scproxy.c -$(OSX_SCPROXY) - -# Examples - -#xx xxmodule.c -#xxlimited xxlimited.c -#xxlimited_35 xxlimited_35.c -xxsubtype xxsubtype.c # Required for the test suite to pass! - -# Testing - -#_xxsubinterpreters _xxsubinterpretersmodule.c -#_xxtestfuzz _xxtestfuzz/_xxtestfuzz.c _xxtestfuzz/fuzzer.c -#_testbuffer _testbuffer.c -#_testinternalcapi _testinternalcapi.c - -# Some testing modules MUST be built as shared libraries. - -#*shared* -#_ctypes_test _ctypes/_ctypes_test.c -#_testcapi _testcapimodule.c -#_testimportmultiple _testimportmultiple.c -#_testmultiphase _testmultiphase.c - -# --- -# Uncommenting the following line tells makesetup that all following modules -# are not built (see above for more detail). -# -#*disabled* -# -# _tkinter _curses -# _codecs_jp _codecs_kr _codecs_tw diff --git a/tools/depends/target/pythonmodule-setuptools/PYTHONMODULE-SETUPTOOLS-VERSION b/tools/depends/target/pythonmodule-setuptools/PYTHONMODULE-SETUPTOOLS-VERSION index 1eca9e1bc0..1bf06499f3 100644 --- a/tools/depends/target/pythonmodule-setuptools/PYTHONMODULE-SETUPTOOLS-VERSION +++ b/tools/depends/target/pythonmodule-setuptools/PYTHONMODULE-SETUPTOOLS-VERSION @@ -1,4 +1,4 @@ LIBNAME=setuptools -VERSION=65.5.0 +VERSION=72.1.0 ARCHIVE=$(LIBNAME)-$(VERSION).tar.gz -SHA512=b3ed6546bfa45c96f9b69fd7f014a87b52e6d8a6591340bf980bd4de98e33dbe0990b089940c348f2ad20a27590b82de84aec44c8ba1dce0510a3835653930d3 +SHA512=d0a34f16dfa6bb9a6df39076cd43528cf854d343f6f801c448ea0ebab2a259aec3d03571e2a26709df6082ed2fcb6c43b86448be556fd559b6af41831b4f38e0 diff --git a/tools/depends/target/samba-gplv3/08-py312-distutils.patch b/tools/depends/target/samba-gplv3/08-py312-distutils.patch new file mode 100644 index 0000000000..6ddb5f02a1 --- /dev/null +++ b/tools/depends/target/samba-gplv3/08-py312-distutils.patch @@ -0,0 +1,11 @@ +--- a/third_party/waf/waflib/Tools/python.py ++++ b/third_party/waf/waflib/Tools/python.py +@@ -53,7 +53,7 @@ + Piece of Python code used in :py:class:`waflib.Tools.python.pyo` and :py:class:`waflib.Tools.python.pyc` for byte-compiling python files + """ + +-DISTUTILS_IMP = ['from distutils.sysconfig import get_config_var, get_python_lib'] ++DISTUTILS_IMP = ['import setuptools\nfrom distutils.sysconfig import get_config_var, get_python_lib'] + + @before_method('process_source') + @feature('py') diff --git a/tools/depends/target/samba-gplv3/Makefile b/tools/depends/target/samba-gplv3/Makefile index 20a77dfe42..b089dbd563 100644 --- a/tools/depends/target/samba-gplv3/Makefile +++ b/tools/depends/target/samba-gplv3/Makefile @@ -3,6 +3,7 @@ DEPS= ../../Makefile.include Makefile SAMBA-GPLV3-VERSION ../../download-files.i 01-fix-dependencies.patch 02-cross_compile.patch \ 03-builtin-heimdal.patch 04-built-static.patch \ 05-apple-disable-zlib-pkgconfig.patch 06-apple-fix-st_atim.patch \ + 08-py312-distutils.patch \ samba_android.patch \ no_fork_and_exec.patch \ crt_extensions.patch \ @@ -89,6 +90,7 @@ endif ifeq ($(TARGET_PLATFORM),webos) cd $(PLATFORM); patch -p1 -i ../webos-no-readline.patch endif + cd $(PLATFORM); patch -p1 -i ../08-py312-distutils.patch cd $(PLATFORM); $(CONFIGURE) $(LIBDYLIB): $(PLATFORM) |