145 Commits

Author SHA1 Message Date
Mike McQuaid
1e265247ca
rubocop: apply autofixes. 2020-03-13 21:16:18 +00:00
Mike McQuaid
766fc4b301
Fix RuboCop 0.77.0 failures. 2019-11-28 15:10:50 +00:00
Mike McQuaid
0b685bb890
upgrade: don't build bottles unnecessarily.
Fixes #6063.
2019-04-25 14:01:50 -07:00
Mike McQuaid
36dbad3922
Add frozen_string_literal to all files. 2019-04-20 13:27:36 +09:00
Mike McQuaid
803ea4ed1a
tab#to_json: allow zero parameters. 2019-03-18 15:04:37 +00:00
Mike McQuaid
b23f990175
Rubocop autofixes 2019-03-18 14:30:44 +00:00
Mike McQuaid
d64429a736
rubocop: enable Style/IfUnlessModifier. 2019-02-21 12:55:49 +00:00
Mike McQuaid
737b84b54b
brew style --fix fixes. 2018-11-02 17:29:23 +00:00
Markus Reiter
72f350e757 Use ActiveSupport’s #second_to_last. 2018-10-07 23:10:56 +02:00
Markus Reiter
e9b9ea49a1 Update to RuboCop 0.59.1. 2018-09-17 03:45:59 +02:00
Mike McQuaid
ea97da9879 tab: correctly handle options request.
Because a `Tab` is an `OpenStruct` the existing calls to
`any_args_or_options?` would always return `false`. This means that
`Formula#declared_runtime_dependencies` would never call
`Tab#without?` to check whether a dependency has been brought in by an
option.

Fixes #4407
2018-07-23 19:58:39 +01:00
Mike McQuaid
375d401580 Handle missing formulae in runtime_dependencies
Hopefully put this to bed for once and for all. Add a new method
`runtime_formulae_dependencies` which returns the `runtime_dependencies`
which have only the `Formula` objects that exist. I've checked all the
`runtime_dependencies` callers and updated them accordingly.

Also, fix a few cases where runtime dependencies were being read from
the tab when this wasn't desirable.
2018-07-16 16:46:39 +01:00
Mike McQuaid
d49566ba06 tab: if parsing JSON fails output the filename.
This should make it easier to debug and resolve things like #4439.
2018-07-10 09:29:26 +01:00
Mike McQuaid
1cbc78c5dd Further tweak formula installer runtime dep handling
Instead of adding a custom method to `Tab` use `Tab.runtime_deps_hash`
within `FormulaInstaller` to ensure the `runtime_dependencies` are in
the right format.
2018-06-01 20:39:39 +01:00
Mike McQuaid
42e5ef9f89 tab: set runtime_dependencies consistently. 2018-06-01 19:53:26 +01:00
Mike McQuaid
e9a66bff14 Regenerate runtime_dependencies after installation
This ensures the we’re calculating we’ve run `fix_dynamic_linkage` so
that their results are consistent with what we’re actually pouring.

Combined with the linkage cache (which will be enabled by default in
future) this has very little performance overhead for consistently
Correct tab results.

As a result, don’t bother looking at opportunistically linked
dependencies when creating a tab by default but only do so after
installation has completed.

Finally, only output the caveats and summary after all these
operations have completed.
2018-06-01 14:05:16 +01:00
Mike McQuaid
42a39b16bf formula: use runtime_dependencies from tab.
Don't do so in `linkage_checker` or `tab` which to avoid recursive loops
and want the actual values specified in the formula itself.
2018-03-27 14:52:47 +01:00
Mike McQuaid
d8bf3f8d60 tab: default runtime_dependencies to nil. 2018-03-27 14:52:47 +01:00
Mike McQuaid
f3fba8185e tab: cleanup various methods.
Use some newer Ruby syntax and improve readability.
2018-03-21 12:42:48 +00:00
Mike McQuaid
e03f07f302 Rubocop 0.53.0 automatic fixes. 2018-03-08 14:10:02 +00:00
Markus Reiter
175ca909ee Clean up code style and remove .rubocop_todo.yml. 2017-10-08 16:10:37 +02:00
Mike McQuaid
01e9ec9a9f Rubocop: automatic rule fixes. 2017-09-24 21:23:59 +01:00
Mike McQuaid
fe35bb32e8 tab: include aliases.
Including aliases in the tab allows e.g. `brew switch` to correctly
handle switching between different keg’s aliases.
2017-07-21 17:20:54 +01:00
Markus Reiter
2d6ae61314 Re-revert "Fix operator spacing." 2017-06-02 19:22:05 +02:00
Mike McQuaid
879b3360d3 Handle missing receipt on brew install.
For example if this is for a really old keg, keg where a user has
manually removed stuff or used `brew diy`.
2017-04-02 17:02:56 +01:00
Mike McQuaid
b99fb56275 tab: store installed_{as_dependency,on_request}.
These are used to determine whether or not a formula’s install was
specifically requested by a user and/or pulled in as a dependency.
2017-01-18 11:23:21 +00:00
Alyssa Ross
56d6695bf3 tab: set homebrew_version in Tab.empty 2017-01-04 00:56:06 +00:00
Alyssa Ross
d998a3fcce tab: remove #reliable_runtime_dependencies?
See https://github.com/Homebrew/brew/pull/1750#discussion_r94243825 for
discussion.

