brew-unpack was failing for formulae that satisfy fails_with_llvm? as
handle_llvm_failure() requires our ENV extension to get ENV.compiler.
Rather than requiring extend/ENV, just define fails_with_llvm? as false
since we don't really care about that when just unpacking a formula.
Signed-off-by: Jack Nagel <jacknagel@gmail.com>
Commit 00cd16f changed oudated_brews to return a list of Formula
objects rather than a list of lists containing formula information.
Now we must access the formula name by using the 'name' accessor rather
than an array index.
Signed-off-by: Jack Nagel <jacknagel@gmail.com>
`brew-unpack` now runs `Formula.brew` and copies the stage directory to the
unpack location. This provides two improvements:
- Patches may be applied. The `patch` metho of the Formula class is
overloaded such that patches are only applied if the `--patch` option is
passed to `brew unpack`.
- Formula can respond better to flags passed by `ARGV`.
Some trickery is pulled to ensure `DATA` is correctly set for each unpacked
formula.
If an integer is passed to `brew-pull`, such as `brew pull 6600`, it will be
interpreted as a pull request number. This has the same effect as the more
verbose command line:
brew pull https://github.com/mxcl/homebrew/pull/6600
Consequence: you can no longer install when something is already installed, you must upgrade it. This doesn't apply if the formula in question was unlinked. You can still --force installs though.
Rationale: the old way of installing over the top would leave symlinks to multiple versions in /usr/local if the old version had a file the newer version didn't. The new upgrade command handles everything properly.
Also clean-up this external command in preparation
for becoming a built-in command.
Make which_versions available in Homebrew module so
that it can be used by other commands in the future.
`brew-unpack` is inspired by the `unpack` command of Haskell's Cabal.
`brew unpack <formulae ...>` will fetch the source code archives of one or more
formula and extract them into subfolders of the current working directory. An
alternate root directory may be specified by invoking the `--destdir` flag.
This provides some nice advantages for inspecting source code compared to
`brew install -i -f <formula>`:
- The extracted source code won't be deleted when the Ruby process
terminates---which allows for long-term experimentation.
- The user has control over which directory the code is extracted into.
- No install process is initiated, so accidentally typing the equivalent of
`exit 0` will not cause `brew` to mess with an existing installation.
- Several formulae may be unpacked at once.
Signed-off-by: Adam Vandenberg <flangy@gmail.com>
If a formula is given, it will be checked for missing deps.
The formula does not have to be installed first.
Without a formula list, still checks all installed brews.
The code was sucking. To the extent that maintenance was hard. It's a lot
easier to work with code that is sensibly split at sensible boundaries. So
now it is more like that.
But the refactor is minimal. Because we don't want you to have more merge
hell than absolutely necessary.
If you merge you will need to pay attention to brew.h.rb (as it is deleted)
and bin/brew (as command logic is gone). It will be painful, but you will just
have to help git out by moving any changes around manually.
Note compatibility.rb. It ensures that any function renames or removals don't
break anything. We're pretty serious about backwards compatibility. And that's
because we encourage you to hack around with the innards. And we couldn't do
that if we would then just make stuff disappear behind your back.