Add non-/usr/local bottles support.
Signed-off-by: Mike McQuaid <mike@mikemcquaid.com>
This commit is contained in:
parent
22aec1d0d9
commit
20c0ddc401
@ -10,7 +10,6 @@ def bottle_filename f, bottle_revision=nil
|
|||||||
end
|
end
|
||||||
|
|
||||||
def install_bottle? f
|
def install_bottle? f
|
||||||
return true if ARGV.include? '--install-bottle' and MacOS.bottles_supported?(true)
|
|
||||||
return true if f.downloader and defined? f.downloader.local_bottle_path \
|
return true if f.downloader and defined? f.downloader.local_bottle_path \
|
||||||
and f.downloader.local_bottle_path
|
and f.downloader.local_bottle_path
|
||||||
|
|
||||||
@ -19,6 +18,7 @@ def install_bottle? f
|
|||||||
return false unless f.pour_bottle?
|
return false unless f.pour_bottle?
|
||||||
return false unless f.build.used_options.empty?
|
return false unless f.build.used_options.empty?
|
||||||
return false unless bottle_current?(f)
|
return false unless bottle_current?(f)
|
||||||
|
return false if f.bottle.cellar != :any && f.bottle.cellar != HOMEBREW_CELLAR.to_s
|
||||||
|
|
||||||
true
|
true
|
||||||
end
|
end
|
||||||
|
|||||||
@ -20,12 +20,22 @@ module Homebrew extend self
|
|||||||
|
|
||||||
HOMEBREW_CELLAR.cd do
|
HOMEBREW_CELLAR.cd do
|
||||||
ohai "Bottling #{f.name} #{f.version}..."
|
ohai "Bottling #{f.name} #{f.version}..."
|
||||||
|
bottle_relocatable = !quiet_system(
|
||||||
|
'grep', '--recursive', '--quiet', '--max-count=1',
|
||||||
|
HOMEBREW_CELLAR, "#{f.name}/#{f.version}")
|
||||||
|
cellar = nil
|
||||||
|
if bottle_relocatable
|
||||||
|
cellar = ':any'
|
||||||
|
elsif HOMEBREW_CELLAR.to_s != '/usr/local/Cellar'
|
||||||
|
cellar = "'#{HOMEBREW_CELLAR}'"
|
||||||
|
end
|
||||||
# Use gzip, faster to compress than bzip2, faster to uncompress than bzip2
|
# Use gzip, faster to compress than bzip2, faster to uncompress than bzip2
|
||||||
# or an uncompressed tarball (and more bandwidth friendly).
|
# or an uncompressed tarball (and more bandwidth friendly).
|
||||||
safe_system 'tar', 'czf', bottle_path, "#{f.name}/#{f.version}"
|
safe_system 'tar', 'czf', bottle_path, "#{f.name}/#{f.version}"
|
||||||
sha1 = bottle_path.sha1
|
sha1 = bottle_path.sha1
|
||||||
puts "./#{filename}"
|
puts "./#{filename}"
|
||||||
puts "bottle do"
|
puts "bottle do"
|
||||||
|
puts " cellar #{cellar}" if cellar
|
||||||
puts " revision #{bottle_revision}" if bottle_revision > 0
|
puts " revision #{bottle_revision}" if bottle_revision > 0
|
||||||
puts " sha1 '#{sha1}' => :#{MacOS.cat}"
|
puts " sha1 '#{sha1}' => :#{MacOS.cat}"
|
||||||
puts "end"
|
puts "end"
|
||||||
|
|||||||
@ -79,13 +79,14 @@ end
|
|||||||
|
|
||||||
class Bottle < SoftwareSpec
|
class Bottle < SoftwareSpec
|
||||||
attr_writer :url
|
attr_writer :url
|
||||||
attr_reader :revision, :root_url
|
attr_reader :revision, :root_url, :cellar
|
||||||
# TODO: Can be removed when all bottles migrated to underscored cat symbols.
|
# TODO: Can be removed when all bottles migrated to underscored cat symbols.
|
||||||
attr_reader :cat_without_underscores
|
attr_reader :cat_without_underscores
|
||||||
|
|
||||||
def initialize
|
def initialize
|
||||||
super
|
super
|
||||||
@revision = 0
|
@revision = 0
|
||||||
|
@cellar = '/usr/local/Cellar'
|
||||||
@cat_without_underscores = false
|
@cat_without_underscores = false
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -117,6 +118,10 @@ class Bottle < SoftwareSpec
|
|||||||
val.nil? ? @root_url : @root_url = val
|
val.nil? ? @root_url : @root_url = val
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def cellar val=nil
|
||||||
|
val.nil? ? @cellar : @cellar = val
|
||||||
|
end
|
||||||
|
|
||||||
def revision val=nil
|
def revision val=nil
|
||||||
val.nil? ? @revision : @revision = val
|
val.nil? ? @revision : @revision = val
|
||||||
end
|
end
|
||||||
|
|||||||
@ -242,16 +242,6 @@ module MacOS extend self
|
|||||||
raise "Bottles are not supported on 32-bit Snow Leopard."
|
raise "Bottles are not supported on 32-bit Snow Leopard."
|
||||||
end
|
end
|
||||||
|
|
||||||
unless HOMEBREW_PREFIX.to_s == '/usr/local'
|
|
||||||
return false unless raise_if_failed
|
|
||||||
raise "Bottles are only supported with a /usr/local prefix."
|
|
||||||
end
|
|
||||||
|
|
||||||
unless HOMEBREW_CELLAR.to_s == '/usr/local/Cellar'
|
|
||||||
return false unless raise_if_failed
|
|
||||||
raise "Bottles are only supported with a /usr/local/Cellar cellar."
|
|
||||||
end
|
|
||||||
|
|
||||||
true
|
true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@ -190,6 +190,7 @@ class SnowLeopardBottleSpecTestBall < Formula
|
|||||||
sha1 '482e737739d946b7c8cbaf127d9ee9c148b999f5'
|
sha1 '482e737739d946b7c8cbaf127d9ee9c148b999f5'
|
||||||
|
|
||||||
bottle do
|
bottle do
|
||||||
|
cellar :any
|
||||||
sha1 'deadbeefdeadbeefdeadbeefdeadbeefdeadbeef' => :snow_leopard
|
sha1 'deadbeefdeadbeefdeadbeefdeadbeefdeadbeef' => :snow_leopard
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -204,6 +205,7 @@ class LionBottleSpecTestBall < Formula
|
|||||||
sha1 '482e737739d946b7c8cbaf127d9ee9c148b999f5'
|
sha1 '482e737739d946b7c8cbaf127d9ee9c148b999f5'
|
||||||
|
|
||||||
bottle do
|
bottle do
|
||||||
|
cellar :any
|
||||||
sha1 'deadbeefdeadbeefdeadbeefdeadbeefdeadbeef' => :lion
|
sha1 'deadbeefdeadbeefdeadbeefdeadbeefdeadbeef' => :lion
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -218,6 +220,7 @@ class AllCatsBottleSpecTestBall < Formula
|
|||||||
sha1 '482e737739d946b7c8cbaf127d9ee9c148b999f5'
|
sha1 '482e737739d946b7c8cbaf127d9ee9c148b999f5'
|
||||||
|
|
||||||
bottle do
|
bottle do
|
||||||
|
cellar '/private/tmp/testbrew/cellar'
|
||||||
sha1 'deadbeefdeadbeefdeadbeefdeadbeefdeadbeef' => :snow_leopard
|
sha1 'deadbeefdeadbeefdeadbeefdeadbeefdeadbeef' => :snow_leopard
|
||||||
sha1 'baadf00dbaadf00dbaadf00dbaadf00dbaadf00d' => :lion
|
sha1 'baadf00dbaadf00dbaadf00dbaadf00dbaadf00d' => :lion
|
||||||
sha1 '8badf00d8badf00d8badf00d8badf00d8badf00d' => :mountain_lion
|
sha1 '8badf00d8badf00d8badf00d8badf00d8badf00d' => :mountain_lion
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user