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

formula_versions: handle references to too old MacOS in formulae #8389

Merged
merged 1 commit into from Aug 19, 2020

Conversation

bayandin
Copy link
Member

@bayandin bayandin commented Aug 18, 2020

  • Have you followed the guidelines in our Contributing document?
  • Have you checked to ensure there aren't other open Pull Requests for the same change?
  • Have you added an explanation of what your changes do and why you'd like us to include them?
  • Have you written new tests for your changes? Here's an example.
  • Have you successfully run brew style with your changes locally?
  • Have you successfully run brew tests with your changes locally?

Bottling of gource formula fails with an error Error: unknown or unsupported macOS version: :mountain_lion (in Homebrew/homebrew-core#59779)

When brew does Determining gource bottle rebuild, it went back to https://github.com/homebrew/homebrew-core/tree/44d524b9a505e14a4af60d231ca5162dadab18d7 revision which has line depends_on :macos => :mountain_lion

This PR adds mavericks and mountain_lion versions to make mountain_lion known version.
I'm not completely sure if this is a right solution (of we should handle such cases in Homebrew#bottle_formula, for example), but these changes look safe enough from the first glance.

The full log is here:

$ brew bottle --verbose --json gource
==> Determining gource bottle rebuild...
Error: unknown or unsupported macOS version: :mountain_lion
bayandin@mbp:~/Desktop$ brew bottle --debug --verbose --json gource
/usr/local/Homebrew/Library/Homebrew/brew.rb (Formulary::FormulaLoader): loading /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/gource.rb
==> Determining gource bottle rebuild...
/usr/local/Homebrew/Library/Homebrew/brew.rb (Formulary::FormulaContentsLoader): loading /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/gource.rb
/usr/local/Homebrew/Library/Homebrew/brew.rb (Formulary::FormulaContentsLoader): loading /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/gource.rb
/usr/local/Homebrew/Library/Homebrew/brew.rb (Formulary::FormulaContentsLoader): loading /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/gource.rb
/usr/local/Homebrew/Library/Homebrew/brew.rb (Formulary::FormulaContentsLoader): loading /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/gource.rb
/usr/local/Homebrew/Library/Homebrew/brew.rb (Formulary::FormulaContentsLoader): loading /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/gource.rb
/usr/local/Homebrew/Library/Homebrew/brew.rb (Formulary::FormulaContentsLoader): loading /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/gource.rb
/usr/local/Homebrew/Library/Homebrew/brew.rb (Formulary::FormulaContentsLoader): loading /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/gource.rb
/usr/local/Homebrew/Library/Homebrew/brew.rb (Formulary::FormulaContentsLoader): loading /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/gource.rb
/usr/local/Homebrew/Library/Homebrew/brew.rb (Formulary::FormulaContentsLoader): loading /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/gource.rb
/usr/local/Homebrew/Library/Homebrew/brew.rb (Formulary::FormulaContentsLoader): loading /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/gource.rb
/usr/local/Homebrew/Library/Homebrew/brew.rb (Formulary::FormulaContentsLoader): loading /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/gource.rb
/usr/local/Homebrew/Library/Homebrew/brew.rb (Formulary::FormulaContentsLoader): loading /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/gource.rb
/usr/local/Homebrew/Library/Homebrew/brew.rb (Formulary::FormulaContentsLoader): loading /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/gource.rb
/usr/local/Homebrew/Library/Homebrew/brew.rb (Formulary::FormulaContentsLoader): loading /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/gource.rb
/usr/local/Homebrew/Library/Homebrew/brew.rb (Formulary::FormulaContentsLoader): loading /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/gource.rb
Error: unknown or unsupported macOS version: :mountain_lion
/usr/local/Homebrew/Library/Homebrew/os/mac/version.rb:20:in `block in from_symbol'
/usr/local/Homebrew/Library/Homebrew/os/mac/version.rb:20:in `fetch'
/usr/local/Homebrew/Library/Homebrew/os/mac/version.rb:20:in `from_symbol'
/usr/local/Homebrew/Library/Homebrew/requirements/macos_requirement.rb:15:in `initialize'
/usr/local/Homebrew/Library/Homebrew/dependency_collector.rb:127:in `new'
/usr/local/Homebrew/Library/Homebrew/dependency_collector.rb:127:in `parse_symbol_spec'
/usr/local/Homebrew/Library/Homebrew/dependency_collector.rb:101:in `parse_spec'
/usr/local/Homebrew/Library/Homebrew/dependency_collector.rb:53:in `build'
/usr/local/Homebrew/Library/Homebrew/dependency_collector.rb:40:in `block in fetch'
/usr/local/Homebrew/Library/Homebrew/dependency_collector.rb:40:in `fetch'
/usr/local/Homebrew/Library/Homebrew/dependency_collector.rb:40:in `fetch'
/usr/local/Homebrew/Library/Homebrew/dependency_collector.rb:30:in `add'
/usr/local/Homebrew/Library/Homebrew/software_spec.rb:164:in `depends_on'
/usr/local/Homebrew/Library/Homebrew/formula.rb:2512:in `block in depends_on'
/usr/local/Homebrew/Library/Homebrew/formula.rb:2512:in `each'
/usr/local/Homebrew/Library/Homebrew/formula.rb:2512:in `depends_on'
/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/gource.rb:34:in `<class:Gource>'
/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/gource.rb:1:in `load_formula'
/usr/local/Homebrew/Library/Homebrew/formulary.rb:40:in `module_eval'
/usr/local/Homebrew/Library/Homebrew/formulary.rb:40:in `load_formula'
/usr/local/Homebrew/Library/Homebrew/formulary.rb:321:in `klass'
/usr/local/Homebrew/Library/Homebrew/formulary.rb:132:in `get_formula'
/usr/local/Homebrew/Library/Homebrew/formulary.rb:404:in `from_contents'
/usr/local/Homebrew/Library/Homebrew/formula_versions.rb:44:in `block in formula_at_revision'
/usr/local/Homebrew/Library/Homebrew/utils.rb:393:in `nostdout'
/usr/local/Homebrew/Library/Homebrew/formula_versions.rb:44:in `formula_at_revision'
/usr/local/Homebrew/Library/Homebrew/formula_versions.rb:61:in `block in bottle_version_map'
/usr/local/Homebrew/Library/Homebrew/formula_versions.rb:30:in `block (2 levels) in rev_list'
/usr/local/Homebrew/Library/Homebrew/utils/popen.rb:31:in `block in popen'
/usr/local/Homebrew/Library/Homebrew/utils/popen.rb:27:in `popen'
/usr/local/Homebrew/Library/Homebrew/utils/popen.rb:27:in `popen'
/usr/local/Homebrew/Library/Homebrew/utils/popen.rb:5:in `popen_read'
/usr/local/Homebrew/Library/Homebrew/formula_versions.rb:29:in `block in rev_list'
/usr/local/Homebrew/Library/Homebrew/extend/pathname.rb:281:in `block in cd'
/usr/local/Homebrew/Library/Homebrew/extend/pathname.rb:281:in `chdir'
/usr/local/Homebrew/Library/Homebrew/extend/pathname.rb:281:in `cd'
/usr/local/Homebrew/Library/Homebrew/formula_versions.rb:28:in `rev_list'
/usr/local/Homebrew/Library/Homebrew/formula_versions.rb:60:in `bottle_version_map'
/usr/local/Homebrew/Library/Homebrew/dev-cmd/bottle.rb:239:in `bottle_formula'
/usr/local/Homebrew/Library/Homebrew/dev-cmd/bottle.rb:92:in `block in bottle'
/usr/local/Homebrew/Library/Homebrew/dev-cmd/bottle.rb:91:in `each'
/usr/local/Homebrew/Library/Homebrew/dev-cmd/bottle.rb:91:in `bottle'
/usr/local/Homebrew/Library/Homebrew/brew.rb:112:in `<main>'

Comment on lines 17 to 18
mavericks: "10.9",
mountain_lion: "10.8",

This comment was marked as outdated.

@Bo98
Copy link
Member

Bo98 commented Aug 18, 2020

When brew does Determining gource bottle rebuild, it went back to https://github.com/homebrew/homebrew-core/tree/44d524b9a505e14a4af60d231ca5162dadab18d7

This seems extreme. Why is it going back that far?


Adding MacOSVersionError to here:

IGNORED_EXCEPTIONS = [
ArgumentError, NameError, SyntaxError, TypeError,
FormulaSpecificationError, FormulaValidationError,
ErrorDuringExecution, LoadError, MethodDeprecatedError
].freeze

seems reasonable, though would ultimately make it skip the revision.

@bayandin
Copy link
Member Author

This seems extreme. Why is it going back that far?

MAX_VERSIONS_DEPTH = 2

It falls exactly on the second version — 0.47 (after we have only 0.49 and 0.51 — the current one)

With ignoring MacOSVersionError it goes back to https://github.com/homebrew/homebrew-core/tree/da3fdbd0cf2e3f61bb88804021137c7a71c26dcf (25 Feb 2012!)

@MikeMcQuaid
Copy link
Member

Adding MacOSVersionError to here:

Yes, please do that 👍🏻. That's preferable to adding any old versions. Alternatively, handle this loop but exit immediately when it sees an old version in this case because we know that we're not going to see anything useful then.

@bayandin
Copy link
Member Author

Alternatively, handle this loop but exit immediately when it sees an old version in this case because we know that we're not going to see anything useful then.

I like this approach, will take a look a bit later

@bayandin bayandin changed the title OS::Mac::Version: add old versions formula_versions: handle references to too old MacOS in formulae Aug 19, 2020
@bayandin bayandin merged commit 25e6f84 into Homebrew:master Aug 19, 2020
@bayandin bayandin deleted the add-older-macos-versions branch August 19, 2020 11:59
@BrewTestBot BrewTestBot added the outdated PR was locked due to age label Dec 16, 2020
@Homebrew Homebrew locked as resolved and limited conversation to collaborators Dec 16, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
outdated PR was locked due to age
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants