Should be `MacOS.xcode_version`. Fixes #8966.
Previously, stripping arguments like `--HEAD` for dependencies failed because that flag affects the installation prefix encoded into formula objects. The previous implementation of `ARGV` filtering tried to contain all changes to a single method call before the `FormulaInstaller` forks. This update spreads things out a bit: - The Homebrew `ARGV` extension adds a new method, `filter_for_dependencies` which strips flags like `--HEAD`, yields to a block, then restores the original contents of ARGV. - The `explicitly_requested?` test, which returns true or false depending on if a formula object is a member of `ARGV.formulae`, is now a method of `Formula` objects. - `FormulaInstaller` objects now execute the installation of dependencies inside an `ARGV.filter_for_dependencies` block if the dependency was `explicitly_requested?`. Fixes #8668. Closes #7724.
Mirrors can now be declared using the `mirror` method which works similar to `depends_on` and takes the same arguments as `url`. The formula class now has a public `fetch` method that cycles through the mirror list if the downloader for the primary URL throws a `DownloadError`. Other brew commands, like brew-fetch, also benefit from mirror support by using this method. Closes #7574.
Executing `curl(*patches)` was failing on Leopard when `patches` was an empty list. `git-bisect` identified 48552bb as the commit that caused this bug to surface by adding `--insecure` to the arg list on Leopard. This is odd because the following both exit with status 2: curl curl --insecure The only apparent difference is that `curl --insecure` prints "no URL specified!" to stderr along with the usage message. Also renamed `patches` to `external_patches` as it is more descriptive.