From 0065f22e699a282be6671ea3dc86539fb6a7e4e8 Mon Sep 17 00:00:00 2001 From: Mark Harfouche Date: Sat, 1 Nov 2025 13:49:30 -0400 Subject: [PATCH 1/2] Use zlib-ng --- recipe/build_base.sh | 15 + recipe/meta.yaml | 11 +- ...6-Adjust-windows-project-for-zlib-ng.patch | 43 ++ ...-Use-zlib-ng-on-unix-instead-of-zlib.patch | 83 ++++ ...e-of-zlib-to-explicitely-use-zlib-ng.patch | 461 ++++++++++++++++++ 5 files changed, 610 insertions(+), 3 deletions(-) create mode 100644 recipe/patches/0026-Adjust-windows-project-for-zlib-ng.patch create mode 100644 recipe/patches/0027-Use-zlib-ng-on-unix-instead-of-zlib.patch create mode 100644 recipe/patches/0028-Update-usage-of-zlib-to-explicitely-use-zlib-ng.patch diff --git a/recipe/build_base.sh b/recipe/build_base.sh index a376602ca..8f6afdc6d 100644 --- a/recipe/build_base.sh +++ b/recipe/build_base.sh @@ -11,6 +11,21 @@ if [[ ! -d ${SRC_DIR}/python-bin ]]; then export PATH=${SRC_DIR}/python-bin/bin:${PATH} fi +# tcl/tk seem to add a dependency against zlib +# but they actually do not appear in the header files +# so they aren't useful in the context off dynamic linking +# https://github.com/conda-forge/tk-feedstock/pull/70 +sed -i.bak '/^Requires\.private/d' ${PREFIX}/lib/pkgconfig/tcl.pc +rm -f ${PREFIX}/lib/pkgconfig/tcl.pc.bak +sed -i.bak '/^Libs\.private/d' ${PREFIX}/lib/pkgconfig/tcl.pc +rm -f ${PREFIX}/lib/pkgconfig/tcl.pc.bak +if [[ "${CONDA_BUILD_CROSS_COMPILATION}" == "1" ]]; then + sed -i.bak '/^Requires\.private/d' ${BUILD_PREFIX}/lib/pkgconfig/tcl.pc + rm -f ${BUILD_PREFIX}/lib/pkgconfig/tcl.pc.bak + sed -i.bak '/^Libs\.private/d' ${BUILD_PREFIX}/lib/pkgconfig/tcl.pc + rm -f ${BUILD_PREFIX}/lib/pkgconfig/tcl.pc.bak +fi + # The LTO/PGO information was sourced from @pitrou and the Debian rules file in: # http://http.debian.net/debian/pool/main/p/python3.6/python3.6_3.6.2-2.debian.tar.xz # https://packages.debian.org/source/sid/python3.6 diff --git a/recipe/meta.yaml b/recipe/meta.yaml index f4d576873..0db377b45 100644 --- a/recipe/meta.yaml +++ b/recipe/meta.yaml @@ -4,7 +4,7 @@ {% set ver2 = '.'.join(version.split('.')[0:2]) %} {% set ver2nd = ''.join(version.split('.')[0:2]) %} {% set ver3nd = ''.join(version.split('.')[0:3]) %} -{% set build_number = 2 %} +{% set build_number = 3 %} # this makes the linter happy {% set channel_targets = channel_targets or 'conda-forge main' %} @@ -78,6 +78,11 @@ source: - patches/0024-Do-not-define-pid_t-as-it-might-conflict-with-the-ac.patch - patches/0025-Unvendor-zstd.patch + # zlib-ng for all platforms + - patches/0026-Adjust-windows-project-for-zlib-ng.patch + - patches/0027-Use-zlib-ng-on-unix-instead-of-zlib.patch + - patches/0028-Update-usage-of-zlib-to-explicitely-use-zlib-ng.patch + build: number: {{ build_number }} @@ -163,7 +168,7 @@ outputs: - bzip2 # [build_platform != target_platform] - libsqlite # [build_platform != target_platform] - liblzma-devel # [build_platform != target_platform] - - zlib # [build_platform != target_platform] + - zlib-ng # [build_platform != target_platform] - zstd # [build_platform != target_platform] - openssl # [build_platform != target_platform] - readline # [not win and build_platform != target_platform] @@ -177,7 +182,7 @@ outputs: - bzip2 - libsqlite - liblzma-devel - - zlib + - zlib-ng - zstd - openssl - readline # [not win] diff --git a/recipe/patches/0026-Adjust-windows-project-for-zlib-ng.patch b/recipe/patches/0026-Adjust-windows-project-for-zlib-ng.patch new file mode 100644 index 000000000..1dd4d2431 --- /dev/null +++ b/recipe/patches/0026-Adjust-windows-project-for-zlib-ng.patch @@ -0,0 +1,43 @@ +From 4f2f508e468c1c6a58d3dec71f11de03ce23df8d Mon Sep 17 00:00:00 2001 +From: Mark Harfouche +Date: Sat, 1 Nov 2025 17:00:02 -0400 +Subject: [PATCH 26/28] Adjust windows project for zlib-ng + +--- + PCbuild/pythoncore.vcxproj | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/PCbuild/pythoncore.vcxproj b/PCbuild/pythoncore.vcxproj +index fc1a607..82909cc 100644 +--- a/PCbuild/pythoncore.vcxproj ++++ b/PCbuild/pythoncore.vcxproj +@@ -82,7 +82,7 @@ + + true + true +- true ++ true + false + + +@@ -103,7 +103,7 @@ + $(PySourcePath)Modules\_hacl;$(PySourcePath)Modules\_hacl\include;$(PySourcePath)Python;%(AdditionalIncludeDirectories) + $(condaDir)\include;%(AdditionalIncludeDirectories) + $(GeneratedJitStencilsDir);%(AdditionalIncludeDirectories) +- _USRDLL;Py_BUILD_CORE;Py_BUILD_CORE_BUILTIN;Py_ENABLE_SHARED;MS_DLL_ID="$(SysWinVer)";ZLIB_COMPAT;%(PreprocessorDefinitions) ++ _USRDLL;Py_BUILD_CORE;Py_BUILD_CORE_BUILTIN;Py_ENABLE_SHARED;MS_DLL_ID="$(SysWinVer)";%(PreprocessorDefinitions) + _Py_HAVE_ZLIB;%(PreprocessorDefinitions) + _Py_JIT;%(PreprocessorDefinitions) + _Py_TIER2=$(UseTIER2);%(PreprocessorDefinitions) +@@ -112,7 +112,7 @@ + Py_REMOTE_DEBUG;%(PreprocessorDefinitions) + + +- version.lib;ws2_32.lib;pathcch.lib;bcrypt.lib;zlib.lib;%(AdditionalDependencies) ++ version.lib;ws2_32.lib;pathcch.lib;bcrypt.lib;zlib-ng.lib;%(AdditionalDependencies) + $(condaDir)\lib;%(AdditionalLibraryDirectories) + + +-- +2.51.0 + diff --git a/recipe/patches/0027-Use-zlib-ng-on-unix-instead-of-zlib.patch b/recipe/patches/0027-Use-zlib-ng-on-unix-instead-of-zlib.patch new file mode 100644 index 000000000..00c3a07e3 --- /dev/null +++ b/recipe/patches/0027-Use-zlib-ng-on-unix-instead-of-zlib.patch @@ -0,0 +1,83 @@ +From 7cfb45fa97bcdc97f556bf10d54bd0211f5fca74 Mon Sep 17 00:00:00 2001 +From: Mark Harfouche +Date: Sat, 1 Nov 2025 13:43:10 -0400 +Subject: [PATCH 27/28] Use zlib-ng on unix instead of zlib + +--- + configure | 20 ++++++++++---------- + configure.ac | 2 +- + 2 files changed, 11 insertions(+), 11 deletions(-) + +diff --git a/configure b/configure +index 8af6bd4..868896f 100755 +--- a/configure ++++ b/configure +@@ -21713,19 +21713,19 @@ fi + + + pkg_failed=no +-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for zlib >= 1.2.0" >&5 +-printf %s "checking for zlib >= 1.2.0... " >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for zlib-ng >= 2.2.5" >&5 ++printf %s "checking for zlib-ng >= 2.2.5... " >&6; } + + if test -n "$ZLIB_CFLAGS"; then + pkg_cv_ZLIB_CFLAGS="$ZLIB_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ +- { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"zlib >= 1.2.0\""; } >&5 +- ($PKG_CONFIG --exists --print-errors "zlib >= 1.2.0") 2>&5 ++ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"zlib-ng >= 2.2.5\""; } >&5 ++ ($PKG_CONFIG --exists --print-errors "zlib-ng >= 2.2.5") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then +- pkg_cv_ZLIB_CFLAGS=`$PKG_CONFIG --cflags "zlib >= 1.2.0" 2>/dev/null` ++ pkg_cv_ZLIB_CFLAGS=`$PKG_CONFIG --cflags "zlib-ng >= 2.2.5" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes + else + pkg_failed=yes +@@ -21737,12 +21737,12 @@ if test -n "$ZLIB_LIBS"; then + pkg_cv_ZLIB_LIBS="$ZLIB_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ +- { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"zlib >= 1.2.0\""; } >&5 +- ($PKG_CONFIG --exists --print-errors "zlib >= 1.2.0") 2>&5 ++ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"zlib-ng >= 2.2.5\""; } >&5 ++ ($PKG_CONFIG --exists --print-errors "zlib-ng >= 2.2.5") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then +- pkg_cv_ZLIB_LIBS=`$PKG_CONFIG --libs "zlib >= 1.2.0" 2>/dev/null` ++ pkg_cv_ZLIB_LIBS=`$PKG_CONFIG --libs "zlib-ng >= 2.2.5" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes + else + pkg_failed=yes +@@ -21763,9 +21763,9 @@ else + _pkg_short_errors_supported=no + fi + if test $_pkg_short_errors_supported = yes; then +- ZLIB_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "zlib >= 1.2.0" 2>&1` ++ ZLIB_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "zlib-ng >= 2.2.5" 2>&1` + else +- ZLIB_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "zlib >= 1.2.0" 2>&1` ++ ZLIB_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "zlib-ng >= 2.2.5" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$ZLIB_PKG_ERRORS" >&5 +diff --git a/configure.ac b/configure.ac +index 480e59d..18140ec 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -5416,7 +5416,7 @@ AH_TEMPLATE([HAVE_ZLIB_COPY], [Define if the zlib library has inflateCopy]) + dnl detect zlib from Emscripten emport + PY_CHECK_EMSCRIPTEN_PORT([ZLIB], [-sUSE_ZLIB]) + +-PKG_CHECK_MODULES([ZLIB], [zlib >= 1.2.0], [ ++PKG_CHECK_MODULES([ZLIB], [zlib-ng >= 2.2.5], [ + have_zlib=yes + dnl zlib 1.2.0 (2003) added inflateCopy + AC_DEFINE([HAVE_ZLIB_COPY], [1]) +-- +2.51.0 + diff --git a/recipe/patches/0028-Update-usage-of-zlib-to-explicitely-use-zlib-ng.patch b/recipe/patches/0028-Update-usage-of-zlib-to-explicitely-use-zlib-ng.patch new file mode 100644 index 000000000..c5fcc9db6 --- /dev/null +++ b/recipe/patches/0028-Update-usage-of-zlib-to-explicitely-use-zlib-ng.patch @@ -0,0 +1,461 @@ +From a01b1e4684e70d8942251fbd3490a33977fb97a9 Mon Sep 17 00:00:00 2001 +From: Mark Harfouche +Date: Sat, 1 Nov 2025 17:01:07 -0400 +Subject: [PATCH 28/28] Update usage of zlib to explicitely use zlib-ng + +--- + Modules/binascii.c | 10 ++--- + Modules/zlibmodule.c | 98 ++++++++++++++++++++++---------------------- + 2 files changed, 54 insertions(+), 54 deletions(-) + +diff --git a/Modules/binascii.c b/Modules/binascii.c +index 6bb01d1..73cd97c 100644 +--- a/Modules/binascii.c ++++ b/Modules/binascii.c +@@ -61,7 +61,7 @@ + #include "pycore_long.h" // _PyLong_DigitValue + #include "pycore_strhex.h" // _Py_strhex_bytes_with_sep() + #ifdef USE_ZLIB_CRC32 +-# include "zlib.h" ++# include "zlib-ng.h" + #endif + + typedef struct binascii_state { +@@ -776,7 +776,7 @@ binascii_crc32_impl(PyObject *module, Py_buffer *data, unsigned int crc) + Py_ssize_t len = data->len; + + Py_BEGIN_ALLOW_THREADS +- /* Avoid truncation of length for very large buffers. crc32() takes ++ /* Avoid truncation of length for very large buffers. zng_crc32() takes + length as an unsigned int, which may be narrower than Py_ssize_t. + We further limit size due to bugs in Apple's macOS zlib. + See https://github.com/python/cpython/issues/105967 +@@ -786,15 +786,15 @@ binascii_crc32_impl(PyObject *module, Py_buffer *data, unsigned int crc) + # error "unsupported less than 32-bit platform?" + #endif + while ((size_t)len > ZLIB_CRC_CHUNK_SIZE) { +- crc = crc32(crc, buf, ZLIB_CRC_CHUNK_SIZE); ++ crc = zng_crc32(crc, buf, ZLIB_CRC_CHUNK_SIZE); + buf += (size_t) ZLIB_CRC_CHUNK_SIZE; + len -= (size_t) ZLIB_CRC_CHUNK_SIZE; + } + #undef ZLIB_CRC_CHUNK_SIZE +- crc = crc32(crc, buf, (unsigned int)len); ++ crc = zng_crc32(crc, buf, (unsigned int)len); + Py_END_ALLOW_THREADS + } else { +- crc = crc32(crc, data->buf, (unsigned int)data->len); ++ crc = zng_crc32(crc, data->buf, (unsigned int)data->len); + } + return crc & 0xffffffff; + } +diff --git a/Modules/zlibmodule.c b/Modules/zlibmodule.c +index cb360f2..1e2aeef 100644 +--- a/Modules/zlibmodule.c ++++ b/Modules/zlibmodule.c +@@ -9,7 +9,7 @@ + + #include "Python.h" + +-#include "zlib.h" ++#include "zlib-ng.h" + #include "stdbool.h" + #include // offsetof() + +@@ -212,7 +212,7 @@ get_zlib_state(PyObject *module) + typedef struct + { + PyObject_HEAD +- z_stream zst; ++ zng_stream zst; + PyObject *unused_data; + PyObject *unconsumed_tail; + char eof; +@@ -224,7 +224,7 @@ typedef struct + #define _compobject_CAST(op) ((compobject *)op) + + static void +-zlib_error(zlibstate *state, z_stream zst, int err, const char *msg) ++zlib_error(zlibstate *state, zng_stream zst, int err, const char *msg) + { + const char *zmsg = Z_NULL; + /* In case of a version mismatch, zst.msg won't be initialized. +@@ -307,7 +307,7 @@ PyZlib_Free(voidpf ctx, void *ptr) + } + + static void +-arrange_input_buffer(z_stream *zst, Py_ssize_t *remains) ++arrange_input_buffer(zng_stream *zst, Py_ssize_t *remains) + { + zst->avail_in = (uInt)Py_MIN((size_t)*remains, UINT_MAX); + *remains -= zst->avail_in; +@@ -333,7 +333,7 @@ zlib_compress_impl(PyObject *module, Py_buffer *data, int level, int wbits) + { + PyObject *return_value; + int flush; +- z_stream zst; ++ zng_stream zst; + _BlocksOutputBuffer buffer = {.list = NULL}; + + zlibstate *state = get_zlib_state(module); +@@ -349,7 +349,7 @@ zlib_compress_impl(PyObject *module, Py_buffer *data, int level, int wbits) + zst.zalloc = PyZlib_Malloc; + zst.zfree = PyZlib_Free; + zst.next_in = ibuf; +- int err = deflateInit2(&zst, level, DEFLATED, wbits, DEF_MEM_LEVEL, ++ int err = zng_deflateInit2(&zst, level, DEFLATED, wbits, DEF_MEM_LEVEL, + Z_DEFAULT_STRATEGY); + + switch (err) { +@@ -363,7 +363,7 @@ zlib_compress_impl(PyObject *module, Py_buffer *data, int level, int wbits) + PyErr_SetString(state->ZlibError, "Bad compression level"); + goto error; + default: +- deflateEnd(&zst); ++ zng_deflateEnd(&zst); + zlib_error(state, zst, err, "while compressing data"); + goto error; + } +@@ -375,17 +375,17 @@ zlib_compress_impl(PyObject *module, Py_buffer *data, int level, int wbits) + do { + if (zst.avail_out == 0) { + if (OutputBuffer_Grow(&buffer, &zst.next_out, &zst.avail_out) < 0) { +- deflateEnd(&zst); ++ zng_deflateEnd(&zst); + goto error; + } + } + + Py_BEGIN_ALLOW_THREADS +- err = deflate(&zst, flush); ++ err = zng_deflate(&zst, flush); + Py_END_ALLOW_THREADS + + if (err == Z_STREAM_ERROR) { +- deflateEnd(&zst); ++ zng_deflateEnd(&zst); + zlib_error(state, zst, err, "while compressing data"); + goto error; + } +@@ -396,7 +396,7 @@ zlib_compress_impl(PyObject *module, Py_buffer *data, int level, int wbits) + } while (flush != Z_FINISH); + assert(err == Z_STREAM_END); + +- err = deflateEnd(&zst); ++ err = zng_deflateEnd(&zst); + if (err == Z_OK) { + return_value = OutputBuffer_Finish(&buffer, zst.avail_out); + if (return_value == NULL) { +@@ -434,7 +434,7 @@ zlib_decompress_impl(PyObject *module, Py_buffer *data, int wbits, + Byte *ibuf; + Py_ssize_t ibuflen; + int err, flush; +- z_stream zst; ++ zng_stream zst; + _BlocksOutputBuffer buffer = {.list = NULL}; + _Uint32Window window; // output buffer's UINT32_MAX sliding window + +@@ -460,7 +460,7 @@ zlib_decompress_impl(PyObject *module, Py_buffer *data, int wbits, + zst.zfree = PyZlib_Free; + zst.avail_in = 0; + zst.next_in = ibuf; +- err = inflateInit2(&zst, wbits); ++ err = zng_inflateInit2(&zst, wbits); + + switch (err) { + case Z_OK: +@@ -470,7 +470,7 @@ zlib_decompress_impl(PyObject *module, Py_buffer *data, int wbits, + "Out of memory while decompressing data"); + goto error; + default: +- inflateEnd(&zst); ++ zng_inflateEnd(&zst); + zlib_error(state, zst, err, "while preparing to decompress data"); + goto error; + } +@@ -483,13 +483,13 @@ zlib_decompress_impl(PyObject *module, Py_buffer *data, int wbits, + if (zst.avail_out == 0) { + if (OutputBuffer_WindowGrow(&buffer, &window, + &zst.next_out, &zst.avail_out) < 0) { +- inflateEnd(&zst); ++ zng_inflateEnd(&zst); + goto error; + } + } + + Py_BEGIN_ALLOW_THREADS +- err = inflate(&zst, flush); ++ err = zng_inflate(&zst, flush); + Py_END_ALLOW_THREADS + + switch (err) { +@@ -498,12 +498,12 @@ zlib_decompress_impl(PyObject *module, Py_buffer *data, int wbits, + case Z_STREAM_END: + break; + case Z_MEM_ERROR: +- inflateEnd(&zst); ++ zng_inflateEnd(&zst); + PyErr_SetString(PyExc_MemoryError, + "Out of memory while decompressing data"); + goto error; + default: +- inflateEnd(&zst); ++ zng_inflateEnd(&zst); + zlib_error(state, zst, err, "while decompressing data"); + goto error; + } +@@ -514,12 +514,12 @@ zlib_decompress_impl(PyObject *module, Py_buffer *data, int wbits, + + + if (err != Z_STREAM_END) { +- inflateEnd(&zst); ++ zng_inflateEnd(&zst); + zlib_error(state, zst, err, "while decompressing data"); + goto error; + } + +- err = inflateEnd(&zst); ++ err = zng_inflateEnd(&zst); + if (err != Z_OK) { + zlib_error(state, zst, err, "while finishing decompression"); + goto error; +@@ -583,14 +583,14 @@ zlib_compressobj_impl(PyObject *module, int level, int method, int wbits, + self->zst.zfree = PyZlib_Free; + self->zst.next_in = NULL; + self->zst.avail_in = 0; +- int err = deflateInit2(&self->zst, level, method, wbits, memLevel, strategy); ++ int err = zng_deflateInit2(&self->zst, level, method, wbits, memLevel, strategy); + switch (err) { + case Z_OK: + self->is_initialised = 1; + if (zdict->buf == NULL) { + goto success; + } else { +- err = deflateSetDictionary(&self->zst, ++ err = zng_deflateSetDictionary(&self->zst, + zdict->buf, (unsigned int)zdict->len); + switch (err) { + case Z_OK: +@@ -635,7 +635,7 @@ set_inflate_zdict(zlibstate *state, compobject *self) + return -1; + } + int err; +- err = inflateSetDictionary(&self->zst, ++ err = zng_inflateSetDictionary(&self->zst, + zdict_buf.buf, (unsigned int)zdict_buf.len); + PyBuffer_Release(&zdict_buf); + if (err != Z_OK) { +@@ -680,7 +680,7 @@ zlib_decompressobj_impl(PyObject *module, int wbits, PyObject *zdict) + if (zdict != NULL) { + self->zdict = Py_NewRef(zdict); + } +- int err = inflateInit2(&self->zst, wbits); ++ int err = zng_inflateInit2(&self->zst, wbits); + switch (err) { + case Z_OK: + self->is_initialised = 1; +@@ -708,7 +708,7 @@ zlib_decompressobj_impl(PyObject *module, int wbits, PyObject *zdict) + } + + static void +-compobject_dealloc_impl(PyObject *op, int (*dealloc)(z_streamp)) ++compobject_dealloc_impl(PyObject *op, int (*dealloc)(zng_streamp)) + { + PyTypeObject *type = Py_TYPE(op); + PyObject_GC_UnTrack(op); +@@ -736,13 +736,13 @@ compobject_traverse(PyObject *op, visitproc visit, void *arg) + static void + Comp_dealloc(PyObject *op) + { +- compobject_dealloc_impl(op, &deflateEnd); ++ compobject_dealloc_impl(op, &zng_deflateEnd); + } + + static void + Decomp_dealloc(PyObject *op) + { +- compobject_dealloc_impl(op, &inflateEnd); ++ compobject_dealloc_impl(op, &zng_inflateEnd); + } + + /*[clinic input] +@@ -790,7 +790,7 @@ zlib_Compress_compress_impl(compobject *self, PyTypeObject *cls, + } + + Py_BEGIN_ALLOW_THREADS +- err = deflate(&self->zst, Z_NO_FLUSH); ++ err = zng_deflate(&self->zst, Z_NO_FLUSH); + Py_END_ALLOW_THREADS + + if (err == Z_STREAM_ERROR) { +@@ -925,7 +925,7 @@ zlib_Decompress_decompress_impl(compobject *self, PyTypeObject *cls, + } + + Py_BEGIN_ALLOW_THREADS +- err = inflate(&self->zst, Z_SYNC_FLUSH); ++ err = zng_inflate(&self->zst, Z_SYNC_FLUSH); + Py_END_ALLOW_THREADS + + switch (err) { +@@ -1023,7 +1023,7 @@ zlib_Compress_flush_impl(compobject *self, PyTypeObject *cls, int mode) + } + + Py_BEGIN_ALLOW_THREADS +- err = deflate(&self->zst, mode); ++ err = zng_deflate(&self->zst, mode); + Py_END_ALLOW_THREADS + + if (err == Z_STREAM_ERROR) { +@@ -1037,7 +1037,7 @@ zlib_Compress_flush_impl(compobject *self, PyTypeObject *cls, int mode) + various data structures. Note we should only get Z_STREAM_END when + mode is Z_FINISH, but checking both for safety*/ + if (err == Z_STREAM_END && mode == Z_FINISH) { +- err = deflateEnd(&self->zst); ++ err = zng_deflateEnd(&self->zst); + if (err != Z_OK) { + zlib_error(state, self->zst, err, "while finishing compression"); + goto error; +@@ -1090,7 +1090,7 @@ zlib_Compress_copy_impl(compobject *self, PyTypeObject *cls) + * We use ENTER_ZLIB / LEAVE_ZLIB to make this thread-safe + */ + ENTER_ZLIB(self); +- int err = deflateCopy(&return_value->zst, &self->zst); ++ int err = zng_deflateCopy(&return_value->zst, &self->zst); + switch (err) { + case Z_OK: + break; +@@ -1174,7 +1174,7 @@ zlib_Decompress_copy_impl(compobject *self, PyTypeObject *cls) + * We use ENTER_ZLIB / LEAVE_ZLIB to make this thread-safe + */ + ENTER_ZLIB(self); +- int err = inflateCopy(&return_value->zst, &self->zst); ++ int err = zng_inflateCopy(&return_value->zst, &self->zst); + switch (err) { + case Z_OK: + break; +@@ -1303,7 +1303,7 @@ zlib_Decompress_flush_impl(compobject *self, PyTypeObject *cls, + } + + Py_BEGIN_ALLOW_THREADS +- err = inflate(&self->zst, flush); ++ err = zng_inflate(&self->zst, flush); + Py_END_ALLOW_THREADS + + switch (err) { +@@ -1328,7 +1328,7 @@ zlib_Decompress_flush_impl(compobject *self, PyTypeObject *cls, + if (err == Z_STREAM_END) { + self->eof = 1; + self->is_initialised = 0; +- err = inflateEnd(&self->zst); ++ err = zng_inflateEnd(&self->zst); + if (err != Z_OK) { + zlib_error(state, self->zst, err, "while finishing decompression"); + goto abort; +@@ -1352,7 +1352,7 @@ zlib_Decompress_flush_impl(compobject *self, PyTypeObject *cls, + + typedef struct { + PyObject_HEAD +- z_stream zst; ++ zng_stream zst; + PyObject *zdict; + PyThread_type_lock lock; + PyObject *unused_data; +@@ -1382,7 +1382,7 @@ ZlibDecompressor_dealloc(PyObject *op) + ZlibDecompressor *self = ZlibDecompressor_CAST(op); + PyThread_free_lock(self->lock); + if (self->is_initialised) { +- inflateEnd(&self->zst); ++ zng_inflateEnd(&self->zst); + } + PyMem_Free(self->input_buffer); + Py_CLEAR(self->unused_data); +@@ -1414,7 +1414,7 @@ set_inflate_zdict_ZlibDecompressor(zlibstate *state, ZlibDecompressor *self) + return -1; + } + int err; +- err = inflateSetDictionary(&self->zst, ++ err = zng_inflateSetDictionary(&self->zst, + zdict_buf.buf, (unsigned int)zdict_buf.len); + PyBuffer_Release(&zdict_buf); + if (err != Z_OK) { +@@ -1519,7 +1519,7 @@ decompress_buf(ZlibDecompressor *self, Py_ssize_t max_length) + break; + } + Py_BEGIN_ALLOW_THREADS +- err = inflate(&self->zst, Z_SYNC_FLUSH); ++ err = zng_inflate(&self->zst, Z_SYNC_FLUSH); + Py_END_ALLOW_THREADS + switch (err) { + case Z_OK: _Py_FALLTHROUGH; +@@ -1542,7 +1542,7 @@ decompress_buf(ZlibDecompressor *self, Py_ssize_t max_length) + self->is_initialised = 0; + /* Unlike the Decompress object we call inflateEnd here as there are no + backwards compatibility issues */ +- err = inflateEnd(&self->zst); ++ err = zng_inflateEnd(&self->zst); + if (err != Z_OK) { + zlib_error(state, self->zst, err, "while finishing decompression"); + goto error; +@@ -1779,7 +1779,7 @@ ZlibDecompressor__new__(PyTypeObject *cls, + PyErr_SetString(PyExc_MemoryError, "Unable to allocate lock"); + return NULL; + } +- int err = inflateInit2(&(self->zst), wbits); ++ int err = zng_inflateInit2(&(self->zst), wbits); + switch (err) { + case Z_OK: + self->is_initialised = 1; +@@ -1888,14 +1888,14 @@ zlib_adler32_impl(PyObject *module, Py_buffer *data, unsigned int value) + /* Avoid truncation of length for very large buffers. adler32() takes + length as an unsigned int, which may be narrower than Py_ssize_t. */ + while ((size_t)len > UINT_MAX) { +- value = adler32(value, buf, UINT_MAX); ++ value = zng_adler32(value, buf, UINT_MAX); + buf += (size_t) UINT_MAX; + len -= (size_t) UINT_MAX; + } +- value = adler32(value, buf, (unsigned int)len); ++ value = zng_adler32(value, buf, (unsigned int)len); + Py_END_ALLOW_THREADS + } else { +- value = adler32(value, data->buf, (unsigned int)data->len); ++ value = zng_adler32(value, data->buf, (unsigned int)data->len); + } + return PyLong_FromUnsignedLong(value & 0xffffffffU); + } +@@ -1934,15 +1934,15 @@ zlib_crc32_impl(PyObject *module, Py_buffer *data, unsigned int value) + # error "unsupported less than 32-bit platform?" + #endif + while ((size_t)len > ZLIB_CRC_CHUNK_SIZE) { +- value = crc32(value, buf, ZLIB_CRC_CHUNK_SIZE); ++ value = zng_crc32(value, buf, ZLIB_CRC_CHUNK_SIZE); + buf += (size_t) ZLIB_CRC_CHUNK_SIZE; + len -= (size_t) ZLIB_CRC_CHUNK_SIZE; + } + #undef ZLIB_CRC_CHUNK_SIZE +- value = crc32(value, buf, (unsigned int)len); ++ value = zng_crc32(value, buf, (unsigned int)len); + Py_END_ALLOW_THREADS + } else { +- value = crc32(value, data->buf, (unsigned int)data->len); ++ value = zng_crc32(value, data->buf, (unsigned int)data->len); + } + return value; + } +@@ -2134,11 +2134,11 @@ zlib_exec(PyObject *mod) + ZLIB_ADD_INT_MACRO(Z_TREES); + #endif + if (PyModule_Add(mod, "ZLIB_VERSION", +- PyUnicode_FromString(ZLIB_VERSION)) < 0) { ++ PyUnicode_FromString("1.3.1.zlib-ng")) < 0) { + return -1; + } + if (PyModule_Add(mod, "ZLIB_RUNTIME_VERSION", +- PyUnicode_FromString(zlibVersion())) < 0) { ++ PyUnicode_FromString("1.3.1.zlib-ng")) < 0) { + return -1; + } + #ifdef ZLIBNG_VERSION +-- +2.51.0 + From 1d9b96d81ee11e156ab691876a1097188de4e1b2 Mon Sep 17 00:00:00 2001 From: Mark Harfouche Date: Sat, 1 Nov 2025 20:15:19 -0400 Subject: [PATCH 2/2] MNT: Re-rendered with conda-smithy 3.52.3 and conda-forge-pinning 2025.11.01.15.03.42 Other tools: - conda-build 25.9.0 - rattler-build 0.49.0 - rattler-build-conda-compat 1.4.9 --- ...sconda-forge_python_debugfreethreadingno.yaml | 4 ++-- ...conda-forge_python_debugfreethreadingyes.yaml | 4 ++-- ...l_targetsconda-forge_mainfreethreadingno.yaml | 4 ++-- ..._targetsconda-forge_mainfreethreadingyes.yaml | 4 ++-- ...sconda-forge_python_debugfreethreadingno.yaml | 4 ++-- ...conda-forge_python_debugfreethreadingyes.yaml | 4 ++-- ...l_targetsconda-forge_mainfreethreadingno.yaml | 4 ++-- ..._targetsconda-forge_mainfreethreadingyes.yaml | 4 ++-- ...sconda-forge_python_debugfreethreadingno.yaml | 4 ++-- ...conda-forge_python_debugfreethreadingyes.yaml | 4 ++-- ...l_targetsconda-forge_mainfreethreadingno.yaml | 4 ++-- ..._targetsconda-forge_mainfreethreadingyes.yaml | 4 ++-- .ci_support/migrations/libffi35.yaml | 8 -------- ...sconda-forge_python_debugfreethreadingno.yaml | 4 ++-- ...conda-forge_python_debugfreethreadingyes.yaml | 4 ++-- ...l_targetsconda-forge_mainfreethreadingno.yaml | 4 ++-- ..._targetsconda-forge_mainfreethreadingyes.yaml | 4 ++-- ...sconda-forge_python_debugfreethreadingno.yaml | 4 ++-- ...conda-forge_python_debugfreethreadingyes.yaml | 4 ++-- ...l_targetsconda-forge_mainfreethreadingno.yaml | 4 ++-- ..._targetsconda-forge_mainfreethreadingyes.yaml | 4 ++-- .ci_support/win_64_freethreadingno.yaml | 4 ++-- .ci_support/win_64_freethreadingyes.yaml | 4 ++-- README.md | 16 ++++++++-------- 24 files changed, 52 insertions(+), 60 deletions(-) delete mode 100644 .ci_support/migrations/libffi35.yaml diff --git a/.ci_support/linux_64_build_typedebugchannel_targetsconda-forge_python_debugfreethreadingno.yaml b/.ci_support/linux_64_build_typedebugchannel_targetsconda-forge_python_debugfreethreadingno.yaml index 37593b055..514db3378 100644 --- a/.ci_support/linux_64_build_typedebugchannel_targetsconda-forge_python_debugfreethreadingno.yaml +++ b/.ci_support/linux_64_build_typedebugchannel_targetsconda-forge_python_debugfreethreadingno.yaml @@ -53,7 +53,7 @@ zip_keys: - channel_targets - - c_compiler_version - cxx_compiler_version -zlib: -- '1' +zlib_ng: +- '2.2' zstd: - '1.5' diff --git a/.ci_support/linux_64_build_typedebugchannel_targetsconda-forge_python_debugfreethreadingyes.yaml b/.ci_support/linux_64_build_typedebugchannel_targetsconda-forge_python_debugfreethreadingyes.yaml index b1b3ad18a..68a580a71 100644 --- a/.ci_support/linux_64_build_typedebugchannel_targetsconda-forge_python_debugfreethreadingyes.yaml +++ b/.ci_support/linux_64_build_typedebugchannel_targetsconda-forge_python_debugfreethreadingyes.yaml @@ -53,7 +53,7 @@ zip_keys: - channel_targets - - c_compiler_version - cxx_compiler_version -zlib: -- '1' +zlib_ng: +- '2.2' zstd: - '1.5' diff --git a/.ci_support/linux_64_build_typereleasechannel_targetsconda-forge_mainfreethreadingno.yaml b/.ci_support/linux_64_build_typereleasechannel_targetsconda-forge_mainfreethreadingno.yaml index df48c0233..4529ad9c3 100644 --- a/.ci_support/linux_64_build_typereleasechannel_targetsconda-forge_mainfreethreadingno.yaml +++ b/.ci_support/linux_64_build_typereleasechannel_targetsconda-forge_mainfreethreadingno.yaml @@ -53,7 +53,7 @@ zip_keys: - channel_targets - - c_compiler_version - cxx_compiler_version -zlib: -- '1' +zlib_ng: +- '2.2' zstd: - '1.5' diff --git a/.ci_support/linux_64_build_typereleasechannel_targetsconda-forge_mainfreethreadingyes.yaml b/.ci_support/linux_64_build_typereleasechannel_targetsconda-forge_mainfreethreadingyes.yaml index e610789ca..20ab849aa 100644 --- a/.ci_support/linux_64_build_typereleasechannel_targetsconda-forge_mainfreethreadingyes.yaml +++ b/.ci_support/linux_64_build_typereleasechannel_targetsconda-forge_mainfreethreadingyes.yaml @@ -53,7 +53,7 @@ zip_keys: - channel_targets - - c_compiler_version - cxx_compiler_version -zlib: -- '1' +zlib_ng: +- '2.2' zstd: - '1.5' diff --git a/.ci_support/linux_aarch64_build_typedebugchannel_targetsconda-forge_python_debugfreethreadingno.yaml b/.ci_support/linux_aarch64_build_typedebugchannel_targetsconda-forge_python_debugfreethreadingno.yaml index fd15ad542..fc217ef78 100644 --- a/.ci_support/linux_aarch64_build_typedebugchannel_targetsconda-forge_python_debugfreethreadingno.yaml +++ b/.ci_support/linux_aarch64_build_typedebugchannel_targetsconda-forge_python_debugfreethreadingno.yaml @@ -53,7 +53,7 @@ zip_keys: - channel_targets - - c_compiler_version - cxx_compiler_version -zlib: -- '1' +zlib_ng: +- '2.2' zstd: - '1.5' diff --git a/.ci_support/linux_aarch64_build_typedebugchannel_targetsconda-forge_python_debugfreethreadingyes.yaml b/.ci_support/linux_aarch64_build_typedebugchannel_targetsconda-forge_python_debugfreethreadingyes.yaml index 1b77335e7..dc066e220 100644 --- a/.ci_support/linux_aarch64_build_typedebugchannel_targetsconda-forge_python_debugfreethreadingyes.yaml +++ b/.ci_support/linux_aarch64_build_typedebugchannel_targetsconda-forge_python_debugfreethreadingyes.yaml @@ -53,7 +53,7 @@ zip_keys: - channel_targets - - c_compiler_version - cxx_compiler_version -zlib: -- '1' +zlib_ng: +- '2.2' zstd: - '1.5' diff --git a/.ci_support/linux_aarch64_build_typereleasechannel_targetsconda-forge_mainfreethreadingno.yaml b/.ci_support/linux_aarch64_build_typereleasechannel_targetsconda-forge_mainfreethreadingno.yaml index 9438623ec..11fb8612b 100644 --- a/.ci_support/linux_aarch64_build_typereleasechannel_targetsconda-forge_mainfreethreadingno.yaml +++ b/.ci_support/linux_aarch64_build_typereleasechannel_targetsconda-forge_mainfreethreadingno.yaml @@ -53,7 +53,7 @@ zip_keys: - channel_targets - - c_compiler_version - cxx_compiler_version -zlib: -- '1' +zlib_ng: +- '2.2' zstd: - '1.5' diff --git a/.ci_support/linux_aarch64_build_typereleasechannel_targetsconda-forge_mainfreethreadingyes.yaml b/.ci_support/linux_aarch64_build_typereleasechannel_targetsconda-forge_mainfreethreadingyes.yaml index 94c391015..98c267716 100644 --- a/.ci_support/linux_aarch64_build_typereleasechannel_targetsconda-forge_mainfreethreadingyes.yaml +++ b/.ci_support/linux_aarch64_build_typereleasechannel_targetsconda-forge_mainfreethreadingyes.yaml @@ -53,7 +53,7 @@ zip_keys: - channel_targets - - c_compiler_version - cxx_compiler_version -zlib: -- '1' +zlib_ng: +- '2.2' zstd: - '1.5' diff --git a/.ci_support/linux_ppc64le_build_typedebugchannel_targetsconda-forge_python_debugfreethreadingno.yaml b/.ci_support/linux_ppc64le_build_typedebugchannel_targetsconda-forge_python_debugfreethreadingno.yaml index 1aab323bc..d37dcaace 100644 --- a/.ci_support/linux_ppc64le_build_typedebugchannel_targetsconda-forge_python_debugfreethreadingno.yaml +++ b/.ci_support/linux_ppc64le_build_typedebugchannel_targetsconda-forge_python_debugfreethreadingno.yaml @@ -51,7 +51,7 @@ zip_keys: - channel_targets - - c_compiler_version - cxx_compiler_version -zlib: -- '1' +zlib_ng: +- '2.2' zstd: - '1.5' diff --git a/.ci_support/linux_ppc64le_build_typedebugchannel_targetsconda-forge_python_debugfreethreadingyes.yaml b/.ci_support/linux_ppc64le_build_typedebugchannel_targetsconda-forge_python_debugfreethreadingyes.yaml index 874f4a813..8d442b8a8 100644 --- a/.ci_support/linux_ppc64le_build_typedebugchannel_targetsconda-forge_python_debugfreethreadingyes.yaml +++ b/.ci_support/linux_ppc64le_build_typedebugchannel_targetsconda-forge_python_debugfreethreadingyes.yaml @@ -51,7 +51,7 @@ zip_keys: - channel_targets - - c_compiler_version - cxx_compiler_version -zlib: -- '1' +zlib_ng: +- '2.2' zstd: - '1.5' diff --git a/.ci_support/linux_ppc64le_build_typereleasechannel_targetsconda-forge_mainfreethreadingno.yaml b/.ci_support/linux_ppc64le_build_typereleasechannel_targetsconda-forge_mainfreethreadingno.yaml index fae135ea5..aa89dd19d 100644 --- a/.ci_support/linux_ppc64le_build_typereleasechannel_targetsconda-forge_mainfreethreadingno.yaml +++ b/.ci_support/linux_ppc64le_build_typereleasechannel_targetsconda-forge_mainfreethreadingno.yaml @@ -51,7 +51,7 @@ zip_keys: - channel_targets - - c_compiler_version - cxx_compiler_version -zlib: -- '1' +zlib_ng: +- '2.2' zstd: - '1.5' diff --git a/.ci_support/linux_ppc64le_build_typereleasechannel_targetsconda-forge_mainfreethreadingyes.yaml b/.ci_support/linux_ppc64le_build_typereleasechannel_targetsconda-forge_mainfreethreadingyes.yaml index 70dcd3114..40f48edd1 100644 --- a/.ci_support/linux_ppc64le_build_typereleasechannel_targetsconda-forge_mainfreethreadingyes.yaml +++ b/.ci_support/linux_ppc64le_build_typereleasechannel_targetsconda-forge_mainfreethreadingyes.yaml @@ -51,7 +51,7 @@ zip_keys: - channel_targets - - c_compiler_version - cxx_compiler_version -zlib: -- '1' +zlib_ng: +- '2.2' zstd: - '1.5' diff --git a/.ci_support/migrations/libffi35.yaml b/.ci_support/migrations/libffi35.yaml deleted file mode 100644 index cccfdc464..000000000 --- a/.ci_support/migrations/libffi35.yaml +++ /dev/null @@ -1,8 +0,0 @@ -__migrator: - build_number: 1 - commit_message: Rebuild for libffi 3.5 - kind: version - migration_number: 1 -libffi: -- '3.5' -migrator_ts: 1760302128.4447467 diff --git a/.ci_support/osx_64_build_typedebugchannel_targetsconda-forge_python_debugfreethreadingno.yaml b/.ci_support/osx_64_build_typedebugchannel_targetsconda-forge_python_debugfreethreadingno.yaml index 05ac199c9..e4c79b71a 100644 --- a/.ci_support/osx_64_build_typedebugchannel_targetsconda-forge_python_debugfreethreadingno.yaml +++ b/.ci_support/osx_64_build_typedebugchannel_targetsconda-forge_python_debugfreethreadingno.yaml @@ -55,7 +55,7 @@ zip_keys: - channel_targets - - c_compiler_version - cxx_compiler_version -zlib: -- '1' +zlib_ng: +- '2.2' zstd: - '1.5' diff --git a/.ci_support/osx_64_build_typedebugchannel_targetsconda-forge_python_debugfreethreadingyes.yaml b/.ci_support/osx_64_build_typedebugchannel_targetsconda-forge_python_debugfreethreadingyes.yaml index 2f973fde2..00f9f4467 100644 --- a/.ci_support/osx_64_build_typedebugchannel_targetsconda-forge_python_debugfreethreadingyes.yaml +++ b/.ci_support/osx_64_build_typedebugchannel_targetsconda-forge_python_debugfreethreadingyes.yaml @@ -55,7 +55,7 @@ zip_keys: - channel_targets - - c_compiler_version - cxx_compiler_version -zlib: -- '1' +zlib_ng: +- '2.2' zstd: - '1.5' diff --git a/.ci_support/osx_64_build_typereleasechannel_targetsconda-forge_mainfreethreadingno.yaml b/.ci_support/osx_64_build_typereleasechannel_targetsconda-forge_mainfreethreadingno.yaml index 745a1635f..af9bc2d25 100644 --- a/.ci_support/osx_64_build_typereleasechannel_targetsconda-forge_mainfreethreadingno.yaml +++ b/.ci_support/osx_64_build_typereleasechannel_targetsconda-forge_mainfreethreadingno.yaml @@ -55,7 +55,7 @@ zip_keys: - channel_targets - - c_compiler_version - cxx_compiler_version -zlib: -- '1' +zlib_ng: +- '2.2' zstd: - '1.5' diff --git a/.ci_support/osx_64_build_typereleasechannel_targetsconda-forge_mainfreethreadingyes.yaml b/.ci_support/osx_64_build_typereleasechannel_targetsconda-forge_mainfreethreadingyes.yaml index e4b541998..8ff15b2aa 100644 --- a/.ci_support/osx_64_build_typereleasechannel_targetsconda-forge_mainfreethreadingyes.yaml +++ b/.ci_support/osx_64_build_typereleasechannel_targetsconda-forge_mainfreethreadingyes.yaml @@ -55,7 +55,7 @@ zip_keys: - channel_targets - - c_compiler_version - cxx_compiler_version -zlib: -- '1' +zlib_ng: +- '2.2' zstd: - '1.5' diff --git a/.ci_support/osx_arm64_build_typedebugchannel_targetsconda-forge_python_debugfreethreadingno.yaml b/.ci_support/osx_arm64_build_typedebugchannel_targetsconda-forge_python_debugfreethreadingno.yaml index 4c14dd0b8..fe4bebd52 100644 --- a/.ci_support/osx_arm64_build_typedebugchannel_targetsconda-forge_python_debugfreethreadingno.yaml +++ b/.ci_support/osx_arm64_build_typedebugchannel_targetsconda-forge_python_debugfreethreadingno.yaml @@ -55,7 +55,7 @@ zip_keys: - channel_targets - - c_compiler_version - cxx_compiler_version -zlib: -- '1' +zlib_ng: +- '2.2' zstd: - '1.5' diff --git a/.ci_support/osx_arm64_build_typedebugchannel_targetsconda-forge_python_debugfreethreadingyes.yaml b/.ci_support/osx_arm64_build_typedebugchannel_targetsconda-forge_python_debugfreethreadingyes.yaml index 5a9fff19a..a62ab7d1e 100644 --- a/.ci_support/osx_arm64_build_typedebugchannel_targetsconda-forge_python_debugfreethreadingyes.yaml +++ b/.ci_support/osx_arm64_build_typedebugchannel_targetsconda-forge_python_debugfreethreadingyes.yaml @@ -55,7 +55,7 @@ zip_keys: - channel_targets - - c_compiler_version - cxx_compiler_version -zlib: -- '1' +zlib_ng: +- '2.2' zstd: - '1.5' diff --git a/.ci_support/osx_arm64_build_typereleasechannel_targetsconda-forge_mainfreethreadingno.yaml b/.ci_support/osx_arm64_build_typereleasechannel_targetsconda-forge_mainfreethreadingno.yaml index 8589dd2fe..02bf94453 100644 --- a/.ci_support/osx_arm64_build_typereleasechannel_targetsconda-forge_mainfreethreadingno.yaml +++ b/.ci_support/osx_arm64_build_typereleasechannel_targetsconda-forge_mainfreethreadingno.yaml @@ -55,7 +55,7 @@ zip_keys: - channel_targets - - c_compiler_version - cxx_compiler_version -zlib: -- '1' +zlib_ng: +- '2.2' zstd: - '1.5' diff --git a/.ci_support/osx_arm64_build_typereleasechannel_targetsconda-forge_mainfreethreadingyes.yaml b/.ci_support/osx_arm64_build_typereleasechannel_targetsconda-forge_mainfreethreadingyes.yaml index 01f363958..356f31e63 100644 --- a/.ci_support/osx_arm64_build_typereleasechannel_targetsconda-forge_mainfreethreadingyes.yaml +++ b/.ci_support/osx_arm64_build_typereleasechannel_targetsconda-forge_mainfreethreadingyes.yaml @@ -55,7 +55,7 @@ zip_keys: - channel_targets - - c_compiler_version - cxx_compiler_version -zlib: -- '1' +zlib_ng: +- '2.2' zstd: - '1.5' diff --git a/.ci_support/win_64_freethreadingno.yaml b/.ci_support/win_64_freethreadingno.yaml index 85976e397..c1f76492b 100644 --- a/.ci_support/win_64_freethreadingno.yaml +++ b/.ci_support/win_64_freethreadingno.yaml @@ -37,7 +37,7 @@ tk: zip_keys: - - build_type - channel_targets -zlib: -- '1' +zlib_ng: +- '2.2' zstd: - '1.5' diff --git a/.ci_support/win_64_freethreadingyes.yaml b/.ci_support/win_64_freethreadingyes.yaml index 9a079f9f6..796b00d63 100644 --- a/.ci_support/win_64_freethreadingyes.yaml +++ b/.ci_support/win_64_freethreadingyes.yaml @@ -37,7 +37,7 @@ tk: zip_keys: - - build_type - channel_targets -zlib: -- '1' +zlib_ng: +- '2.2' zstd: - '1.5' diff --git a/README.md b/README.md index 78eed68b8..48d0ae387 100644 --- a/README.md +++ b/README.md @@ -235,14 +235,14 @@ Current release info Installing python ================= -Installing `python` from the `conda-forge` channel can be achieved by adding `conda-forge` to your channels with: +Installing `python` from the `conda-forge/label/python_debug` channel can be achieved by adding `conda-forge/label/python_debug` to your channels with: ``` -conda config --add channels conda-forge +conda config --add channels conda-forge/label/python_debug conda config --set channel_priority strict ``` -Once the `conda-forge` channel has been enabled, `cpython, libpython-static, python, python-freethreading, python-gil, python-jit` can be installed with `conda`: +Once the `conda-forge/label/python_debug` channel has been enabled, `cpython, libpython-static, python, python-freethreading, python-gil, python-jit` can be installed with `conda`: ``` conda install cpython libpython-static python python-freethreading python-gil python-jit @@ -257,26 +257,26 @@ mamba install cpython libpython-static python python-freethreading python-gil py It is possible to list all of the versions of `cpython` available on your platform with `conda`: ``` -conda search cpython --channel conda-forge +conda search cpython --channel conda-forge/label/python_debug ``` or with `mamba`: ``` -mamba search cpython --channel conda-forge +mamba search cpython --channel conda-forge/label/python_debug ``` Alternatively, `mamba repoquery` may provide more information: ``` # Search all versions available on your platform: -mamba repoquery search cpython --channel conda-forge +mamba repoquery search cpython --channel conda-forge/label/python_debug # List packages depending on `cpython`: -mamba repoquery whoneeds cpython --channel conda-forge +mamba repoquery whoneeds cpython --channel conda-forge/label/python_debug # List dependencies of `cpython`: -mamba repoquery depends cpython --channel conda-forge +mamba repoquery depends cpython --channel conda-forge/label/python_debug ```