diff options
| author | Steven Peters | 2013-12-16 16:37:59 -0800 |
|---|---|---|
| committer | Jack Nagel | 2013-12-19 16:43:42 -0600 |
| commit | 6404085835b09c327b081751e2cb86137781aba5 (patch) | |
| tree | af5330fa0eca828b0ef2881b0d7b03ad11531a39 | |
| parent | e102683c4c788ce4976ca55f2d78eda55f685cc1 (diff) | |
| download | homebrew-6404085835b09c327b081751e2cb86137781aba5.tar.bz2 | |
install: add --only-dependencies option
The traditional approach to installing the dependencies of a formula is
the following:
brew install `brew deps formula`
This approach ignores any options that are specified in the parent
formula. This pull request adds a --only-dependencies option to brew
install that installs the dependencies of a formula with optional flags,
but returns before installing the parent formula.
Closes #25272.
Signed-off-by: Jack Nagel <jacknagel@gmail.com>
| -rw-r--r-- | Library/Contributions/brew_bash_completion.sh | 1 | ||||
| -rw-r--r-- | Library/Contributions/manpages/brew.1.md | 5 | ||||
| -rw-r--r-- | Library/Homebrew/extend/ARGV.rb | 4 | ||||
| -rw-r--r-- | Library/Homebrew/formula_installer.rb | 10 | ||||
| -rw-r--r-- | share/man/man1/brew.1 | 7 |
5 files changed, 23 insertions, 4 deletions
diff --git a/Library/Contributions/brew_bash_completion.sh b/Library/Contributions/brew_bash_completion.sh index 886c52ce3..b7bd830d7 100644 --- a/Library/Contributions/brew_bash_completion.sh +++ b/Library/Contributions/brew_bash_completion.sh @@ -235,6 +235,7 @@ _brew_install () --HEAD --ignore-dependencies --interactive + --only-dependencies --verbose $(brew options --compact "$prv" 2>/dev/null) " diff --git a/Library/Contributions/manpages/brew.1.md b/Library/Contributions/manpages/brew.1.md index e64f9b34c..549e80562 100644 --- a/Library/Contributions/manpages/brew.1.md +++ b/Library/Contributions/manpages/brew.1.md @@ -151,7 +151,7 @@ Note that these flags should only appear after a command. * `info` <URL>: Print the name and version that will be detected for <URL>. - * `install [--debug] [--env=<std|super>] [--ignore-dependencies] [--fresh] [--cc=<compiler>] [--build-from-source] [--devel|--HEAD]` <formula>: + * `install [--debug] [--env=<std|super>] [--ignore-dependencies] [--only-dependencies] [--fresh] [--cc=<compiler>] [--build-from-source] [--devel|--HEAD]` <formula>: Install <formula>. <formula> is usually the name of the formula to install, but it can be specified @@ -170,6 +170,9 @@ Note that these flags should only appear after a command. any kind. If they are not already present, the formula will probably fail to install. + If `--only-dependencies` is passed, install the dependencies with specified + options but do not install the specified formula. + If `--fresh` is passed, the installation process will not re-use any options from previous installs. diff --git a/Library/Homebrew/extend/ARGV.rb b/Library/Homebrew/extend/ARGV.rb index 5aa90dbb9..c2e1a9c2e 100644 --- a/Library/Homebrew/extend/ARGV.rb +++ b/Library/Homebrew/extend/ARGV.rb @@ -102,6 +102,10 @@ module HomebrewArgvExtension include? '--ignore-dependencies' end + def only_deps? + include? '--only-dependencies' + end + def json value 'json' end diff --git a/Library/Homebrew/formula_installer.rb b/Library/Homebrew/formula_installer.rb index a78fd0d13..8990b3afc 100644 --- a/Library/Homebrew/formula_installer.rb +++ b/Library/Homebrew/formula_installer.rb @@ -15,13 +15,14 @@ class FormulaInstaller include FormulaCellarChecks attr_reader :f - attr_accessor :tab, :options, :ignore_deps + attr_accessor :tab, :options, :ignore_deps, :only_deps attr_accessor :show_summary_heading, :show_header def initialize ff @f = ff @show_header = false @ignore_deps = ARGV.ignore_deps? || ARGV.interactive? + @only_deps = ARGV.only_deps? @options = Options.new @tab = Tab.dummy_tab(ff) @@ -105,6 +106,8 @@ class FormulaInstaller compute_and_install_dependencies unless ignore_deps + return if only_deps + if ARGV.build_bottle? && (arch = ARGV.bottle_arch) && !Hardware::CPU.optimization_flags.include?(arch) raise "Unrecognized architecture for --bottle-arch: #{arch}" end @@ -270,6 +273,7 @@ class FormulaInstaller fi.tab = dep_tab fi.options = dep_options fi.ignore_deps = true + fi.only_deps = false fi.show_header = false oh1 "Installing #{f} dependency: #{Tty.green}#{dep}#{Tty.reset}" outdated_keg.unlink if outdated_keg @@ -282,6 +286,8 @@ class FormulaInstaller end def caveats + return if only_deps + if ARGV.homebrew_developer? and not f.keg_only? audit_bin audit_sbin @@ -299,6 +305,8 @@ class FormulaInstaller end def finish + return if only_deps + ohai 'Finishing up' if ARGV.verbose? install_plist diff --git a/share/man/man1/brew.1 b/share/man/man1/brew.1 index 89a73baac..11c6e5b67 100644 --- a/share/man/man1/brew.1 +++ b/share/man/man1/brew.1 @@ -1,7 +1,7 @@ .\" generated with Ronn/v0.7.3 .\" http://github.com/rtomayko/ronn/tree/0.7.3 . -.TH "BREW" "1" "November 2013" "Homebrew" "brew" +.TH "BREW" "1" "December 2013" "Homebrew" "brew" . .SH "NAME" \fBbrew\fR \- The missing package manager for OS X @@ -174,7 +174,7 @@ To view formula history locally: \fBbrew log \-p <formula>\fR\. Print the name and version that will be detected for \fIURL\fR\. . .TP -\fBinstall [\-\-debug] [\-\-env=<std|super>] [\-\-ignore\-dependencies] [\-\-fresh] [\-\-cc=<compiler>] [\-\-build\-from\-source] [\-\-devel|\-\-HEAD]\fR \fIformula\fR +\fBinstall [\-\-debug] [\-\-env=<std|super>] [\-\-ignore\-dependencies] [\-\-only\-dependencies] [\-\-fresh] [\-\-cc=<compiler>] [\-\-build\-from\-source] [\-\-devel|\-\-HEAD]\fR \fIformula\fR Install \fIformula\fR\. . .IP @@ -193,6 +193,9 @@ If \fB\-\-env=super\fR is passed, use superenv even if the formula specifies the If \fB\-\-ignore\-dependencies\fR is passed, skip installing any dependencies of any kind\. If they are not already present, the formula will probably fail to install\. . .IP +If \fB\-\-only\-dependencies\fR is passed, install the dependencies with specified options but do not install the specified formula\. +. +.IP If \fB\-\-fresh\fR is passed, the installation process will not re\-use any options from previous installs\. . .IP |