Removes Tab#reliable_runtime_dependencies? in favour of returning nil
from Tab#runtime_dependencies if the list is unreliable.

Because Homebrew 1.1.6 hasn't been tagged yet, tabs created in tests
aren't created with a homebrew_version that marks the
runtime_dependencies in the Tab as reliable, so there are some tests
that fail. To work around this, I've had to add a line to some tests
that explicitly overrides the homebrew_version in the Tab. This is
really ugly though, so they should be removed as soon as possible after
1.1.6 is released.
2016-12-30 20:34:14 +00:00
Alyssa Ross
c41d1d8148 tab: remove #homebrew_tag
This method isn't used any more
2016-12-30 18:16:49 +00:00
Alyssa Ross
ce454bd141 tab: parse full Homebrew version string
It didn't occur to me that this would work, but it does! Magic.
2016-12-30 18:15:35 +00:00
Alyssa Ross
bdbc19c614 tab: implement #reliable_runtime_dependencies? 2016-12-30 16:16:28 +00:00
Mike McQuaid
f98304026b Deprecate 32-bit options.
These were formerly supported but as it has been a very long time since
32-bit software was necessary on macOS these have been deprecated with
a `brew audit` warning and a future `odeprecated`.
2016-12-20 10:22:30 +00:00
Alyssa Ross
5cf97e5603 tab: remove debugging 2016-12-03 23:26:52 +00:00
Alyssa Ross
7544a9afc7 tab: include HOMEBREW_VERSION 2016-12-03 19:46:38 +00:00
William Woodruff
d07b9ed7f2
Replace Utils::JSON with corelib JSON calls. 2016-11-20 20:06:25 -05:00
Alyssa Ross
3555206a7f formula: make cache clearing methods, *ahem*, clearer 2016-11-17 14:36:49 +00:00
Alyssa Ross
8bfc205a87 tab: clear Formula.installed cache when created.
This was causing the flaky tests that #1508 started skipping.

This is the second time that `Formula.installed`'s cache has bitten
me with intermittent test failures, and I'd like it to be the last,
so I've made it so the cache is cleared automatically when a tab is
created. This _should_ mean that the cache is cleared any time it
needs to be, with the exception of when a Keg is created artificially
with no tab. I don't think there's anything I can do to automatically
handle that use-case, though.
2016-11-17 14:26:00 +00:00
Josh Hagins
9c519bbdbc keg_relocate: refactor relocate_text_files
Replace relocate_text_files with three methods that clarify intent:
replace_locations_with_placeholders, replace_placeholders_with_locations
and replace_text_in_files, the first two calling the third.
2016-10-24 16:21:08 -04:00
Josh Hagins
c46155aba4 keg_relocate: cache files rewritten during brew bottle
`brew bottle` replaces instances of the Homebrew prefix, cellar, and
repository with placeholders in all text files. Cache these files in
INSTALL_RECEIPT.json so that we don't have to check every single text
file for placeholders on install.
2016-10-24 16:21:08 -04:00
Alyssa Ross
cd615acd5f tab: don't interpret unknown deps as no deps 2016-10-11 09:00:39 +01:00
Markus Reiter
fe2d51e0b9 Fix Style/IfUnlessModifier. 2016-09-23 15:30:07 +02:00
Alyssa Ross
41e25209f7 Save runtime dependencies in INSTALL_RECEIPT.json
Fixes #930
2016-09-19 20:53:39 +01:00
Mike McQuaid
6693915399 rubocop --auto-correct all remaining files.
But remove some manual `.freeze`s on constants that shouldn't be
constants.
2016-09-17 16:14:13 +01:00
Mike McQuaid
1d66cdd3ad Merge pull request #863 from penman/preserve_alias
Save aliases in INSTALL_RECEIPT
2016-09-09 07:47:05 +01:00
Alyssa Ross
8c3a11bca8 Explain more Tab instantiation methods 2016-09-07 23:17:25 +01:00
Alyssa Ross
d62029f899 Explain Tab.create vs Tab.for_formula
This was really confusing to me, and I had to go looking through the Tab
history, where I found a comment explaining it that has since been
deleted. This wasn't a great experience.

This commit basically adds that explanation back in.
2016-09-07 23:04:49 +01:00
Alyssa Ross
f9e16ee2e0 Combine Tab alias_path with source.path 2016-09-07 22:48:52 +01:00
Alyssa Ross
ba10ce70bd More consistent style 2016-09-05 22:01:05 +01:00
Alyssa Ross
b90eba8ffd Update Tap for alias_path 2016-09-05 14:26:17 +01:00
Alyssa Ross
65ee5408c3 Replace install_name/install_ref with alias_path 2016-09-05 01:19:08 +01:00