This is used to indicate a formula is a version of another formula.
This will be used to provide a consistent interface for older formulae
versions and replaces the use of `conflicts_with`.
If you specify a formula more than once or it exists in the Cellar with
an alias name and the main name (e.g. `qt` and `qt5`) you can see the
same formula showing up more than once. Instead, resolve these output
lists of formulae such that they are unique based on their `name`. This
doesn't use `full_name` as it's `name` that's use for the `Cellar`.
Return `opt_prefix` if it exists and `prefix` is not called from within
the same formula's `install` or `post_install` methods. Otherwise, fall
back to the existing functionality.
This avoids the need to use `opt_prefix` etc. everywhere and generally
means we don't expose an implementation detail (i.e. the full Cellar
path) to dependents that have a habit of hard-coding it.
Fish shell allows third-party software vendors to put their own function files in a directory for their software.
For brew installed Fish shell, this is /usr/local/share/fish/vendor_functions.d
* `Formula#linked?` returns true if formula linked
* `Formula#optlinked?` returns true if formula linked to opt
formula installed to the Cellar
* `Formula#prefix_linked?` returns true if linked keg points to the prefix
passed as an argument
* `Formula#linked_version` to get linked version of the formula
* Causes a bug in Formula#installed_alias_target_changed? when
Formula#superseds_an_installed_formula? returns true because
Formula#old_installed_formulae includes f for some Formula f.
* Causes a bug when foo@2.4 with alias foo has HEAD or devel version and
we try to `brew upgrade foo --devel|--HEAD` from stable. The upgrade fails
while since we installing formula to the same prefix it's alredy installed.
The reason for that is that we use
`formula_to_install = outdated.map(&:latest_formula)` in cmd/upgrade
before calling upgrade_formula on foo.
```ruby
def latest_formula
installed_alias_target_changed? ? current_installed_alias_target : self
end
```
Formula#installed_alias_target_changed? compares formulae using
Formula#==, which is wrong for this case, thus Formula#latest_formula doesn't
return self and returns Formula#current_installed_alias_target with spec
foo was initially installed instead of devel or HEAD, causing the error.
This adds a CMake cache entry to std_cmake_args specifying that the
function clock_gettime is not available on 10.11 in order to avoid
runtime errors such as
dyld: lazy symbol binding failed: Symbol not found: _clock_gettime
when the build system is confused by Xcode 8's weak symbols.
Other weak symbols on 10.11, which may merit the same treatment in the
future, can be found with
grep 'weak$os10.11' MacOSX.sdk/usr/lib/system/libsystem_c.tbd