Skip to content

Add CI workflow to test brew install - #2

Open
pokryfka wants to merge 4 commits into
mainfrom
add-ci-workflow
Open

pokryfka wants to merge 4 commits into
mainfrom
add-ci-workflow

Conversation

@pokryfka

Copy link
Copy Markdown
Owner

Summary

Test plan


Generated by Claude Code

claude added 3 commits July 10, 2026 04:40
Runs `brew install --build-from-source` + `brew test` on the
platform combinations the formula's resource blocks target: macOS
arm64 and Linux arm64/x64.

Kept on its own branch/PR since main doesn't have Formula/dcode.rb
yet (PR #1) — merge that first so this workflow has something to
install once it lands.
brew no longer allows installing a formula from an arbitrary file
path (confirmed against Homebrew/discussions#6427) — it was silently
misparsing our absolute path as a tap shorthand and failing with
"No available formula or cask". Tap the checked-out directory
(brew tap pokryfka/dcode "$GITHUB_WORKSPACE") first, then install by
name. Also bumps the deprecated setup-homebrew@master reference to
@main.
Homebrew/actions/setup-homebrew already auto-detects the homebrew-*
repo naming convention and symlinks this checkout in as the
pokryfka/dcode tap itself. Our explicit `brew tap ... "$GITHUB_WORKSPACE"`
step was retapping the same tap with a different remote, causing
"Tap pokryfka/dcode remote mismatch".
@pokryfka pokryfka mentioned this pull request Jul 10, 2026
1 of 2 tasks
pokryfka added a commit that referenced this pull request Jul 10, 2026
Homebrew's Language::Python::Virtualenv#pip_install always invokes
pip with --no-binary=:all:, and only special-cases wheels tagged
exactly *-py3-none-any.whl (installed by direct file path, bypassing
the flag). Any other wheel gets staged as a directory and pip fails
with "Neither 'setup.py' nor 'pyproject.toml' found" -- confirmed by
PR #2's CI failing on bsdiff4's manylinux wheel.

Rework the formula as a hybrid: pure-Python packages keep their
py3-none-any wheel (fast, no compile); the 25 packages with native
extensions (cryptography, pydantic-core, orjson, pillow, etc.) go
back to sdist and build from source, restoring the rust/freetype/
jpeg-turbo build dependencies. quickjs-rs keeps its wheel since it
bundles its own .wasm payloads (self-contained); wasmtime goes back
to sdist since its "any" wheel is just ctypes bindings with no
bundled native library. sqlite-vec (no sdist, no universal wheel)
is excluded from virtualenv_install_with_resources and staged/
installed manually in `install` instead, since Homebrew's resource
mechanism has no path that works for it at all.

Co-authored-by: Claude <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.

2 participants