Skip to content

Conversation

@phaarnes
Copy link
Contributor

@phaarnes phaarnes commented Jan 13, 2026

Fix CI workflow failures in release.yaml

Several issues are causing CI failures in the release workflow:

1. sdist job fails with "twine: error: invalid choice: 'check'"

Cause: conda-forge may install twine 1.11.0, which lacks the check subcommand (added in 1.12.0).

Fix: Change twine to twine>=1.12 in .github/workflows/release.yaml:

create-args: >-
  python-build
  twine>=1.12
  cython
  proj=${{ env.PROJ_VERSION }}

2. sdist job uses undefined matrix.proj-version

Cause: The make_sdist job references ${{ matrix.proj-version }} but has no matrix defined, causing proj= (empty version) to be passed to micromamba.

Fix: Change to ${{ env.PROJ_VERSION }} to use the workflow-level environment variable.

3. Windows 32-bit build fails with "Found GNU link.exe instead of MSVC link.exe"

Cause: Git's link.exe at C:\Program Files\Git\usr\bin\ is found before MSVC's link.exe during meson configuration.

Fix: Add CIBW_BEFORE_BUILD_WINDOWS to rename Git's link.exe before building:

CIBW_BEFORE_BUILD_WINDOWS: >
  python -m pip install delvewheel &&
  if exist "C:\Program Files\Git\usr\bin\link.exe" (rename "C:\Program Files\Git\usr\bin\link.exe" "link.exe.bak")

4. macOS builds take 1.5+ hours due to single-threaded PROJ compilation

Cause: ci/proj-compile-wheels.sh uses nproc which doesn't exist on macOS, causing cmake to default to single-threaded build.

Fix: Add cross-platform CPU detection in ci/proj-compile-wheels.sh:

# Detect number of CPU cores (cross-platform)
if command -v nproc &> /dev/null; then
    NPROC=$(nproc)
elif command -v sysctl &> /dev/null; then
    NPROC=$(sysctl -n hw.ncpu)
else
    NPROC=2
fi
cmake --build . -j${NPROC}

5. Free-threaded Python (3.13t/3.14t) builds segfault during tests

Cause: Cython extension crashes with segfault in __repr__ methods on free-threaded Python. This affects both Linux aarch64 and macOS x86_64.

Fix: Skip free-threaded builds with CIBW_SKIP until Cython's free-threading support matures:

CIBW_SKIP: "*t-*"

Note: I'm a bit on thin ice with skipping the free-threaded builds entirely. However, this was the only solution I found to avoid the segfaults. Open to suggestions for a better approach!


Closes #1570

@codecov
Copy link

codecov bot commented Jan 13, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 95.85%. Comparing base (b78a50d) to head (e81e5e5).
⚠️ Report is 44 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1571      +/-   ##
==========================================
- Coverage   96.55%   95.85%   -0.71%     
==========================================
  Files          20       20              
  Lines        1827     1880      +53     
==========================================
+ Hits         1764     1802      +38     
- Misses         63       78      +15     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@snowman2 snowman2 added test Test related issues cicd CICD Related labels Jan 13, 2026
@snowman2 snowman2 added this to the 3.8.0 milestone Jan 13, 2026
@snowman2 snowman2 merged commit c2e33ab into pyproj4:main Jan 13, 2026
27 checks passed
@snowman2
Copy link
Member

Thanks @phaarnes 👍. Mind creating an issue to track re-enabling multithreaded python?

@phaarnes
Copy link
Contributor Author

Thanks @phaarnes 👍. Mind creating an issue to track re-enabling multithreaded python?

Will do👍 Is there anything else that has to be fixed now before making a new release @snowman2 ?

@snowman2
Copy link
Member

Is there anything else that has to be fixed now before making a new release?

The main thing is having time to make a release. But, wouldn't hurt to update PROJ in the wheels before the next release.

@phaarnes
Copy link
Contributor Author

Is there anything else that has to be fixed now before making a new release?

The main thing is having time to make a release. But, wouldn't hurt to update PROJ in the wheels before the next release.

Yes, I understand. I can look into updating to PROJ 9.7.1 tomorrow and opening a PR👍

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

cicd CICD Related test Test related issues

Projects

None yet

Development

Successfully merging this pull request may close these issues.

CI workflow failures: sdist check, Windows build, macOS build time, and free-threaded Python

2 participants