Use BottleCollector in Bottle SoftwareSpec
This commit is contained in:
parent
079d0556ad
commit
e2af1cbeeb
@ -3,11 +3,11 @@ require 'os/mac'
|
||||
require 'extend/ARGV'
|
||||
require 'bottle_version'
|
||||
|
||||
def bottle_filename f, bottle_revision=nil
|
||||
def bottle_filename f, options={:tag=>bottle_tag, :bottle_revision=>nil}
|
||||
name = f.name.downcase
|
||||
version = f.stable.version
|
||||
bottle_revision ||= f.bottle.revision.to_i if f.bottle
|
||||
"#{name}-#{version}#{bottle_native_suffix(bottle_revision)}"
|
||||
"#{name}-#{version}#{bottle_native_suffix(options)}"
|
||||
end
|
||||
|
||||
def install_bottle? f, options={:warn=>false}
|
||||
@ -48,8 +48,8 @@ def bottle_file_outdated? f, file
|
||||
bottle_ext && bottle_url_ext && bottle_ext != bottle_url_ext
|
||||
end
|
||||
|
||||
def bottle_native_suffix revision=nil
|
||||
".#{bottle_tag}#{bottle_suffix(revision)}"
|
||||
def bottle_native_suffix options={:tag=>bottle_tag}
|
||||
".#{options[:tag]}#{bottle_suffix(options[:revision])}"
|
||||
end
|
||||
|
||||
def bottle_suffix revision=nil
|
||||
@ -70,8 +70,8 @@ def bottle_root_url f
|
||||
root_url ||= 'https://downloads.sf.net/project/machomebrew/Bottles'
|
||||
end
|
||||
|
||||
def bottle_url f
|
||||
"#{bottle_root_url(f)}/#{bottle_filename(f)}"
|
||||
def bottle_url f, tag=bottle_tag
|
||||
"#{bottle_root_url(f)}/#{bottle_filename(f, {:tag => tag})}"
|
||||
end
|
||||
|
||||
def bottle_tag
|
||||
@ -109,9 +109,12 @@ class BottleCollector
|
||||
def fetch_bottle_for(tag)
|
||||
return [@bottles[tag], tag] if @bottles[tag]
|
||||
|
||||
find_altivec_tag(tag) || find_or_later(tag)
|
||||
find_altivec_tag(tag) || find_or_later_tag(tag)
|
||||
end
|
||||
|
||||
def keys; @bottles.keys; end
|
||||
def [](arg); @bottles[arg]; end
|
||||
|
||||
# This allows generic Altivec PPC bottles to be supported in some
|
||||
# formulae, while also allowing specific bottles in others; e.g.,
|
||||
# sometimes a formula has just :tiger_altivec, other times it has
|
||||
|
@ -105,7 +105,7 @@ module Homebrew extend self
|
||||
bottle_revision = -1
|
||||
begin
|
||||
bottle_revision += 1
|
||||
filename = bottle_filename(f, bottle_revision)
|
||||
filename = bottle_filename(f, :tag => bottle_tag, :bottle_revision => bottle_revision)
|
||||
end while not ARGV.include? '--no-revision' \
|
||||
and master_bottle_filenames.include? filename
|
||||
|
||||
|
@ -46,7 +46,7 @@ class Formula
|
||||
# into a validation method on the bottle instance.
|
||||
unless bottle.checksum.nil? || bottle.checksum.empty?
|
||||
@bottle = bottle
|
||||
bottle.url ||= bottle_url(self)
|
||||
bottle.url ||= bottle_url(self, bottle.current_tag)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -4,6 +4,7 @@ require 'checksum'
|
||||
require 'version'
|
||||
require 'build_options'
|
||||
require 'dependency_collector'
|
||||
require 'bottles'
|
||||
|
||||
class SoftwareSpec
|
||||
extend Forwardable
|
||||
@ -87,6 +88,7 @@ end
|
||||
|
||||
class Bottle < SoftwareSpec
|
||||
attr_rw :root_url, :prefix, :cellar, :revision
|
||||
attr_accessor :current_tag
|
||||
|
||||
def_delegators :@resource, :version=, :url=
|
||||
|
||||
@ -103,16 +105,16 @@ class Bottle < SoftwareSpec
|
||||
class_eval <<-EOS, __FILE__, __LINE__ + 1
|
||||
def #{cksum}(val=nil)
|
||||
return @#{cksum} if val.nil?
|
||||
@#{cksum} ||= Hash.new
|
||||
@#{cksum} ||= BottleCollector.new
|
||||
case val
|
||||
when Hash
|
||||
key, value = val.shift
|
||||
@#{cksum}[value] = Checksum.new(:#{cksum}, key)
|
||||
@#{cksum}.add(Checksum.new(:#{cksum}, key), value)
|
||||
end
|
||||
|
||||
if @#{cksum}.has_key? bottle_tag
|
||||
@resource.checksum = @#{cksum}[bottle_tag]
|
||||
end
|
||||
cksum, current_tag = @#{cksum}.fetch_bottle_for(bottle_tag)
|
||||
@resource.checksum = cksum if cksum
|
||||
@current_tag = current_tag if cksum
|
||||
end
|
||||
EOS
|
||||
end
|
||||
|
@ -110,8 +110,8 @@ class BottleTests < Test::Unit::TestCase
|
||||
end
|
||||
|
||||
checksums.each_pair do |cat, sha1|
|
||||
assert_equal Checksum.new(:sha1, sha1),
|
||||
@spec.instance_variable_get(:@sha1)[cat]
|
||||
hsh, _ = @spec.instance_variable_get(:@sha1).fetch_bottle_for(cat)
|
||||
assert_equal Checksum.new(:sha1, sha1), hsh
|
||||
end
|
||||
end
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user