Skip to content

expert: use recommended build method#276807

Open
AlternateRT wants to merge 1 commit intoHomebrew:mainfrom
AlternateRT:expert-plain-build
Open

expert: use recommended build method#276807
AlternateRT wants to merge 1 commit intoHomebrew:mainfrom
AlternateRT:expert-plain-build

Conversation

@AlternateRT
Copy link
Copy Markdown
Contributor


  • 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>?

This switches away from the burrito build method and moves towards the recommended plain one instead, which should address the points made in elixir-lang/expert#556 (comment) and elixir-lang/expert#557 (comment), and removes the zig and xz dependencies.

@github-actions github-actions bot added the erlang Erlang use is a significant feature of the PR or issue label Apr 9, 2026
@AlternateRT AlternateRT force-pushed the expert-plain-build branch 2 times, most recently from c5d549f to 67afc54 Compare April 9, 2026 15:41
Comment on lines +36 to +39
(bin/"expert").write <<~SHELL
#!/bin/sh
exec "#{libexec}/bin/expert" eval "System.no_halt(true); Application.ensure_all_started(:xp_expert)" "$@"
SHELL
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think homebrew having to maintain a shell script is a big regression and I think that should block this PR from merging.
The old way was an easy script where the whole install was maintained by upstream, this makes a bunch of it specific to Homebrew, where nobody is involved in the upstream project.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The old way was an easy script where the whole install was maintained by upstream

@SMillerDev The problem with the Burrito method was that it downloads its own precompiled Erlang binaries, which can fail if the Burrito project has not yet made said binaries, like it did here: https://github.com/Homebrew/homebrew-core/actions/runs/24078956292/job/70250704538?pr=276421#step:3:1662

There is also the issue that Burrito expects a patch-specific version of Zig to work. At the moment, that version happens to be latest one available (0.15.2 as of this writing).

But if the Zig project releases a 0.15.3 version, that will be a problem when Homebrew updates the Zig formula.


For the record, this is really just a rewrite of the start_expert executable, which is currently being unlinked on line 34 because it does not work when symlinked (it expects the plain executable to be in the same directory).

After investigating a bit more, I think we could cleanly change this to use the inreplace function instead, like so:

    inreplace libexec/"bin/start_expert", '"$(dirname -- "$0")"/plain', "\"#{libexec}/bin/expert\""
    bin.install_symlink libexec/"bin/start_expert" => "expert"

@AlternateRT AlternateRT force-pushed the expert-plain-build branch 2 times, most recently from ef55921 to c74c767 Compare April 13, 2026 05:04
@AlternateRT AlternateRT requested a review from chenrui333 April 13, 2026 05:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

erlang Erlang use is a significant feature of the PR or issue

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants