diff options
| author | Jack Nagel | 2014-03-13 19:51:23 -0500 | 
|---|---|---|
| committer | Jack Nagel | 2014-03-13 21:35:41 -0500 | 
| commit | ee354c9e194069d8e7a92df1cd941b857ee01b38 (patch) | |
| tree | c043cf463916d79824b4cb5ffd18195a58662a1c /Library/Homebrew/software_spec.rb | |
| parent | f9938b5e5022b2b8b9e52c89bd4a5d2789dd3b87 (diff) | |
| download | homebrew-ee354c9e194069d8e7a92df1cd941b857ee01b38.tar.bz2 | |
New patch implementation and DSL
This commit introduces a new patch implementation that supports
checksums and caching.
Patches are declared in blocks:
  patch do
    url ...
    sha1 ...
  end
A strip level of -p1 is assumed. It can be overridden using a symbol
argument:
  patch :p0 do
    url ...
    sha1 ...
  end
Patches can be declared in stable, devel, and head blocks. This form is
preferred over using conditionals.
  stable do
    # ...
    patch do
      url ...
      sha1 ...
    end
  end
Embedded (__END__) patches are declared like so:
  patch :DATA
  patch :p0, :DATA
Patches can also be embedded by passing a string. This makes it possible
to provide multiple embedded patches while making only some of them
conditional.
  patch :p0, "..."
Diffstat (limited to 'Library/Homebrew/software_spec.rb')
| -rw-r--r-- | Library/Homebrew/software_spec.rb | 11 | 
1 files changed, 9 insertions, 2 deletions
| diff --git a/Library/Homebrew/software_spec.rb b/Library/Homebrew/software_spec.rb index 43969b2fa..0349dd3dd 100644 --- a/Library/Homebrew/software_spec.rb +++ b/Library/Homebrew/software_spec.rb @@ -5,12 +5,13 @@ require 'version'  require 'build_options'  require 'dependency_collector'  require 'bottles' +require 'patch'  class SoftwareSpec    extend Forwardable -  attr_reader :name -  attr_reader :build, :resources, :owner +  attr_reader :name, :owner +  attr_reader :build, :resources, :patches    attr_reader :dependency_collector    attr_reader :bottle_specification @@ -25,6 +26,7 @@ class SoftwareSpec      @build = BuildOptions.new(ARGV.options_only)      @dependency_collector = DependencyCollector.new      @bottle_specification = BottleSpecification.new +    @patches = []    end    def owner= owner @@ -35,6 +37,7 @@ class SoftwareSpec        r.owner     = self        r.version ||= version      end +    patches.each { |p| p.owner = self }    end    def url val=nil, specs={} @@ -84,6 +87,10 @@ class SoftwareSpec    def requirements      dependency_collector.requirements    end + +  def patch strip=:p1, io=nil, &block +    patches << Patch.create(strip, io, &block) +  end  end  class HeadSoftwareSpec < SoftwareSpec | 
