Closed dhermes closed 5 months ago
Built all wheels via: https://github.com/dhermes/bezier/actions/runs/9608025437
To upload, I made a ~/.pypirc
for TestPyPI
[distutils]
index-servers =
testpypi
[testpypi]
username = __token__
password = pypi-Ag...
I downloaded all the files and put them in a shared artifacts/
directory, then uploaded via:
$ cd artifacts/
$ twine upload --repository testpypi *
depending on the "current" contents of ~/.pypirc
. Note that it's possible to have both testpypi
and pypi
index servers / repositories present at once, but I elected not to (and immediately deleted ~/.pypirc
after) to reduce the surface area for possible mistakes.
As part of the upload process, I also tagged the commit and pushed the tag:
git tag 2024.6.20
git push origin 2024.6.20
To make the actual release (https://github.com/dhermes/bezier/releases/tag/2024.6.20) in Markdown, I used pandoc
to convert:
$ cd docs/releases/
$ pandoc --standalone --output latest.md latest.rst
Even still it is imperfect because of line wrapping, so I manually edited the output (latest.md
) to just make every line VERY long (instead of doing line wrapping).
After pushing the tag, the TestPyPI release checked out (URLs in the release refer to the tag).
After this was validated, I changed ~/.pypirc
to the production pypi
index server:
[distutils]
index-servers =
pypi
[testpypi]
username = __token__
password = pypi-Ag...
and then uploaded via:
$ cd artifacts/
$ twine upload --repository pypi *
depending on the "current" contents of ~/.pypirc
. Note that it's possible to have both testpypi
and pypi
index servers / repositories present at once, but I elected not to (and immediately deleted ~/.pypirc
after) to reduce the surface area for possible mistakes.
Worth noting: I do not have easy access to macOS hardware running 10.9 (x86_64) or 11.0 (arm64). As a result, the only macOS wheels I built were on the macos-14
GitHub Actions runners.
This may be an issue for macOS users on earlier versions.
If someone has a request for earlier versions and hardware, I can likely help collaborate with them to get wheels built and uploaded to PyPI.
The biggest blocker to this is actually getting a version of gcc
that has a "minimum SDK version" of 10.9 / 11.0.
$ otool -l /opt/homebrew/Cellar/gcc/14.1.0_1/lib/gcc/14/libgfortran.5.dylib | grep -B 3 -A 5 minos
cmd LC_BUILD_VERSION
cmdsize 32
platform 1
minos 14.0
sdk n/a
ntools 1
tool 3
version 1053.12
Load command 11
See delocate
failure involving the gcc
(gfortran
) shared libraries for a concrete example.
I actually considered using old versions of the gcc
bottles (pre-built images specific to each version of macOS) but elected not to.
Populated templates via:
I'll be using this PR to post comments about the release process (for audit purposes).
See also #309 and #330