diff options
Diffstat (limited to 'Library/Homebrew/patch.rb')
| -rw-r--r-- | Library/Homebrew/patch.rb | 55 | 
1 files changed, 55 insertions, 0 deletions
| diff --git a/Library/Homebrew/patch.rb b/Library/Homebrew/patch.rb index a4616eee6..64325e78d 100644 --- a/Library/Homebrew/patch.rb +++ b/Library/Homebrew/patch.rb @@ -1,5 +1,6 @@  require 'resource'  require 'stringio' +require 'erb'  class Patch    def self.create(strip, io=nil, &block) @@ -22,6 +23,32 @@ class Patch      end    end +  def self.normalize_legacy_patches(list) +    patches = [] + +    case list +    when Hash +      list +    when Array, String, IO, StringIO +      { :p1 => list } +    else +      {} +    end.each_pair do |strip, urls| +      urls = [urls] unless Array === urls +      urls.each do |url| +        case url +        when IO, StringIO +          patch = IOPatch.new(url, strip) +        else +          patch = LegacyPatch.new(strip, url) +        end +        patches << patch +      end +    end + +    patches +  end +    attr_reader :whence    def external? @@ -80,3 +107,31 @@ class ExternalPatch < Patch      end    end  end + +# Legacy patches have no checksum and are not cached +class LegacyPatch < ExternalPatch +  def initialize(strip, url) +    super(strip) +    resource.url = url +  end + +  def owner= owner +    super +    resource.name = "patch-#{ERB::Util.url_encode(resource.url)}" +  end + +  def fetch +    resource.clear_cache +    super +  end + +  def verify_download_integrity(fn) +    # no-op +  end + +  def apply +    super +  ensure +    resource.clear_cache +  end +end | 
