Skip to content

librefang 2026.6.29 (new formula)#290413

Merged
BrewTestBot merged 2 commits into
Homebrew:mainfrom
houko:librefang
Jul 8, 2026
Merged

librefang 2026.6.29 (new formula)#290413
BrewTestBot merged 2 commits into
Homebrew:mainfrom
houko:librefang

Conversation

@houko

@houko houko commented Jun 29, 2026

Copy link
Copy Markdown
Contributor

LibreFang is a self-hostable operating system for autonomous AI agents (Rust, MIT). Upstream: https://github.com/librefang/librefang — 316★ (self-submission notability threshold is 225★), first stable tag v2026.6.29. I am the upstream maintainer (self-submission). The formula builds from source and links the system openssl@3 (upstream enables openssl/vendored for its cross-compiled release artifacts; the formula sets OPENSSL_NO_VENDOR=1 so openssl-sys links Homebrew's OpenSSL instead of bundling one).


  • Have you followed the guidelines for contributing?
  • Have you ensured that your commits follow the commit style guide?
  • Have you checked that there aren't other open pull requests for the same formula update/change?
  • Have you built your formula locally with HOMEBREW_NO_INSTALL_FROM_API=1 brew install --build-from-source <formula>?
  • Is your test running fine brew test <formula>?
  • Does your build pass brew audit --strict <formula> (after doing HOMEBREW_NO_INSTALL_FROM_API=1 brew install --build-from-source <formula>)? If this is a new formula, does it pass brew audit --new <formula>?

  • AI was used to generate or assist with generating this PR. Please specify below how you used AI to help you, and what steps you have taken to manually verify the changes.

    Claude (Claude Code) drafted the formula and ran the local verification, which I reviewed before submitting:

    • brew style — clean (0 offenses).
    • HOMEBREW_NO_INSTALL_FROM_API=1 brew install --build-from-source librefang — succeeded (8m54s).
    • otool -L on the built binary — links /opt/homebrew/opt/openssl@3/lib/libssl.3.dylib + libcrypto.3.dylib (system OpenSSL via OPENSSL_NO_VENDOR=1, not a vendored copy).
    • brew test librefang — passes.
    • brew audit --strict --new --online librefang — passes.

    Verified on arm64 macOS (Tahoe).


@github-actions

Copy link
Copy Markdown
Contributor

Thanks for your pull request. This has been closed because it appears to use an incomplete or outdated pull request template.

Please edit this pull request to fill in the current pull request template. This workflow will reopen this pull request automatically once the template is complete. Do not open a new pull request for this.

@github-actions github-actions Bot closed this Jun 29, 2026
@github-actions github-actions Bot added new formula PR adds a new formula to Homebrew/homebrew-core rust Rust use is a significant feature of the PR or issue labels Jun 29, 2026
@github-actions github-actions Bot reopened this Jun 29, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Thanks for contributing to Homebrew! 🎉 It looks like you're having trouble with a CI failure. See our contribution guide for help. You may be most interested in the section on dealing with CI failures. You can find the CI logs in the Checks tab of your pull request.

@houko

houko commented Jun 29, 2026

Copy link
Copy Markdown
Contributor Author

The red checks here are artifacts of the brief auto-close → reopen cycle (incomplete template on first submission), not build failures:

  • The six platform jobs are cancelled, not failed — they were superseded when the PR was reopened (their uploaded bottle artifacts are 460 bytes, i.e. nothing was actually built).
  • check-bottle-block failed with a transient Failed to parse JSON response while the PR was momentarily closed; it's unrelated to the formula (this is a new formula with no bottle block).

The re-triggered CI / Actionlint runs are now in action_required, waiting on a maintainer to approve workflows (first-time contributor to this repo). Could a maintainer kick off a run when convenient?

Local verification on arm64 macOS, all clean:

  • HOMEBREW_NO_INSTALL_FROM_API=1 brew install --build-from-source librefang — built in 8m54s
  • brew test librefang — passes
  • brew audit --strict --new --online librefang — passes
  • brew style — 0 offenses
  • otool -L confirms the binary links the system openssl@3 (OPENSSL_NO_VENDOR=1 in the formula), not a vendored copy

Thanks!

