Skip to content

Release pipeline for v0.1.0#24

Merged
Frikallo merged 2 commits into
mainfrom
release/v0.1.0-pipeline
Apr 25, 2026
Merged

Release pipeline for v0.1.0#24
Frikallo merged 2 commits into
mainfrom
release/v0.1.0-pipeline

Conversation

@Frikallo
Copy link
Copy Markdown
Owner

Release pipeline for v0.1.0

Closes #21 (the prebuilt-binaries + Xcode/CLT-doc parts).

What this adds

  • scripts/package_release.sh — local-first packaging script. Configures with AXIOM_DIST_BUILD=ON (which statically links libomp/libgomp/OpenBLAS into libaxiom), builds, stages a bin/ + lib/ + include/ tree, fixes rpaths (install_name_tool on macOS, patchelf on Linux), and refuses to ship if otool -L/ldd shows a host-path leak. Designed to be runnable on a developer machine so packaging changes can be validated before pushing tags.
  • .github/workflows/release.yml — matrix workflow (macos-14 / macos-13 / ubuntu-22.04). Each job calls the script. A final job creates the GitHub release and attaches all three tarballs. Triggers on v* tag push, plus workflow_dispatch for manual test runs (no release created on dispatch).
  • README — new "Install" section pointing at releases with the xattr -dr com.apple.quarantine recipe; "Build from source" gains the one-line note that macOS source builds need full Xcode (not just CLT) because of xcrun metal / xcrun metallib. That covers ask (3) from the issue.
  • .gitignore — adds build-release/ and dist/ (script outputs, never committed).

Tarball layout

parakeet-v0.1.0-<os>-<arch>/
├── bin/
│   ├── parakeet
│   └── example-server
├── lib/
│   ├── libaxiom.<ver>.{dylib,so}
├── include/parakeet/...
├── README.md
└── LICENSE

Runtime deps after dist build:

  • macOS: Metal, Foundation, MPS, MPSGraph, libc++, libSystem (all system).
  • Linux: libstdc++, libc, libpthread (all system).

The Metal .metallib is embedded into libaxiom.dylib via axiom's existing AXIOM_EMBED_METAL_LIBRARY=ON. Runtime uses newLibraryWithData:, which is part of the macOS Metal framework — no Xcode or CLT required on the user side.

What was validated locally (macos-arm64)

  • Script ran clean.
  • Tarball extracted to /tmp runs bin/parakeet --help (exit 0).
  • otool -L shows no /opt/homebrew paths and no repo-absolute paths; @rpath/libaxiom.0.dylib resolves via the bundled lib.
  • End-to-end: real model + real audio with --gpu produced the expected transcript ("Well, I don't wish to see it any more, observed Phoebe..."), encoder ran in 11ms — embedded .metallib worked through newLibraryWithData: from the relocated tarball.

Add a GitHub Actions release workflow that builds release artifacts on macOS and Linux (matrix), uploads platform-specific tarballs, and creates a GitHub release for pushed v* tags. Introduce scripts/package_release.sh to configure/build in a distribution mode, stage binaries/libs, fix rpaths (macOS/Linux), verify no leaked host paths, and produce dist/parakeet-<version>-<os>-<arch>.tar.gz. Update .gitignore to exclude build-release/ and dist/.
@Frikallo Frikallo self-assigned this Apr 25, 2026
@Frikallo Frikallo merged commit d144d28 into main Apr 25, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Distribution: ship prebuilt releases (and Homebrew formula)

1 participant