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

cmd/install: infer --overwrite when in GitHub Actions #18612

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 27 additions & 1 deletion Library/Homebrew/cmd/install.rb
Original file line number Diff line number Diff line change
Expand Up @@ -298,6 +298,32 @@
Install.perform_preinstall_checks_once
Install.check_cc_argv(args.cc)

overwrite = if GitHub::Actions.env_set? &&
ENV["HOMEBREW_GITHUB_ACTIONS_NO_INSTALL_OVERWRITE"].blank? &&
Copy link
Member

Choose a reason for hiding this comment

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

Should we document this in env_config.rb?

Suggested change
ENV["HOMEBREW_GITHUB_ACTIONS_NO_INSTALL_OVERWRITE"].blank? &&
ENV["HOMEBREW_NO_GITHUB_ACTIONS_INSTALL_OVERWRITE"].blank? &&

would be my preferred naming format, for consistency

ENV["HOMEBREW_GITHUB_ACTIONS"].blank?
if ENV["HOMEBREW_GITHUB_ACTIONS_NO_INSTALL_OVERWRITE_WARNING"].blank?
message = <<~WARNING
In GitHub Actions, `brew install` behaves the same as `brew install --overwrite`.
Copy link
Member

Choose a reason for hiding this comment

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

Yeh, sorry to be a pain here: this definitely feels like an overly broad change. Would like to see this scoped to only Python for now and we can consider widening it in future if desired.


To disable this behaviour, set `HOMEBREW_GITHUB_ACTIONS_NO_INSTALL_OVERWRITE`.

To silence this warning, set `HOMEBREW_GITHUB_ACTIONS_NO_INSTALL_OVERWRITE_WARNING`.
WARNING

puts GitHub::Actions::Annotation.new(:warning, message)

Check warning on line 313 in Library/Homebrew/cmd/install.rb

View check run for this annotation

Codecov / codecov/patch

Library/Homebrew/cmd/install.rb#L313

Added line #L313 was not covered by tests

# Print warning only once.
github_env = ENV.fetch("GITHUB_ENV", "")

Check warning on line 316 in Library/Homebrew/cmd/install.rb

View check run for this annotation

Codecov / codecov/patch

Library/Homebrew/cmd/install.rb#L316

Added line #L316 was not covered by tests
if File.exist?(github_env) && File.writable?(github_env)
File.open(github_env, "a") { |f| f.puts("HOMEBREW_GITHUB_ACTIONS_NO_INSTALL_OVERWRITE_WARNING=1") }
end
Comment on lines +299 to +303
Copy link
Member Author

Choose a reason for hiding this comment

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

I'm 50-50 about this bit, and don't mind dropping it.

Copy link
Member

Choose a reason for hiding this comment

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

Also don't feel strongly either way. If it's Python only: can drop.

end

true
else
args.overwrite?
end

Install.install_formulae(
installed_formulae,
build_bottle: args.build_bottle?,
Expand All @@ -313,7 +339,7 @@
keep_tmp: args.keep_tmp?,
debug_symbols: args.debug_symbols?,
force: args.force?,
overwrite: args.overwrite?,
overwrite:,
Copy link
Member Author

@carlocab carlocab Oct 23, 2024

Choose a reason for hiding this comment

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

This approach doesn't quite work, unfortunately. This is because the --overwrite flag doesn't propagate to dependencies. Should it?

Copy link
Member Author

Choose a reason for hiding this comment

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

Passed it on to dependencies in 79959ca.

Copy link
Member

Choose a reason for hiding this comment

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

This approach doesn't quite work, unfortunately. This is because the --overwrite flag doesn't propagate to dependencies. Should it?

I don't think it should.

debug: args.debug?,
quiet: args.quiet?,
verbose: args.verbose?,
Expand Down
Loading