Skip to content

PKG-17802 — Python 3.15.0rc2 - #257

Open
skupr-anaconda wants to merge 8 commits into
masterfrom
PKG-17802-py315rc2
Open

PKG-17802 — Python 3.15.0rc2#257
skupr-anaconda wants to merge 8 commits into
masterfrom
PKG-17802-py315rc2

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:

  • Bump CPython 3.15.0rc1 → 3.15.0rc2 (sha256 8d93af5e…).
  • Refresh/remap patches vs v3.15.0rc2 (0020, 0024 pid_t, 0027 unixy Windows, 0028 zlib-ng, 0029 xxlimited; keep AR 0023 branding).
  • Windows install layout matches 0027 getpath (lib\python, include\python).
  • Drop sitecustomize.py python3.1 path (conda#10969). It was a leftover we were not aware.
  • CBC zip-clobber python/numpy/is_freethreading/is_python_min so PY_VER=3.15. Keep gil_type.
  • drop the unused 0004 extra file from PKG-17264 — Python 3.15.0rc1 (master-replay) #249; keep getpath only. It aligns with CF

Notes:

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.
Linter cannot expand this recipe; skip is by design (same as prior py315 graphs).
Comment thread recipe/meta.yaml
- patches/0017-Do-not-pass-g-to-GCC-when-not-Py_DEBUG.patch
- patches/0018-Unvendor-expat.patch
- patches/0019-Remove-unused-readelf.patch
- patches/0020-Don-t-checksharedmods-if-cross-compiling.patch

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Keeping it here because it's always confusing where 0020 is. But we can comment it out.

skupr-anaconda added a commit that referenced this pull request Sep 4, 2026
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.
@skupr-anaconda
skupr-anaconda marked this pull request as ready for review September 7, 2026 09:03
Comment thread recipe/build_base.bat Outdated
Comment on lines +154 to +163
:: Populate the libs directory (and lib, matching CF unixy layout)
for %%x in (lib libs) do (
if not exist %PREFIX%\%%x mkdir %PREFIX%\%%x
if exist %SRC_DIR%\PCbuild\%BUILD_PATH%\python%VERNODOTS%%THREAD%%_D%.lib copy /Y %SRC_DIR%\PCbuild\%BUILD_PATH%\python%VERNODOTS%%THREAD%%_D%.lib %PREFIX%\%%x\
if errorlevel 1 exit 1
if exist %SRC_DIR%\PCbuild\%BUILD_PATH%\python3%THREAD%%_D%.lib copy /Y %SRC_DIR%\PCbuild\%BUILD_PATH%\python3%THREAD%%_D%.lib %PREFIX%\%%x\
if errorlevel 1 exit 1
if exist %SRC_DIR%\PCbuild\%BUILD_PATH%\_tkinter%_D%.lib copy /Y %SRC_DIR%\PCbuild\%BUILD_PATH%\_tkinter%_D%.lib %PREFIX%\%%x\
if errorlevel 1 exit 1
)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Isn't the point of the unixy layout that there is no libs any more as it is now lib?

And, noting the other changes, I'm not seeing lib\python, only (the equivalent of) %PREFIX%\lib.

I think you've conflated the previous layout with the new layout and tried to use both.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh wait. These are the import libraries for Python and Tk which want to be in lib (or libs?) for the compiler to find at build time as opposed to the executable parts that python is going to be looking for at runtime.

It's all a bit squirrelly.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

They drop it in the dev branch https://github.com/conda-forge/python-feedstock/blob/dev/recipe/build_base.bat#L175-L182

Should we be following that instead of main?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, I should copy import libs only to %PREFIX%\lib\ to match CF.

And replace libs\python to lib\python in tests on Windows

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

They drop it in the dev branch conda-forge/python-feedstock@dev/recipe/build_base.bat#L175-L182

Should we be following that instead of main?

It was 2 months ago for rc1 https://github.com/conda-forge/python-feedstock/blob/dev/recipe/meta.yaml#L2

I'm already confused with all of that renaming/replacing/droping lib here, libs there....

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For the record.
We already have the right Windows layout:

  1. stdlib == lib\python\
  2. import .lib goes to → %PREFIX%\lib\ and we test lib\python315.lib in the test section.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So... no libs, then? 😆

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For the record:
Python 3.15 rc2 artifact check revealed that Unix looks solid, but we had a win-64 problem.

Setuptools, distutils, meson-python, and Python <3.11 unconditionally look for import libs in {exec_prefix}\libs, and conda-forge nuked that directory.

CF ships both again —we should too. C-extension packages downstream depend on it.
I reverted that change to restore the libs\ copy while keeping the lib\ stdlib fix.

Everything else lines up or is an intentional AR choice. #256 will add the libpython3.dylib symlink on macOS while we're at it.

@skupr-anaconda skupr-anaconda Sep 9, 2026

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@cbouss
Reference URLs — Python 3.15 rc2 AR vs CF alignment

Comment thread recipe/sitecustomize.py
Comment on lines -17 to -18
# Workaround for https://github.com/conda/conda/issues/10969
dirs_to_add.append(os.path.join(sys.prefix, 'lib', f'python3.1', 'site-packages'))

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yikes! There was more?

Unixy 0027 layout matches conda-forge; stdlib stays in lib\python\.
@skupr-anaconda

Copy link
Copy Markdown
Author

@ifitchet I aligned more lines with CF :)

distutils/setuptools build_ext hardcodes exec_prefix\libs on nt; meson
cannot query the import-lib dir (PEP 739 oversight). Matches conda-forge
PR 918 and the published rc2 win-64 artifacts (lib\ + libs\).
Upstream Makefile only creates libpython3.so on linux; macOS has no rule.
Build the re-export dylib like CF install_shared.sh and assert it in tests.
@skupr-anaconda

skupr-anaconda commented Sep 9, 2026

Copy link
Copy Markdown
Author

AR python-feedstock historical commit (db61f52) — Original introduction of _sysconfigdata_x86_64_conda_cos6_linux_gnu.py naming in our recipe.

We should get rid of it too and align with CF and compilers https://github.com/AnacondaRecipes/ctng-compiler-activation-feedstock/blob/main/recipe/conda_build_config.yaml#L119

The cosN-named file was a 2020-era shim (db61f52) for CDT compilers.
Current gcc_linux-64 15.2.0 activation defaults to the modern
_sysconfigdata_x86_64_conda_linux_gnu name, same as conda-forge.
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.

2 participants