Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

With HOMEBREW_CASK_OPTS="--require-sha", brew bundle exits 0 even if installation is not successful #1275

Closed
weakish opened this issue Jan 4, 2024 · 6 comments · Fixed by #1276
Labels

Comments

@weakish
Copy link

weakish commented Jan 4, 2024

Provided that HOMEBREW_CASK_OPTS="--require-sha",
even if installation is not successful due to checksum not defined,
brew bundle still exists 0 and not reporting any error.

For example: (chromium cask defines its sha256 checksum as :no_check)

export HOMEBREW_CASK_OPTS="--require-sha"
echo 'cask "chromium"' | brew bundle --file=-

From the output, it seems everything is okay and chromium is installed:

==> Downloading https://formulae.brew.sh/api/cask.jws.json

Installing chromium
Homebrew Bundle complete! 1 Brewfile dependency now installed.

Also, the status code is 0.

; echo $?
0

However, in fact chromium is not installed:

; brew info chromium | fgrep 'Not installed'
Not installed

Strangely, running brew bundle with the verbose option, brew exists 1 correctly:

; echo 'cask "chromium"' | brew bundle --file=- --verbose
Installing chromium
Installing chromium cask. It is not currently installed.
==> Downloading https://raw.githubusercontent.com/Homebrew/homebrew-cask/2786e56
Already downloaded: /Users/kyo/Library/Caches/Homebrew/downloads/a03ec19b95fb538ee676d9dd29426ec36977b638c0865408ab7dda1030f0ac33--chromium.rb
Error: Cask 'chromium' does not have a sha256 checksum defined and was not installed.
This means you have the --require-sha option set, perhaps in your HOMEBREW_CASK_OPTS.
Installing chromium has failed!
Homebrew Bundle failed! 1 Brewfile dependency failed to install.

; echo $?
1

Homebrew version: 4.2.2-18-gdcd267b

@ian-h-chamberlain
Copy link
Contributor

ian-h-chamberlain commented Jan 4, 2024

Wow, what timing — I was just about to file a very similar issue, although in my case the cask install failed due to a pre-existing .app rather than --require-sha. My guess is that both of these have the same root cause, since the same --verbose behavior applies too.

Same version Homebrew 4.2.2-18-gdcd267b

$ echo 'cask "emacs"' | brew bundle install --file=- ; echo $?
Installing emacs
Homebrew Bundle complete! 1 Brewfile dependency now installed.
0
$ brew list --cask | grep emacs ; echo $?
1
$ echo 'cask "emacs"' | brew bundle install --verbose --file=-; echo $?
==> Downloading https://formulae.brew.sh/api/cask.jws.json
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 1047k  100 1047k    0     0  3169k      0 --:--:-- --:--:-- --:--:-- 3446k
Installing emacs
Installing emacs cask. It is not currently installed.
==> Downloading https://emacsformacosx.com/emacs-builds/Emacs-29.1-1-universal.d
Already downloaded: /Users/ichamberlain/Library/Caches/Homebrew/downloads/bc7dcf972996173def825339282d91fd01e6a66a1448b5b37ec126d4500c561f--Emacs-29.1-1-universal.dmg
==> Installing Cask emacs
==> Purging files for version 29.1-1 of Cask emacs
Error: It seems there is already an App at '/Applications/Emacs.app'.
Installing emacs has failed!
Homebrew Bundle failed! 1 Brewfile dependency failed to install.
1

brew bundle check appears unaffected, it reports brew bundle can't satisfy your Brewfile's dependencies. whether run with --verbose or not.

Edit: possibly introduced by fe11409 ?

@brew(main):008:1* IO.popen(["sh", "-c", "exit 1"], err: [:child, :out]) do |pipe|
@brew(main):009:1*   Process.wait(pipe.pid)
@brew(main):010:1*   success = $CHILD_STATUS.dup.success?
@brew(main):011:1*   pipe.close
@brew(main):012:0> end
=> nil
@brew(main):013:0> success
=> true
@brew(main):014:0> 

@thejan2009
Copy link

I can report the same symptoms - brew bundle reports a successful install although one of the packages failed to install for completely unrelated reasons. Manual brew install fails properoy.

@MikeMcQuaid
Copy link
Member

I expect this should now be resolved. Please verify and respond if not!

@ian-h-chamberlain
Copy link
Contributor

ian-h-chamberlain commented Jan 5, 2024

Confirmed, after a brew update it seems to be failing as expected, without --verbose:

$ echo 'cask "emacs"' | brew bundle install --file=-; echo $?
Installing emacs
==> Downloading https://emacsformacosx.com/emacs-builds/Emacs-29.1-1-universal.dmg
Already downloaded: /Users/ichamberlain/Library/Caches/Homebrew/downloads/bc7dcf972996173def825339282d91fd01e6a66a1448b5b37ec126d4500c561f--Emacs-29.1-1-universal.dmg
==> Installing Cask emacs
Error: It seems there is already an App at '/Applications/Emacs.app'.
==> Purging files for version 29.1-1 of Cask emacs
Installing emacs has failed!
Homebrew Bundle failed! 1 Brewfile dependency failed to install.
1

Thanks!

@weakish
Copy link
Author

weakish commented Jan 8, 2024

Please verify

Verified this issue is fixed (tested on Homebrew 4.2.2-29-gb3751bc). 🎉

@MikeMcQuaid
Copy link
Member

@ian-h-chamberlain @weakish thanks for reporting back, really helpful 🙇🏻

@github-actions github-actions bot locked as resolved and limited conversation to collaborators Feb 8, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants