Commit Graph
151 Commits
Author SHA1 Message Date
Erik GomezandClaude Opus 4.7 0614679e4e Add Python 3.9 holdbacks for 12 more packages
A broader requires_python sweep against PyPI showed that the latest
versions of black, cfgv, click, filelock, flake8-bugbear, identify,
isort, platformdirs, pre-commit, pycparser, requests, and urllib3 all
declare requires_python >= 3.10. Pip on Python 3.9 refused to resolve
the requirements file partway through; the build halted at black.

For each affected package, pin the latest 3.9-compatible release for
the < 3.10 branch and keep the current latest for >= 3.10. Verified
that 3.10, 3.11, 3.12, 3.13, 3.14 are unaffected — no packages
exclude those versions at their latest pins.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-12 12:21:27 -05:00
Erik GomezandClaude Opus 4.7 3f9727a848 Remove orphaned requirement_files/ directory
24 files of stale, pre-pinned versions (pyobjc 9.0.1, requests 2.31.0,
urllib3 1.26.18, etc.) that no active script or workflow referenced.
The flat top-level requirements_recommended.txt has been the only
source of truth for pip during the build; the aggregator file
(requirement_files/requirements_recommended.txt) and its 23 per-package
source files were leftovers from an abandoned "compose flat
requirements" workflow. Several files (arrow.txt, boto.txt, Sphinx.txt,
funcsigs.txt, atomicwrites.txt, etc.) were only used by the
'opinionated' flavor list already removed earlier in this branch.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-12 12:21:27 -05:00
Erik GomezandClaude Opus 4.7 24bd176b9d Document validation findings in design spec and plan
Five things we learned during local validation that the original
docs didn't anticipate:
- PYTHON_BASEURL needs three %s slots (relocatable-python passes
  version, version, os-version)
- mkdir -m 777 doesn't apply mode to existing dirs; need explicit chmod
- --no-unsign disabled relocatable-python's own re-sign step and
  caused Apple Silicon Gatekeeper SIGKILLs at ensurepip time
- Signed pkg must move to outputs/ before cleanup() runs
- pyobjc 12.1 requires Python >= 3.10; 3.9 needs holdback to 11.1

Also confirmed all upstream SHAs (relocatable-python, munki-pkg) and
all 37 Python package pins are at latest available as of 2026-05-11.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-12 12:21:27 -05:00
Erik Gomez c06e814a4b Mark 3.9 and 3.10 as final releases; switch to long-flag script invocation 2026-05-12 12:21:27 -05:00
Erik Gomez 1f9922e5b8 Add Python 3.14.5 build workflow 2026-05-12 12:21:27 -05:00
Erik Gomez 39c591a2df Bump 3.11/3.12/3.13 to latest patches; switch to long-flag script invocation 2026-05-12 12:21:27 -05:00
Erik Gomez 982881aa74 Enable Dependabot for GitHub Actions 2026-05-12 12:21:27 -05:00
Erik GomezandClaude Opus 4.7 7773030dd3 Drop --no-unsign and bump RP_SHA to 8ee72fe
The --no-unsign flag was disabling relocatable-python's own
fix_broken_signatures step (locallibs/fix.py), which ad-hoc re-signs
every binary modified by install_name_tool before ensurepip runs.
That's the exact code path needed to satisfy Apple Silicon Gatekeeper.

The flag's stated purpose ('don't touch the python.org signature') was
never achievable — install_name_tool invalidates the signature whether
you tell relocatable-python to handle it or not. Keeping --no-unsign
just left the binary in a broken signed state, which Gatekeeper SIGKILLs.

Bumping RP_SHA to 8ee72fe simultaneously, since the prior pin
(fb4dd9b) had the same code path and was only kept while investigating.
The newer SHA additionally sets CPPFLAGS for pip, useful for packages
with native extensions.

