Skip to content

Libquil sbcl librarian runtime - #594

Draft
BatmanAoD wants to merge 7 commits into
mainfrom
libquil-sbcl-librarian-runtime
Draft

Libquil sbcl librarian runtime#594
BatmanAoD wants to merge 7 commits into
mainfrom
libquil-sbcl-librarian-runtime

Conversation

@BatmanAoD

Copy link
Copy Markdown
Contributor

No description provided.

BatmanAoD and others added 7 commits August 12, 2026 11:37
Formatting only, from running cargo fmt while working on the libquil build; no
behaviour change.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
… runtime

libquil-sys 0.5 links against the sbcl-librarian runtime that libquil is built on, so it
needs a libquil that installs that runtime and its headers alongside libquil.h. Releases
up to and including 0.3.2 ship neither, and CI was installing 0.3.0 with the installer
from rigetti/libquil's default branch, which does not install the runtime either.

That build exists so far only as a prerelease from a fork, so pin both the version and
the repository it comes from, and take the installer from the tag being installed rather
than from a branch. TODO(github.com/rigetti/libquil#57) tracks removing the pin.

scripts/install-libquil now installs only the prerequisites -- libquil's own BLAS and
LAPACK, plus libclang for bindgen -- and hands off to libquil's installer instead of
duplicating what it does. It covers macOS via Homebrew as well as apt-based Linux, and
stops with an explanation elsewhere. The libffi.so.7 compat symlink is gone: the current
build does not link libffi at all, let alone that soname.

BLAS and LAPACK come from the -dev packages deliberately. magicl loads them at runtime
under their unversioned names, so Debian's libblas3, which provides only libblas.so.3,
is not enough.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Cutting a prerelease from a branch tagged the wrong code. knope creates the GitHub
release against the default branch on the version this repository pins, so the version
bump landed on the branch while the tag landed on main, and the publish job -- which
checks out whatever that tag resolves to -- would then try to republish main's
already-released version.

Adopt what libquil-sys arrived at (545d05d):

- knope 0.23, which tags the ref being released;
- check out ${{ github.ref }} in prepare-release, so a dispatched release acts on the
  branch it was dispatched from;
- check out the release tag in release-library, so it publishes exactly what was tagged.

Verified against this branch with knope 0.23 locally: it now tags lib/v0.26.4-rc.0 at the
branch head rather than at main.

Add a changeset for the libquil-sys 0.5 dependency, which none of the branch's commit
types would have released on their own.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
release-python.yml checks out without naming a ref, so every job builds the release
event's target commitish rather than the tagged commit. A release cut from a branch would
build main's code and publish it under the branch's version, the same way release-library
would have republished main's version before it was fixed.

Point all seven checkouts at the release tag, falling back to the dispatched ref for a
manual run.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The prerelease carrying the sbcl-librarian runtime is now published from rigetti/libquil
itself (v0.4.0-rc.0, built by its own CI), so the fork it was coming from is going away.
Drop LIBQUIL_RELEASE_REPO and fetch the installer straight from the tag.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
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.

1 participant