@SMillerDev

Copy link
Copy Markdown
Member

The red checks here are artifacts of the brief auto-close → reopen cycle (incomplete template on first submission), not build failures:

It's definitely failing on linux

@houko

houko commented Jun 30, 2026

Copy link
Copy Markdown
Contributor Author

You're right — thanks. Root cause: librefang-cli transitively pulls libdbus-sys on Linux only (macOS uses native frameworks), which links the system D-Bus at build time. The formula was missing that dependency, so Linux failed in libdbus-sys's build script (The system library 'dbus-1' ... was not found).

Fixed in the latest push — added:

on_linux do
  depends_on "dbus"
end

Verified by reproducing the Linux build in a clean rust container with only the formula's declared deps (pkgconf, openssl@3 via OPENSSL_NO_VENDOR=1) plus dbus: cargo build --release -p librefang-cli finishes successfully (release, 7m30s). Without dbus it fails exactly at libdbus-sys.

Could you re-approve the workflows when you have a moment? Sorry for the earlier noise from the close/reopen cycle.

Comment thread Formula/lib/librefang.rb Outdated
Comment thread Formula/lib/librefang.rb Outdated
Comment thread Formula/lib/librefang.rb Outdated
Comment thread Formula/lib/librefang.rb Outdated
@houko

houko commented Jun 30, 2026

Copy link
Copy Markdown
Contributor Author

Thanks for the review — addressed all points in the latest push:

  • Removed the livecheck block. You're right; there are no GitHub pre-releases and the default git-tag strategy's version regex already skips the -beta/-rc tags.

  • Removed the inline comments.

  • Real test instead of --version. It now runs the non-interactive librefang init --quick and asserts the generated config exists:

    test do
      ENV["HOME"] = testpath
      system bin/"librefang", "init", "--quick"
      assert_path_exists testpath/".librefang/config.toml"
    end

    Verified locally with brew test (and brew style / brew audit --strict --new are clean).

The Linux dbus dependency from the previous round is retained.

@houko
houko requested a review from SMillerDev July 1, 2026 11:40
@SMillerDev
SMillerDev removed their request for review July 1, 2026 11:41
Comment thread Formula/lib/librefang.rb Outdated
@daeho-ro daeho-ro added the ready to merge PR can be merged once CI is green label Jul 7, 2026
@houko
houko requested review from SMillerDev and daeho-ro July 7, 2026 14:20
@SMillerDev
SMillerDev requested review from daeho-ro and removed request for SMillerDev and daeho-ro July 7, 2026 14:25
Comment thread Formula/lib/librefang.rb Outdated
@github-actions github-actions Bot added the autosquash Automatically squash pull request commits according to Homebrew style. label Jul 8, 2026
@github-actions github-actions Bot removed the autosquash Automatically squash pull request commits according to Homebrew style. label Jul 8, 2026
@houko
houko requested a review from branchv July 8, 2026 03:25
@github-actions

github-actions Bot commented Jul 8, 2026

Copy link
Copy Markdown
Contributor

🤖 An automated task has requested bottles to be published to this PR.

Caution

Please do not push to this PR branch before the bottle commits have been pushed, as this results in a state that is difficult to recover from. If you need to resolve a merge conflict, please use a merge commit. Do not force-push to this PR branch.

@github-actions github-actions Bot added the CI-published-bottle-commits The commits for the built bottles have been pushed to the PR branch. label Jul 8, 2026
@BrewTestBot
BrewTestBot enabled auto-merge July 8, 2026 15:37
@BrewTestBot
BrewTestBot added this pull request to the merge queue Jul 8, 2026
Merged via the queue into Homebrew:main with commit ffae79e Jul 8, 2026
19 checks passed
@houko
houko deleted the librefang branch July 9, 2026 01:50
@houko
houko restored the librefang branch July 9, 2026 01:50
houko added a commit to librefang/librefang that referenced this pull request Jul 9, 2026
LibreFang's CLI formula was accepted into homebrew-core on 2026-07-08 (Homebrew/homebrew-core#290413), so `brew install librefang` now works with no tap.

Lead the Homebrew section with the official one-liner and a short celebration note linking the PR and the acceptance date. The desktop cask and beta/rc channels still ship through the librefang/tap, so those lines are retained under a follow-up block.

