diff options
| author | Misty De Meo | 2012-01-22 22:32:15 -0600 |
|---|---|---|
| committer | Misty De Meo | 2012-01-25 21:45:19 -0600 |
| commit | aedacdf209815450204602ff403bb5c4510d6a3a (patch) | |
| tree | 27ecb795418341d3ea2e435c3eb415c7bfc37f91 | |
| parent | 84a2e44db41ee4c45ad8735b96d9bb7a655efde3 (diff) | |
| download | homebrew-aedacdf209815450204602ff403bb5c4510d6a3a.tar.bz2 | |
Add `devel` to the DSL, + stable and bottle blocks
This commit adds a `devel` entry to the DSL, allowing formulae to
specify an unstable branch.
`devel` takes a block, which should contain standard `url` and `md5`
fields (and `version`, if necessary). This must come after the standard
DSL fields.
This commit also migrates over all formulae currently using `devel` to
the new syntax, as well as formulae which used `head` for non-VCS urls.
The new syntax is also available for `stable` and `bottle`. `stable` is
an option alongside the old syntax. `bottle` replaces the old syntax.
Note that the @stable ivar in Formula has been renamed to @standard,
and the @bottle ivar has been renamed to @bottle_url.
Closes #9735.
Signed-off-by: Misty De Meo <mistydemeo@gmail.com>
| -rw-r--r-- | Library/Formula/bdw-gc.rb | 8 | ||||
| -rw-r--r-- | Library/Formula/boost.rb | 6 | ||||
| -rw-r--r-- | Library/Formula/cmake.rb | 7 | ||||
| -rw-r--r-- | Library/Formula/erlang.rb | 6 | ||||
| -rw-r--r-- | Library/Formula/fltk.rb | 8 | ||||
| -rw-r--r-- | Library/Formula/fox.rb | 10 | ||||
| -rw-r--r-- | Library/Formula/ghc.rb | 18 | ||||
| -rw-r--r-- | Library/Formula/guile.rb | 7 | ||||
| -rw-r--r-- | Library/Formula/icu4c.rb | 6 | ||||
| -rw-r--r-- | Library/Formula/imagemagick.rb | 6 | ||||
| -rw-r--r-- | Library/Formula/libmusicbrainz.rb | 10 | ||||
| -rw-r--r-- | Library/Formula/nginx.rb | 7 | ||||
| -rw-r--r-- | Library/Formula/qt.rb | 7 | ||||
| -rw-r--r-- | Library/Formula/scantailor.rb | 13 | ||||
| -rw-r--r-- | Library/Formula/wine.rb | 10 | ||||
| -rwxr-xr-x | Library/Homebrew/cmd/audit.rb | 8 | ||||
| -rw-r--r-- | Library/Homebrew/cmd/install.rb | 2 | ||||
| -rw-r--r-- | Library/Homebrew/formula.rb | 44 | ||||
| -rw-r--r-- | Library/Homebrew/formula_installer.rb | 6 |
19 files changed, 111 insertions, 78 deletions
diff --git a/Library/Formula/bdw-gc.rb b/Library/Formula/bdw-gc.rb index 91d9dc689..1721c012d 100644 --- a/Library/Formula/bdw-gc.rb +++ b/Library/Formula/bdw-gc.rb @@ -3,13 +3,13 @@ require 'formula' class BdwGc < Formula homepage 'http://www.hpl.hp.com/personal/Hans_Boehm/gc/' - if ARGV.build_devel? + url 'http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source/gc-7.1.tar.gz' + md5 '2ff9924c7249ef7f736ecfe6f08f3f9b' + + devel do url 'http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source/gc-7.2alpha6.tar.gz' md5 '319d0b18cc4eb735c8038ece9df055e4' version '7.2alpha6' - else - url 'http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source/gc-7.1.tar.gz' - md5 '2ff9924c7249ef7f736ecfe6f08f3f9b' end # patch to fix inline asm errors with LLVM, present in upstream SVN diff --git a/Library/Formula/boost.rb b/Library/Formula/boost.rb index 56f3c814a..d4c542403 100644 --- a/Library/Formula/boost.rb +++ b/Library/Formula/boost.rb @@ -7,8 +7,10 @@ class Boost < Formula head 'http://svn.boost.org/svn/boost/trunk', :using => :svn # Bottle built on 10.7.2 using XCode 4.2 - bottle 'https://downloads.sourceforge.net/project/machomebrew/Bottles/boost-1.48.0-bottle.tar.gz' - bottle_sha1 'c7871ddd020a24e3b0cfd3c9a352a1210b68b372' + bottle do + url 'https://downloads.sourceforge.net/project/machomebrew/Bottles/boost-1.48.0-bottle.tar.gz' + sha1 'c7871ddd020a24e3b0cfd3c9a352a1210b68b372' + end def patches # https://svn.boost.org/trac/boost/ticket/6131 diff --git a/Library/Formula/cmake.rb b/Library/Formula/cmake.rb index 3d193df95..78c0bb457 100644 --- a/Library/Formula/cmake.rb +++ b/Library/Formula/cmake.rb @@ -4,8 +4,11 @@ class Cmake < Formula url 'http://www.cmake.org/files/v2.8/cmake-2.8.7.tar.gz' md5 'e1b237aeaed880f65dec9c20602452f6' homepage 'http://www.cmake.org/' - bottle 'https://downloads.sf.net/project/machomebrew/Bottles/cmake-2.8.7-bottle.tar.gz' - bottle_sha1 'f218ed64ce6e7a5d3670acdd6a18e5ed95421d1f' + + bottle do + url 'https://downloads.sf.net/project/machomebrew/Bottles/cmake-2.8.7-bottle.tar.gz' + sha1 'f218ed64ce6e7a5d3670acdd6a18e5ed95421d1f' + end def install # A framework-installed expat will be detected and mess things up. diff --git a/Library/Formula/erlang.rb b/Library/Formula/erlang.rb index f59e25a8d..ecd29599f 100644 --- a/Library/Formula/erlang.rb +++ b/Library/Formula/erlang.rb @@ -27,8 +27,10 @@ class Erlang < Formula md5 'f6cd1347dfb6436b99cc1313011a3d24' version 'R14B04' - bottle 'https://downloads.sf.net/project/machomebrew/Bottles/erlang-R14B04-bottle.tar.gz' - bottle_sha1 '0cbd2ebd59491a473b38833970ba0cfb78549594' + bottle do + url 'https://downloads.sf.net/project/machomebrew/Bottles/erlang-R14B04-bottle.tar.gz' + sha1 '0cbd2ebd59491a473b38833970ba0cfb78549594' + end head 'https://github.com/erlang/otp.git', :branch => 'dev' diff --git a/Library/Formula/fltk.rb b/Library/Formula/fltk.rb index 15a455b17..a054cd648 100644 --- a/Library/Formula/fltk.rb +++ b/Library/Formula/fltk.rb @@ -3,11 +3,11 @@ require 'formula' class Fltk < Formula url 'http://ftp2.easysw.com/pub/fltk/1.3.0/fltk-1.3.0-source.tar.gz' homepage 'http://www.fltk.org/' - head 'http://ftp.easysw.com/pub/fltk/snapshots/fltk-1.3.x-r9013.tar.bz2' - if ARGV.build_head? + md5 '44d5d7ba06afdd36ea17da6b4b703ca3' + + devel do + url 'http://ftp.easysw.com/pub/fltk/snapshots/fltk-1.3.x-r9013.tar.bz2' md5 '9c5eb9eb8642be56cb68e7c5b1c98611' - else - md5 '44d5d7ba06afdd36ea17da6b4b703ca3' end depends_on 'jpeg' diff --git a/Library/Formula/fox.rb b/Library/Formula/fox.rb index b74842bda..307532d1f 100644 --- a/Library/Formula/fox.rb +++ b/Library/Formula/fox.rb @@ -2,14 +2,14 @@ require 'formula' class Fox < Formula # Development and stable branches are incompatible - if ARGV.build_devel? + url 'ftp://ftp.fox-toolkit.org/pub/fox-1.6.44.tar.gz' + md5 '6ccc8cbcfa6e4c8b6e4deeeb39c36434' + homepage 'http://www.fox-toolkit.org/' + + devel do url 'http://ftp.fox-toolkit.org/pub/fox-1.7.30.tar.gz' md5 '345df53f1e652bc99d1348444b4e3016' - else - url 'ftp://ftp.fox-toolkit.org/pub/fox-1.6.44.tar.gz' - md5 '6ccc8cbcfa6e4c8b6e4deeeb39c36434' end - homepage 'http://www.fox-toolkit.org/' fails_with_llvm "Inline asm errors during build" if ARGV.build_devel? diff --git a/Library/Formula/ghc.rb b/Library/Formula/ghc.rb index 0014d2847..6b53c4370 100644 --- a/Library/Formula/ghc.rb +++ b/Library/Formula/ghc.rb @@ -2,16 +2,16 @@ require 'formula' class Ghc < Formula homepage 'http://haskell.org/ghc/' - if not ARGV.build_devel? - version '7.0.4' - if ARGV.include? '--64bit' - url "http://www.haskell.org/ghc/dist/7.0.4/ghc-7.0.4-x86_64-apple-darwin.tar.bz2" - md5 'af89d3d2ca6e9b23384baacb7d8161dd' - else - url "http://www.haskell.org/ghc/dist/7.0.4/ghc-7.0.4-i386-apple-darwin.tar.bz2" - md5 'ce297e783d113cf1547386703d1b1061' - end + version '7.0.4' + if ARGV.include? '--64bit' + url "http://www.haskell.org/ghc/dist/7.0.4/ghc-7.0.4-x86_64-apple-darwin.tar.bz2" + md5 'af89d3d2ca6e9b23384baacb7d8161dd' else + url "http://www.haskell.org/ghc/dist/7.0.4/ghc-7.0.4-i386-apple-darwin.tar.bz2" + md5 'ce297e783d113cf1547386703d1b1061' + end + + devel do version '7.2.2' if ARGV.include? '--64bit' url "http://www.haskell.org/ghc/dist/7.2.2/ghc-7.2.2-x86_64-apple-darwin.tar.bz2" diff --git a/Library/Formula/guile.rb b/Library/Formula/guile.rb index aeb5d0cf9..7486abc16 100644 --- a/Library/Formula/guile.rb +++ b/Library/Formula/guile.rb @@ -3,13 +3,12 @@ require 'formula' class Guile < Formula homepage 'http://www.gnu.org/software/guile/' url 'http://ftpmirror.gnu.org/guile/guile-1.8.7.tar.gz' + sha1 '24cd2f06439c76d41d982a7384fe8a0fe5313b54' mirror 'http://ftp.gnu.org/gnu/guile/guile-1.8.7.tar.gz' - head 'http://ftpmirror.gnu.org/guile/guile-2.0.2.tar.gz' - if ARGV.build_head? + devel do + url 'http://ftpmirror.gnu.org/guile/guile-2.0.2.tar.gz' sha1 '1943fd22417ce1e51babbdcd7681e66a794a8da3' - else - sha1 '24cd2f06439c76d41d982a7384fe8a0fe5313b54' end depends_on 'pkg-config' => :build diff --git a/Library/Formula/icu4c.rb b/Library/Formula/icu4c.rb index 944c163ec..73ed68f59 100644 --- a/Library/Formula/icu4c.rb +++ b/Library/Formula/icu4c.rb @@ -6,8 +6,10 @@ class Icu4c < Formula md5 'ea93970a0275be6b42f56953cd332c17' version '4.8.1.1' - bottle 'https://downloads.sf.net/project/machomebrew/Bottles/icu4c-4.8.1.1-bottle.tar.gz' - bottle_sha1 '51b6e6e735ea581a2736127414e600362846b7e1' + bottle do + url 'https://downloads.sf.net/project/machomebrew/Bottles/icu4c-4.8.1.1-bottle.tar.gz' + sha1 '51b6e6e735ea581a2736127414e600362846b7e1' + end keg_only "Conflicts; see: https://github.com/mxcl/homebrew/issues/issue/167" diff --git a/Library/Formula/imagemagick.rb b/Library/Formula/imagemagick.rb index ded45928a..1998337e8 100644 --- a/Library/Formula/imagemagick.rb +++ b/Library/Formula/imagemagick.rb @@ -35,8 +35,10 @@ class Imagemagick < Formula homepage 'http://www.imagemagick.org' head 'https://github.com/trevor/ImageMagick.git' - bottle "http://downloads.sf.net/project/machomebrew/Bottles/imagemagick-#{version}-bottle.tar.gz" - bottle_sha1 'd63cbdfb4e314f17ed1d553e5e1c7f3eebf1654b' + bottle do + url "http://downloads.sf.net/project/machomebrew/Bottles/imagemagick-#{version}-bottle.tar.gz" + sha1 'd63cbdfb4e314f17ed1d553e5e1c7f3eebf1654b' + end depends_on 'jpeg' diff --git a/Library/Formula/libmusicbrainz.rb b/Library/Formula/libmusicbrainz.rb index 00ad7fcb4..d19e07b14 100644 --- a/Library/Formula/libmusicbrainz.rb +++ b/Library/Formula/libmusicbrainz.rb @@ -2,13 +2,13 @@ require 'formula' class Libmusicbrainz < Formula homepage 'http://musicbrainz.org' - if ARGV.build_devel? - version '4.0.0beta1' + url 'http://ftp.musicbrainz.org/pub/musicbrainz/libmusicbrainz-3.0.3.tar.gz' + md5 'f4824d0a75bdeeef1e45cc88de7bb58a' + + devel do url 'ftp://ftp.musicbrainz.org/pub/musicbrainz/libmusicbrainz-4.0.0beta1.tar.gz' md5 '7dffa8fa08e4c0bc8119b8f48a15da41' - else - url 'http://ftp.musicbrainz.org/pub/musicbrainz/libmusicbrainz-3.0.3.tar.gz' - md5 'f4824d0a75bdeeef1e45cc88de7bb58a' + version '4.0.0beta1' end depends_on 'neon' diff --git a/Library/Formula/nginx.rb b/Library/Formula/nginx.rb index defaf7486..796dd19fe 100644 --- a/Library/Formula/nginx.rb +++ b/Library/Formula/nginx.rb @@ -3,12 +3,11 @@ require 'formula' class Nginx < Formula homepage 'http://nginx.org/' url 'http://nginx.org/download/nginx-1.0.11.tar.gz' - head 'http://nginx.org/download/nginx-1.1.13.tar.gz' + md5 'a41a01d7cd46e13ea926d7c9ca283a95' - if ARGV.build_head? + devel do + url 'http://nginx.org/download/nginx-1.1.13.tar.gz' md5 '3a457fc31da382ed0546bfb76fc70c13' - else - md5 'a41a01d7cd46e13ea926d7c9ca283a95' end depends_on 'pcre' diff --git a/Library/Formula/qt.rb b/Library/Formula/qt.rb index 2b3575fbc..66ababb4c 100644 --- a/Library/Formula/qt.rb +++ b/Library/Formula/qt.rb @@ -5,8 +5,11 @@ class Qt < Formula url 'http://get.qt.nokia.com/qt/source/qt-everywhere-opensource-src-4.8.0.tar.gz' md5 'e8a5fdbeba2927c948d9f477a6abe904' homepage 'http://qt.nokia.com/' - bottle 'https://downloads.sf.net/project/machomebrew/Bottles/qt-4.8.0-bottle.tar.gz' - bottle_sha1 '2bfe00c5112b0d2a680cd01144701f8937846096' + + bottle do + url 'https://downloads.sf.net/project/machomebrew/Bottles/qt-4.8.0-bottle.tar.gz' + sha1 '2bfe00c5112b0d2a680cd01144701f8937846096' + end head 'git://gitorious.org/qt/qt.git', :branch => 'master' diff --git a/Library/Formula/scantailor.rb b/Library/Formula/scantailor.rb index 64432d500..6553d6155 100644 --- a/Library/Formula/scantailor.rb +++ b/Library/Formula/scantailor.rb @@ -2,11 +2,10 @@ require 'formula' class Scantailor < Formula homepage 'http://scantailor.sourceforge.net/' + url 'http://downloads.sourceforge.net/project/scantailor/scantailor/0.9.10/scantailor-0.9.10.tar.gz' + md5 'f962c93a2d63b449fa3f6612ade3b028' - unless ARGV.include? '--enhanced' - url 'http://downloads.sourceforge.net/project/scantailor/scantailor/0.9.10/scantailor-0.9.10.tar.gz' - md5 'f962c93a2d63b449fa3f6612ade3b028' - else + devel do url 'http://downloads.sourceforge.net/project/scantailor/scantailor-devel/enhanced/scantailor-enhanced-20110907.tar.gz' md5 '8ba5c23c611e7bdd7cdb40f991f6fd35' version 'enhanced-20110907' @@ -18,12 +17,6 @@ class Scantailor < Formula depends_on 'jpeg' depends_on 'libtiff' - def options - [ - ["--enhanced", "Build experimental \"enhanced\" branch, which includes extra features"] - ] - end - def install system "cmake . #{std_cmake_parameters} -DPNG_INCLUDE_DIR=/usr/X11/include" system "make install" diff --git a/Library/Formula/wine.rb b/Library/Formula/wine.rb index c50cca7ec..ab898cb07 100644 --- a/Library/Formula/wine.rb +++ b/Library/Formula/wine.rb @@ -12,17 +12,15 @@ end class Wine < Formula homepage 'http://winehq.org/' + url 'http://downloads.sourceforge.net/project/wine/Source/wine-1.2.3.tar.bz2' + sha256 '3fd8d3f2b466d07eb90b8198cdc9ec3005917a4533db7b8c6c69058a2e57c61f' + head 'git://source.winehq.org/git/wine.git' - if ARGV.build_devel? + devel do url 'http://downloads.sourceforge.net/project/wine/Source/wine-1.3.35.tar.bz2' sha256 'e23e4da5efebc11206198e9cf2a2638851db4e00a1af0abccd8b6369e99c288b' - else - url 'http://downloads.sourceforge.net/project/wine/Source/wine-1.2.3.tar.bz2' - sha256 '3fd8d3f2b466d07eb90b8198cdc9ec3005917a4533db7b8c6c69058a2e57c61f' end - head 'git://source.winehq.org/git/wine.git' - depends_on 'jpeg' depends_on 'libicns' diff --git a/Library/Homebrew/cmd/audit.rb b/Library/Homebrew/cmd/audit.rb index e980466da..5f4af55a2 100755 --- a/Library/Homebrew/cmd/audit.rb +++ b/Library/Homebrew/cmd/audit.rb @@ -290,7 +290,7 @@ module Homebrew extend self ff.each do |f| problems = [] - if f.unstable and f.stable.nil? + if f.unstable and f.standard.nil? problems += [' * head-only formula'] end @@ -314,6 +314,12 @@ module Homebrew extend self problems += [' * invalid or missing version'] if f.version.to_s.empty? + problems << " * 'devel' block found before stable 'url'" if text =~ /devel.+(url '.+').+(url '.+')/m + + problems << " * 'devel' block found before 'head'" if text =~ /devel.+(head '.+')/m + + problems << " * Empty 'devel' block found" if text =~ /devel do\s+end/ + # Don't try remaining audits on text in __END__ text_without_patch = (text.split("__END__")[0]).strip() diff --git a/Library/Homebrew/cmd/install.rb b/Library/Homebrew/cmd/install.rb index 735db6107..779482b7c 100644 --- a/Library/Homebrew/cmd/install.rb +++ b/Library/Homebrew/cmd/install.rb @@ -89,7 +89,7 @@ module Homebrew extend self next if f.installed? unless ARGV.force? # Building head-only without --HEAD is an error - if not ARGV.build_head? and f.stable.nil? + if not ARGV.build_head? and f.standard.nil? raise "This is a head-only formula; install with `brew install --HEAD #{f.name}`" end diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb index b4763f8fb..bae651bd3 100644 --- a/Library/Homebrew/formula.rb +++ b/Library/Homebrew/formula.rb @@ -100,19 +100,19 @@ class Formula include FileUtils attr_reader :name, :path, :url, :version, :homepage, :specs, :downloader - attr_reader :stable, :unstable - attr_reader :bottle, :bottle_sha1, :head + attr_reader :standard, :unstable + attr_reader :bottle_url, :bottle_sha1, :head # Homebrew determines the name def initialize name='__UNKNOWN__', path=nil set_instance_variable 'homepage' set_instance_variable 'url' - set_instance_variable 'bottle' + set_instance_variable 'bottle_url' set_instance_variable 'bottle_sha1' set_instance_variable 'head' set_instance_variable 'specs' - set_instance_variable 'stable' + set_instance_variable 'standard' set_instance_variable 'unstable' if @head and (not @url or ARGV.build_head?) @@ -120,10 +120,10 @@ class Formula @version = 'HEAD' @spec_to_use = @unstable else - if @stable.nil? + if @standard.nil? @spec_to_use = SoftwareSpecification.new(@url, @specs) else - @spec_to_use = @stable + @spec_to_use = @standard end end @@ -583,7 +583,7 @@ private downloader = @downloader # Don't attempt mirrors if this install is not pointed at a "stable" URL. # This can happen when options like `--HEAD` are invoked. - mirror_list = @spec_to_use == @stable ? mirrors : [] + mirror_list = @spec_to_use == @standard ? mirrors : [] # Ensure the cache exists HOMEBREW_CACHE.mkpath @@ -731,7 +731,7 @@ EOF class << self # The methods below define the formula DSL. - attr_reader :stable, :unstable + attr_reader :standard, :unstable def self.attr_rw(*attrs) attrs.each do |attr| @@ -745,7 +745,7 @@ EOF attr_rw :version, :homepage, :mirrors, :specs, :deps, :external_deps attr_rw :keg_only_reason, :fails_with_llvm_reason, :skip_clean_all - attr_rw :bottle, :bottle_sha1 + attr_rw :bottle_url, :bottle_sha1 attr_rw(*CHECKSUM_TYPES) def head val=nil, specs=nil @@ -757,11 +757,35 @@ EOF def url val=nil, specs=nil return @url if val.nil? - @stable = SoftwareSpecification.new(val, specs) + @standard = SoftwareSpecification.new(val, specs) @url = val @specs = specs end + def stable &block + raise "url and md5 must be specified in a block" unless block_given? + instance_eval &block unless ARGV.build_devel? or ARGV.build_head? + end + + def devel &block + raise "url and md5 must be specified in a block" unless block_given? + instance_eval &block if ARGV.build_devel? + end + + def bottle url=nil, &block + if block_given? + eval <<-EOCLASS + module BottleData + def self.url url; @url = url; end + def self.sha1 sha1; @sha1 = sha1; end + def self.return_data; [@url,@sha1]; end + end + EOCLASS + BottleData.instance_eval &block + @bottle_url, @bottle_sha1 = BottleData.return_data + end + end + def mirror val, specs=nil @mirrors ||= [] @mirrors << {:url => val, :specs => specs} diff --git a/Library/Homebrew/formula_installer.rb b/Library/Homebrew/formula_installer.rb index deee2b956..c5f0f999e 100644 --- a/Library/Homebrew/formula_installer.rb +++ b/Library/Homebrew/formula_installer.rb @@ -15,8 +15,8 @@ class FormulaInstaller @f = ff @show_header = true @ignore_deps = ARGV.include? '--ignore-dependencies' || ARGV.interactive? - @install_bottle = !ff.bottle.nil? && !ARGV.build_from_source? && - Pathname.new(ff.bottle).version == ff.version + @install_bottle = !ff.bottle_url.nil? && !ARGV.build_from_source? && + Pathname.new(ff.bottle_url).version == ff.version end def install @@ -189,7 +189,7 @@ class FormulaInstaller def pour HOMEBREW_CACHE.mkpath - downloader = CurlBottleDownloadStrategy.new f.bottle, f.name, f.version, nil + downloader = CurlBottleDownloadStrategy.new f.bottle_url, f.name, f.version, nil downloader.fetch f.verify_download_integrity downloader.tarball_path, f.bottle_sha1, "SHA1" HOMEBREW_CELLAR.cd do |
