aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Library/Homebrew/extend/pathname.rb2
-rw-r--r--Library/Homebrew/formula.rb10
-rw-r--r--Library/Homebrew/install_renamed.rb17
3 files changed, 27 insertions, 2 deletions
diff --git a/Library/Homebrew/extend/pathname.rb b/Library/Homebrew/extend/pathname.rb
index 0edd1bd06..fd5cf67f1 100644
--- a/Library/Homebrew/extend/pathname.rb
+++ b/Library/Homebrew/extend/pathname.rb
@@ -50,6 +50,8 @@ class Pathname
# and also broken symlinks are not the end of the world
raise "#{src} does not exist" unless File.symlink? src or File.exist? src
+ dst = yield(src, dst) if block_given?
+
mkpath
if File.symlink? src
# we use the BSD mv command because FileUtils copies the target and
diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb
index 391b3b322..9fc54bef1 100644
--- a/Library/Homebrew/formula.rb
+++ b/Library/Homebrew/formula.rb
@@ -9,7 +9,7 @@ require 'build_environment'
require 'build_options'
require 'formulary'
require 'software_spec'
-
+require 'install_renamed'
class Formula
include FileUtils
@@ -165,7 +165,13 @@ class Formula
def kext_prefix; prefix+'Library/Extensions' end
# configuration needs to be preserved past upgrades
- def etc; HOMEBREW_GIT_ETC ? prefix+'etc' : HOMEBREW_PREFIX+'etc' end
+ def etc
+ etc = HOMEBREW_PREFIX+'etc'
+ etc = prefix+etc if HOMEBREW_GIT_ETC
+ etc.extend(InstallRenamed)
+ etc
+ end
+
# generally we don't want var stuff inside the keg
def var; HOMEBREW_PREFIX+'var' end
diff --git a/Library/Homebrew/install_renamed.rb b/Library/Homebrew/install_renamed.rb
new file mode 100644
index 000000000..e0a69beec
--- /dev/null
+++ b/Library/Homebrew/install_renamed.rb
@@ -0,0 +1,17 @@
+module InstallRenamed
+ def install_p src, new_basename = nil
+ super do |src, dst|
+ dst += "/#{File.basename(src)}" if File.directory? dst
+ append_default_if_different(src, dst)
+ end
+ end
+
+ private
+
+ def append_default_if_different src, dst
+ if File.file? dst and !FileUtils.identical?(src, dst) and !HOMEBREW_GIT_ETC
+ dst += ".default"
+ end
+ dst
+ end
+end