Skip to content

PKG-15601 — align python-feedstock with conda-forge - #256

Open
skupr-anaconda wants to merge 12 commits into
masterfrom
PKG-15601-cf-align
Open

PKG-15601 — align python-feedstock with conda-forge#256
skupr-anaconda wants to merge 12 commits into
masterfrom
PKG-15601-cf-align

Conversation

@skupr-anaconda

@skupr-anaconda skupr-anaconda commented Sep 4, 2026

Copy link
Copy Markdown

Destination channel: ad-testing/label/py315

Links

Explanation of changes:

  • Free-threading CBC: gil_typefreethreading / PY_FREETHREADING.
  • Unix build_type release/debug (not zipped with channel_targets; all variants → testing py315).
  • Split libpython*.so into libpython (install_shared.sh / install_static.sh). python no longer copies .so; SYSCONFIG from the shared build (CF LDLIBRARY is set to libpython3.9a although no static lib is included in mambaforge for Linux conda-forge/python-feedstock#565). ignore_run_exports_from cxx on libpython / libpython-static (unix overdepending).
  • Remaining CF topology: cpython noarch, python_site_packages_path, drop from_source_control / bootstrap. Deleted unused build_static.sh / build_static.bat.
  • Prefix-replacement tests match CF (case $PKG_NAME: static or shared, not rm *.a then relink).
  • Script align with CF main recipe: JIT configure glob *"-64" (aarch64 off), native build-details.json copy, CF cross/debug-channel blocks left commented, Py_SetProgramName commented (3.13+). CF conda-site.pth missing-dir patch as 0030.
  • Frozen AR-delta vs CF: -ltcl9tk / Win TclVersion=%tk% (tk 9.0.4, not CF 8.6 — keep _tkinter%_D%.lib, not %THREAD%), llvm-ar-21, python-bin -c main, compiler_compat path, 0023 Anaconda branding, 0028 zlib-ng, 0029 xxlimited, no _python_rc, testing dest.

Notes:

  • Stacked on PKG-17802 — Python 3.15.0rc2 #257 until that merges. Do not merge this PR first (would ship rc2+align as one).
  • Upload dest stays ad-testing/label/py315. Do not merge to pkgs/main.
  • Linter: parsing_jinja_failure skipped (freethreading / dummy channel_targets jinja). Known linter limitation (same as PKG-17802 — Python 3.15.0rc2 #257 / b6d1ab86); skip does not always green the linter task.
  • python-jit is noarch; run_test_jit.py skips when the interpreter was built without JIT (debug / FT / non-x86_64). CF has no jit test section.
  • sitecustomize.py: dropped python3.1 path (conda#10969). Version-less lib/python/site-packages pth still omitted (numba); 0030 is in place if that pth is restored later.

Remap vs conda-forge: add 0020/0024-pid_t/0026-GIL-win/0027 unixy Windows;
keep AR 0023 branding; move zlib-ng to 0028 and xxlimited to 0029.
Bump rc1→rc2 + sha256. Install Windows stdlib/headers to lib\python and
include\python (0027 getpath). Drop sitecustomize python3.1 path
(conda#10969). CBC zip-clobber python/numpy/is_freethreading/is_python_min
so PY_VER=3.15. Keep gil_type.
Replace gil_type with freethreading yes/no. Scripts and meta read
PY_FREETHREADING. Keep unixy Windows layout from rc2. No debug matrix yet.
CBC build_type release/debug on unix only. Do not zip with channel_targets;
all variants stay on ad-testing/label/py315.
install_shared.sh + install_static.sh. python output no longer copies
libpython*.so/.dylib (C16). SYSCONFIG from shared build so extensions
prefer .so (C17). test ! -f libpython*.so only with the split.
cpython noarch, python_site_packages_path, drop from_source_control/bootstrap,
CF tests/cmake ABI args. Keep AR-delta: tcl9tk, llvm-ar-21, 0023 branding,
0028 zlib-ng, 0029 xxlimited, testing dest, no _python_rc.
Ignore cxx run_exports on libpython/libpython-static (unix overdepending).
Skip python-jit when freethreading=yes. Skip parsing_jinja_failure like
#257. Drop dead skip_compile_pyc cross-compile selector.
C17 makes python3-config --embed prefer .so; static test now links
libpython*.a explicitly and requires the libpython output for the
shared-embed half. python-jit is noarch — skip when the interpreter
was built without JIT (debug/FT/non-x86).
conda-forge splits the script by PKG_NAME: libpython → shared embed only,
libpython-static → static embed only. Our old AR path deleted *.a then
tried a shared embed in an env with no libpython.so. Match CF.
JIT glob *\"-64\" (aarch64 off). Drop Travis tee. Comment CF cross/debug-channel
blocks. Copy build-details.json. CF conda-site.pth patch as 0030. Comment out
Py_SetProgramName. Delete unused build_static.sh/bat. Skip CF _tkinter %THREAD%
(tk 9.0.4, not 8.6).
…ion 6).

The dual lib\ + libs\ copy was already here; pin it with tests and a
comment so it is not "cleaned up" as old-layout cruft: distutils/setuptools
build_ext hardcodes exec_prefix\libs on nt (conda-forge PR 918).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant