aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteven Peters2013-12-16 16:37:59 -0800
committerJack Nagel2013-12-19 16:43:42 -0600
commit6404085835b09c327b081751e2cb86137781aba5 (patch)
treeaf5330fa0eca828b0ef2881b0d7b03ad11531a39
parente102683c4c788ce4976ca55f2d78eda55f685cc1 (diff)
downloadhomebrew-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.sh1
-rw-r--r--Library/Contributions/manpages/brew.1.md5
-rw-r--r--Library/Homebrew/extend/ARGV.rb4
-rw-r--r--Library/Homebrew/formula_installer.rb10
-rw-r--r--share/man/man1/brew.17
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