diff options
| author | nibbles 2bits | 2012-08-25 16:04:20 -0700 |
|---|---|---|
| committer | Mike McQuaid | 2012-10-06 21:18:49 +0100 |
| commit | 3cf0db7ed209e9134f21ea326c6260727ed89168 (patch) | |
| tree | 5986a725cd92d49c68cc744ada81cb41518af927 /Library | |
| parent | fb0407fccfbbf354ecf96c7e966c6e1ae5889676 (diff) | |
| download | homebrew-3cf0db7ed209e9134f21ea326c6260727ed89168.tar.bz2 | |
ghc: 7.4.2 build from source
Following the discussion in #13519, ghc gets a major overhaul:
* Add a subformula that installs the ghc binary like before
* Use the ghc binary to build ghc from source
* Force ENV['LD'] = 'ld' to stop an assertion linking with llvm
* Add an option to run the testsuite. 9 unexpected fails atm
* Add a `j1` for an occasional install race
* Remove the patch which was fixed in two commits in Apr 2011.
47ac5d859493ae0cd8dd02e1b4848f993acc3d5c
a8d4731456ac3da0a70399e4ab821a763a4c04fb
Fixes #13519
Signed-off-by: Mike McQuaid <mike@mikemcquaid.com>
Diffstat (limited to 'Library')
| -rw-r--r-- | Library/Formula/ghc.rb | 68 |
1 files changed, 63 insertions, 5 deletions
diff --git a/Library/Formula/ghc.rb b/Library/Formula/ghc.rb index df9f5154f..f0d294e40 100644 --- a/Library/Formula/ghc.rb +++ b/Library/Formula/ghc.rb @@ -13,9 +13,7 @@ class NeedsSnowLeopard < Requirement end end -class Ghc < Formula - homepage 'http://haskell.org/ghc/' - version '7.4.2' +class Ghcbinary < Formula if Hardware.is_64_bit? and not build.build_32_bit? url 'http://www.haskell.org/ghc/dist/7.4.2/ghc-7.4.2-x86_64-apple-darwin.tar.bz2' sha1 '7c655701672f4b223980c3a1068a59b9fbd08825' @@ -23,12 +21,25 @@ class Ghc < Formula url 'http://www.haskell.org/ghc/dist/7.4.2/ghc-7.4.2-i386-apple-darwin.tar.bz2' sha1 '60f749893332d7c22bb4905004a67510992d8ef6' end + version '7.4.2' +end + +class Ghctestsuite < Formula + url 'https://github.com/ghc/testsuite/tarball/ghc-7.4.2-release' + sha1 '6b1f161a78a70638aacc931abfdef7dd50c7f923' +end + +class Ghc < Formula + homepage 'http://haskell.org/ghc/' + url 'http://www.haskell.org/ghc/dist/7.4.2/ghc-7.4.2-src.tar.bz2' + sha1 '73b3b39dc164069bc80b69f7f2963ca1814ddf3d' env :std depends_on NeedsSnowLeopard.new option '32-bit' + option 'tests', 'Verify the build using the testsuite in Fast Mode, 5 min' fails_with :clang do build 421 @@ -38,9 +49,56 @@ class Ghc < Formula EOS end + def patches + # Explained: http://hackage.haskell.org/trac/ghc/ticket/7040 + # Discussed: https://github.com/mxcl/homebrew/issues/13519 + # Remove: version > 7.4.2 + 'http://hackage.haskell.org/trac/ghc/raw-attachment/ticket/7040/ghc7040.patch' + end + def install - system "./configure", "--prefix=#{prefix}" - system "make install" + # Move the main tarball contents into a subdirectory + (buildpath+'Ghcsource').install Dir['*'] + + # Define where the subformula will temporarily install itself + subprefix = buildpath+'subfo' + + Ghcbinary.new.brew do + system "./configure", "--prefix=#{subprefix}" + # Temporary j1 to stop an intermittent race condition + system 'make', '-j1', 'install' + ENV.prepend 'PATH', subprefix/'bin', ':' + end + + cd 'Ghcsource' do + # Fix an assertion when linking ghc with llvm-gcc + # https://github.com/mxcl/homebrew/issues/13650 + ENV['LD'] = 'ld' + + if Hardware.is_64_bit? and not build.build_32_bit? + arch = 'x86_64' + else + arch = 'i386' + end + + system "./configure", "--prefix=#{prefix}", + "--build=#{arch}-apple-darwin" + system 'make' + if build.include? 'tests' + Ghctestsuite.new.brew do + (buildpath+'Ghcsource/config').install Dir['config/*'] + (buildpath+'Ghcsource/driver').install Dir['driver/*'] + (buildpath+'Ghcsource/mk').install Dir['mk/*'] + (buildpath+'Ghcsource/tests').install Dir['tests/*'] + (buildpath+'Ghcsource/timeout').install Dir['timeout/*'] + cd (buildpath+'Ghcsource/tests') do + system 'make', 'CLEANUP=1', "THREADS=#{ENV.make_jobs}", 'fast' + end + end + end + ENV.j1 # Fixes an intermittent race condition + system 'make', 'install' + end end def caveats; <<-EOS.undent |
