diff options
| author | Max Howell | 2009-08-12 13:43:51 +0100 |
|---|---|---|
| committer | Max Howell | 2009-08-12 13:43:51 +0100 |
| commit | bfbcdb2334fe21439e25349f05e4cee6d32a53a2 (patch) | |
| tree | 5fd9e8e88f73b81e0af1160d441fff59fdd6853b | |
| parent | 7e45879baae7708015fb8a52f311814fb8db66cb (diff) | |
| download | homebrew-bfbcdb2334fe21439e25349f05e4cee6d32a53a2.tar.bz2 | |
brew diy command
Automagically determines prefix to install to for DIY installations.
README amended.
| -rw-r--r-- | Library/Contributions/brew_bash_completion.sh | 2 | ||||
| -rw-r--r-- | Library/Homebrew/brew.h.rb | 18 | ||||
| -rw-r--r-- | README | 9 | ||||
| -rwxr-xr-x | bin/brew | 4 |
4 files changed, 30 insertions, 3 deletions
diff --git a/Library/Contributions/brew_bash_completion.sh b/Library/Contributions/brew_bash_completion.sh index f33204d36..7f03523fe 100644 --- a/Library/Contributions/brew_bash_completion.sh +++ b/Library/Contributions/brew_bash_completion.sh @@ -15,7 +15,7 @@ _brew_to_completion() prev="${COMP_WORDS[COMP_CWORD-1]}" # We only complete unabbreviated commands... - actions="edit homepage info install list link make uninstall" + actions="diy edit homepage info install list link make uninstall" # Subcommand list if [[ ( ${COMP_CWORD} -eq 1 ) && ( ${COMP_WORDS[0]} == brew ) ]] ; then diff --git a/Library/Homebrew/brew.h.rb b/Library/Homebrew/brew.h.rb index f3dee102a..9f981f116 100644 --- a/Library/Homebrew/brew.h.rb +++ b/Library/Homebrew/brew.h.rb @@ -186,6 +186,24 @@ def prune end +def diy + path=Pathname.getwd + version=path.version + path.basename.to_s =~ /(.*?)-?#{version}/ + name=$1 + + raise "Couldn't determine version, try --set-version" if version.nil? or version.empty? + raise "Couldn't determine name, try --set-name" if name.nil? or name.empty? + + prefix=HOMEBREW_CELLAR+name+version + + if File.file? 'CMakeLists.txt' + "-DCMAKE_INSTALL_PREFIX=#{prefix}" + elsif File.file? 'Makefile.am' + "--prefix=#{prefix}" + end +end + ################################################################ class Cleaner class Cleaner def initialize f @@ -46,6 +46,11 @@ Here's why you may prefer Homebrew to the alternatives: make install brew ln wget + Or Homebrew can figure out the prefix: + + ./configure `brew diy` + cmake . `brew diy` + This means you can also install multiple versions of the same package and switch on demand. @@ -150,7 +155,7 @@ Update package list: cd /usr/local && git pull origin masterbrew [1] Delete a package: - brew rm wget OR rm -rf /usr/local/Cellar/wget && brew prune + brew rm wget OR rm -rf /usr/local/Cellar/wget && brew prune List all files in a package: brew list wget OR find /usr/local/Cellar/wget @@ -168,7 +173,7 @@ Show expensive packages: du -md1 /usr/local/Cellar View the packages brew has downloaded and cached: - ls `brew --cache` OR ls ~/Library/Caches/Homebrew + ls `brew --cache` OR ls ~/Library/Caches/Homebrew With Homebrew this is all Ruby. If you want to improve the package installation, amend the Ruby script. If you want to improve the brew command @@ -66,6 +66,7 @@ begin else Process.wait pid end + #FIXME I don't think $? represents the exit code from the child fork⦠exit! $? if $? != 0 # exception in other brew will be visible on screen end @@ -114,6 +115,9 @@ begin exec "mate", *ARGV.named.collect {|name| make name} end + when 'diy' + puts diy + when 'info', 'abv' if ARGV.named_empty? puts `ls #{HOMEBREW_CELLAR} | wc -l`.strip+" kegs, "+HOMEBREW_CELLAR.abv |
