diff options
| -rw-r--r-- | Library/Homebrew/extend/pathname.rb | 2 | ||||
| -rw-r--r-- | Library/Homebrew/formula.rb | 10 | ||||
| -rw-r--r-- | Library/Homebrew/install_renamed.rb | 17 |
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 |
