Skip to content

Commit

Permalink
Publish to test.pypi.org
Browse files Browse the repository at this point in the history
Example artifacts: https://test.pypi.org/project/klr/0.0.3/#files

This was a bit of work, but now we're publishing to test pypi.
  • Loading branch information
seanmcl committed Feb 11, 2025
1 parent 8c78aab commit 6915fb3
Show file tree
Hide file tree
Showing 2 changed files with 96 additions and 0 deletions.
43 changes: 43 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -56,3 +56,46 @@ jobs:
with:
name: cibw-wheels-${{ matrix.os }}-${{ strategy.job-index }}
path: ./.wheel/wheelhouse/*.whl
if-no-files-found: error

# Mostly followed guides here:
# - https://github.com/pypa/gh-action-pypi-publish?tab=readme-ov-file
# - https://packaging.python.org/en/latest/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows/
# NB: I needed to set the trusted publisher to repo NKL, not KLR, since that was its original name. Scary detail! No idea how I'd figure that out without knowing the original name.
publish-to-testpypi:
name: Publish Python 🐍 distribution 📦 to TestPyPI
needs:
- build
runs-on: ubuntu-latest

environment:
name: testpypi

permissions:
id-token: write # IMPORTANT: mandatory for trusted publishing

steps:
- uses: actions/checkout@v4 # for scripts

- name: Download all the dists
uses: actions/download-artifact@v4
with:
# name: python-package-distributions
# # unpacks all CIBW artifacts into dist/
# pattern: cibw-*
path: dist/
merge-multiple: true

- name: List the wheels
run: |
ls -1 dist/
- name: Rename OSX wheels
working-directory: ./dist
run: ../bin/rename-wheels # .. because we are starting in ./dist

- name: Publish distribution 📦 to TestPyPI
uses: pypa/gh-action-pypi-publish@release/v1
with:
repository-url: https://test.pypi.org/legacy/
verbose: true
53 changes: 53 additions & 0 deletions bin/rename-wheels
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
#!/bin/bash
set -e -u -o pipefail
trap "kill 0" SIGINT SIGTERM

# Used to rename wheels before uploading wheels to pypi

# pypi can't handle the 99.0 version tags. We need to move those back to versions it is OK with
# While sketch in the extreme, this should hopefully work. Why?
# - The step that fails without the 99.0 bump is 'delocate' which looks for libs
# linked in at different versions.
# - Lean/Lake don't have external dependencies besides system libs
# https://leanprover.zulipchat.com/#narrow/channel/424609-lean-at-aws/topic/.E2.9C.94.20Build.20static.20binary
# I think this is likely a Lean/Lake bug: https://github.com/leanprover/lean4/pull/6631/files
# - We are setting the version back to the OS that it was compiled on.
# - Counterpoint to things being OK: it's true that there are only system libraries, then
# `delocate-wheel` shouldn't do anything, but then it's not clear why it's complaining
# about the 99.0 min version of Lean.


# Example output of ls -1:
# klr-0.0.3-cp310-cp310-macosx_99_0_arm64.whl
# klr-0.0.3-cp310-cp310-macosx_99_0_x86_64.whl
# klr-0.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
# klr-0.0.3-cp311-cp311-macosx_99_0_arm64.whl
# klr-0.0.3-cp311-cp311-macosx_99_0_x86_64.whl
# klr-0.0.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
# klr-0.0.3-cp312-cp312-macosx_99_0_arm64.whl
# klr-0.0.3-cp312-cp312-macosx_99_0_x86_64.whl
# klr-0.0.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
# klr-0.0.3-cp313-cp313-macosx_99_0_arm64.whl
# klr-0.0.3-cp313-cp313-macosx_99_0_x86_64.whl
# klr-0.0.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
# klr-0.0.3-cp38-cp38-macosx_99_0_arm64.whl
# klr-0.0.3-cp38-cp38-macosx_99_0_x86_64.whl
# klr-0.0.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
# klr-0.0.3-cp39-cp39-macosx_99_0_arm64.whl
# klr-0.0.3-cp39-cp39-macosx_99_0_x86_64.whl
# klr-0.0.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

x86_suffix=macosx_99_0_x86_64
arm_suffix=macosx_99_0_arm64
for file in *; do
if [[ "$file" == *"$x86_suffix"* ]]; then
newname=$(echo "$file" | sed "s/$x86_suffix/macosx_13_0_x86_64/g")
mv $file $newname
echo "Renamed: $file -> $newname"
fi
if [[ "$file" == *"$arm_suffix"* ]]; then
newname=$(echo "$file" | sed "s/$arm_suffix/macosx_14_0_arm64/g")
mv $file $newname
echo "Renamed: $file -> $newname"
fi
done

0 comments on commit 6915fb3

Please sign in to comment.