Closes the local equivalent of gregneagle/relocatable-python#32 for our
build pipeline.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-12 12:21:26 -05:00
Erik GomezandClaude Opus 4.7 10a76b1e0b Revert RP_SHA to fb4dd9b (last known-good for Apple Silicon)
The newer relocatable-python commit 8ee72fe (Oct 2024, adds symlink
path handling) causes ensurepip to die with SIGKILL on Apple Silicon
during the framework build: install_name_tool invalidates the
binary's code signature, and ensurepip runs before any re-sign step,
so Gatekeeper kills the process.

A prior bump attempt was already reverted in this repo (commit d8db8a2,
PR #67) — sticking with fb4dd9b until upstream addresses the
ad-hoc-resign-before-ensurepip flow.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-12 12:21:26 -05:00
Erik GomezandClaude Opus 4.7 700848e195 Force writable perms on existing FRAMEWORKDIR
mkdir -m 777 only applies the mode to newly created directories.
If /Library/ManagedFrameworks/Python already exists from a prior
install with stricter perms, the un-sudo'd relocatable-python
tool fails with 'Permission denied' when writing the framework.
Add an explicit chmod after mkdir.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-12 12:21:26 -05:00
Erik GomezandClaude Sonnet 4.6 73f524e279 Bump Python package pins to latest with cp313 arm64 wheels
All 37 packages in requirements_recommended.txt updated to their
latest versions confirmed to ship cp313-compatible macOS wheels
(arm64 direct or universal2) or pure-Python wheels for Python 3.13.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-12 12:21:26 -05:00
Erik GomezandClaude Opus 4.7 91480efece Fix PYTHON_BASEURL format string slot count
The refactor baked 'macos11' into the URL as a literal, leaving only
two %s slots. relocatable-python's locallibs/get.py expects three:
(version, version, os-version). The mismatch raised
'TypeError: not all arguments converted during string formatting'
during framework download.

Restore the third %s; --os-version 11 is already passed to the
make_relocatable_python_framework.py invocation.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-12 12:21:26 -05:00
Erik Gomez 560b0b4969 Update README for Apple Silicon, single-flavor build 2026-05-12 12:21:26 -05:00
Erik Gomez e4ea005ddd Remove minimal and no_customization build flavors 2026-05-12 12:21:26 -05:00
Erik Gomez 3525f58f97 Drop --no-binary directives (use prebuilt arm64 wheels) 2026-05-12 12:21:26 -05:00
Erik Gomez 85599c237f Move signed pkg to outputs/ before notarization
Fixes regression where a signed-but-unnotarized .pkg was built into
the staging dir and then deleted by cleanup() without ever reaching
outputs/. The pre-refactor script moved the .pkg unconditionally
after munkipkg succeeded; the refactor lost that mv when it was
consolidated into notarize_and_staple().
2026-05-12 12:21:26 -05:00
Erik Gomez 24bebe07a6 Refactor build script for Apple Silicon
- Drop universal2 enforcement; arm64 wheels used directly
- Single 'recommended' flavor; remove minimal/no_customization branches
- Long-flag arguments; derive major version from full version
- Functions: parse_args, prepare_build_dirs, download_tool,
  build_framework, codesign_framework, build_pkg,
  notarize_and_staple, zip_framework, cleanup
- Collapse signed/ad-hoc codesign duplication; fixes latent path bug
- Bump relocatable-python and munki-pkg SHAs
- Gate CI-only steps (brew remove, xcode-select) on $CI
2026-05-12 12:21:26 -05:00
Erik GomezandClaude Opus 4.7 31813eef39 Add Apple Silicon modernization implementation plan
12 tasks covering Phase 1 (script rewrite, --no-binary removal,
flavor deletion, README, local validation on 3.13.13 and 3.14.5)
and Phase 2 (patch bumps, 3.14 enablement, 3.9/3.10 final-release
notes, pip pin sweep, Dependabot, manual release dispatches).

Phase 3 (CI consolidation, runner migration, action bumps) is
out of scope; Task 7 includes a stopgap so existing workflows keep
calling the refactored script.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-12 12:21:26 -05:00
Erik GomezandClaude Opus 4.7 b060a58130 Add Apple Silicon modernization design spec
Phases 1 and 2: refactor build script to drop universal2 enforcement
and run natively on Apple Silicon, bump upstream SHAs and Python
versions, add 3.14, final-release 3.9 and 3.10. CI/CD overhaul
deferred to Phase 3.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-12 12:21:26 -05:00
Erik Gomez 4e70c3ec77 fix yaml 2026-05-12 12:21:13 -05:00
Erik Gomez 4313548774 bump rest to macos 14 to build final intel releases 2026-05-12 12:07:34 -05:00
Erik Gomez 90f098580d pytokens as well 2026-05-12 11:39:09 -05:00
Erik Gomez fe7c2ff9a6 Add no-binary option for mypy-extensions 2026-05-12 11:18:20 -05:00
Erik Gomez 565db7fee9 Update build environment to macOS 14 2026-05-12 11:02:31 -05:00
Erik Gomez c39db790f6 Update macOS version for build workflow 2026-05-12 11:02:19 -05:00
Erik Gomez 553880e3d9 cherry pick python updates for last universal release 2026-05-12 10:54:52 -05:00
Erik Gomez 59e63bc220 Update requirements_recommended.txt 2025-06-25 10:01:30 -05:00
Nate Walck d8db8a2c54 Revert Relocatable Python hash bump (#67)
Revert RP hash to see if it fixes the build
2025-06-25 09:41:15 -05:00
Allister Banks 9c344405f3 Add Python 3.13 ci job and update actions
* 2025 updates try 2

no _logic_ changes, just version bumps and 3.13 support/default - some commented-out _potential_ fixes and explanatory text

* copy pasta

3.13

* undo commented-outs

revorted

* moar copy-pasta

😅
2025-06-25 10:28:05 -04:00
Erik Gomez 5e5340aaa0 cleanup old scripts and move to --no-rcs shebang (#59) 2024-03-14 10:49:48 -05:00
Erik Gomez cd4759da9e Attempt to use new python bin path for symlinks (#58) 2024-02-23 13:08:11 -06:00
Erik Gomez 34dc7836ea it didnt work, keep new shim 2024-02-02 13:21:41 -06:00
Erik Gomez db82baae98 attempt to use the shebang for 3.11 and 3.12 2024-02-02 13:08:21 -06:00
Erik Gomez 34d2ff0b7b cleanup old frameworks preinstall 2024-02-02 13:08:08 -06:00
Erik Gomez 9b80e1dc69 fix PYTHON_MAJOR_VERSION calls 2024-02-02 10:39:54 -06:00
Erik Gomez f23b147e49 try and fix managed_python3 issue 2024-02-02 10:34:34 -06:00
Erik Gomez b6959b9227 fix other envvar for notarization 2024-02-01 17:32:54 -06:00
Erik Gomez 00a2ba6713 fix notary secrets 2024-02-01 14:33:25 -06:00
Erik Gomez b8a523c3ac lrn2zsh 2024-02-01 14:06:01 -06:00
Erik Gomez ce8f7aa642 remove duplicate toolsdir 2024-02-01 12:45:27 -06:00
Erik Gomez 08d0ad0138 charset --no-binary as well 2024-02-01 11:58:21 -06:00
Erik Gomez 8c45c8dc88 do not use so files for black 2024-02-01 11:49:07 -06:00
Erik Gomez 015c8e2c13 move the universal check higher up 2024-02-01 11:22:39 -06:00
Erik Gomez 0742f40c83 update python packages for minimal and recommended 2024-02-01 10:41:17 -06:00
Erik Gomez a9c3bba87b attempt to use a shim for managed_python3 on python 3.11 and 3.12 2024-02-01 10:05:25 -06:00
Erik Gomez 4139760ebb add major version env_var 2024-02-01 10:04:59 -06:00
Erik Gomez 942ef72c73 create python 3.12 workflow 2024-02-01 09:42:18 -06:00
Erik Gomez a1f0821585 update python 3.11 release 2024-02-01 09:42:09 -06:00
Erik Gomez 0cbeab8236 update to macos 13 ci/cd 2024-02-01 09:42:00 -06:00
Erik Gomez 179802d684 last version of python 3.10 2024-02-01 09:36:22 -06:00