Applied consistently across all nine READMEs (English + de/es/fr/ja/ko/pl/uk/zh).

Co-authored-by: Evan <[email protected]>
houko added a commit to librefang/librefang that referenced this pull request Jul 9, 2026
…6416)

* ci(release): stop syncing the stable CLI formula to the tap

The stable CLI was accepted into homebrew-core (Homebrew/homebrew-core#290413), so `brew install librefang` now resolves there. Continuing to generate a stable `librefang` formula in librefang/homebrew-tap shadows the core formula and duplicates maintenance on every release.

Drop `stable` from the sync_homebrew channel set: a stable tag now cascades the newest build into the beta/rc channels only. The keg-only versioned formula (`librefang@<ver>`) is still generated for version pinning, and the cask sync job is untouched (the desktop app is not in core). ALL_CHANNELS stays `(stable beta rc)` so the beta/rc formulae keep their `conflicts_with "librefang"` line, which now points at the core formula.

Also fix the release-notes install block: the stable CLI line no longer sits under `brew tap`, it installs directly from homebrew-core; the tap line now covers only the pre-release CLI channels and the desktop app.

The tap-side cleanup (remove the orphaned stable formula, add tap_migrations.json, update the tap README) lands in librefang/homebrew-tap.

* docs(changelog): note the tap stable-formula sync removal (#6416)

* docs(readme): expand install-method sections by default

Add `open` to every install `<details>` (Homebrew, Arch, Docker, Cloud Deploy) across all nine READMEs so the install options render expanded instead of collapsed.

* ci(release): emit valid class names and single cask conflicts_with in tap sync

Two latent bugs in the Homebrew tap sync surfaced by `brew readall`:

- The version-pinned formula class name stripped only `.` (`tr -d '.'`), leaving the `-` in pre-release versions, so `[email protected]` generated `class LibrefangAT2026629-beta14 < Formula` — a Ruby syntax error. Derive it with Homebrew's own `Formulary.class_s` rules instead (`LibrefangAT2026629Beta14`).
- The cask generator wrote one `conflicts_with` stanza per other channel, but casks allow only one; collect the channels into a single array literal (`conflicts_with cask: ["librefang", "librefang-rc"]`). Fixed in both `release.yml` and its `release-desktop.yml` mirror.

The already-published broken tap artifacts are corrected in librefang/homebrew-tap.

---------

Co-authored-by: Evan <[email protected]>
houko added a commit to librefang/homebrew-tap that referenced this pull request Jul 9, 2026
* chore: move stable CLI to homebrew-core

LibreFang's stable CLI was accepted into homebrew-core (Homebrew/homebrew-core#290413), so `brew install librefang` now resolves there.

Remove the tap's stable `Formula/librefang.rb` (it shadowed the core formula) and add tap_migrations.json so existing `librefang/tap/librefang` installs migrate to homebrew/core on `brew upgrade`. Update the README to install the stable CLI from core and scope the tap to the desktop app, the pre-release CLI channels, and version pinning.

The desktop cask keeps the name `librefang`; formula and cask names coexist, and the migration entry only redirects the formula token. The beta/rc formulae, all casks, and the keg-only versioned formulae are unchanged.

The release pipeline stops regenerating the stable formula in librefang/librefang#6416.

* chore: fix invalid class names and cask conflicts_with in generated artifacts

These were emitted by the release pipeline's tap sync and are corrected upstream in librefang/librefang#6416.

- 40 version-pinned formulae had `class LibrefangAT<ver>-beta<N>` (a Ruby syntax error from leaving the `-` in the class name); regenerate the class names with Homebrew's `Formulary.class_s` rules (e.g. `LibrefangAT2026629Beta14`).
- The `librefang-beta` / `librefang-rc` casks carried two `conflicts_with` stanzas, which casks reject; collapse each into a single array literal.

`brew readall librefang/tap` now passes with zero errors.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CI-published-bottle-commits The commits for the built bottles have been pushed to the PR branch. new formula PR adds a new formula to Homebrew/homebrew-core ready to merge PR can be merged once CI is green rust Rust use is a significant feature of the PR or issue

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants