Created
December 25, 2012 23:56
-
-
Save jvalduvieco/4376548 to your computer and use it in GitHub Desktop.
Erlang Homebrew formula with wxgtk support.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require 'formula' | |
class ErlangManuals < Formula | |
url 'http://erlang.org/download/otp_doc_man_R15B03-1.tar.gz' | |
sha1 'c8674767cd0c1f98946f6a08c7ae318c3f026988' | |
end | |
class ErlangHtmls < Formula | |
url 'http://erlang.org/download/otp_doc_html_R15B03-1.tar.gz' | |
sha1 '49d761d8554a83be00e18f681b32b94572f9c050' | |
end | |
class ErlangHeadManuals < Formula | |
url 'http://erlang.org/download/otp_doc_man_R15B03-1.tar.gz' | |
sha1 'c8674767cd0c1f98946f6a08c7ae318c3f026988' | |
end | |
class ErlangHeadHtmls < Formula | |
url 'http://erlang.org/download/otp_doc_html_R15B03-1.tar.gz' | |
sha1 '49d761d8554a83be00e18f681b32b94572f9c050' | |
end | |
class Erlang < Formula | |
homepage 'http://www.erlang.org' | |
# Download tarball from GitHub; it is served faster than the official tarball. | |
url 'https://github.com/erlang/otp/tarball/OTP_R15B03-1' | |
sha1 '5ba866722de79956b06966c232490d32bb7ba0a6' | |
head 'https://github.com/erlang/otp.git', :branch => 'dev' | |
bottle do | |
sha1 'bf26236524bc9d3a63f4504600e3f33943b149a7' => :mountainlion | |
sha1 'b4b634b8073e7bcaa424eef16bdcff771de87210' => :lion | |
sha1 '093cf021d9731ef26b763e02166a702d61c571a1' => :snowleopard | |
end | |
# remove the autoreconf if possible | |
depends_on :automake | |
depends_on :autoconf #Joan | |
depends_on :libtool | |
depends_on 'wxgtk' if build.include? 'with-wxgtk' | |
fails_with :llvm do | |
build 2334 | |
end | |
option 'disable-hipe', "Disable building hipe; fails on various OS X systems" | |
option 'halfword', 'Enable halfword emulator (64-bit builds only)' | |
option 'time', '`brew test --time` to include a time-consuming test' | |
option 'no-docs', 'Do not install documentation' | |
option 'with-wxgtk','Enable wx GTK, useful on mountain lion where wxwidgets 2.8 does not compile' | |
def patches | |
# Fix build for 64 bits machines | |
"https://gist.github.com/raw/4370480/181f8056668ad9c5989b9cc7c0d59ad97586c458/enable_wx_on_64bits.diff" if build.include? 'with-wxgtk' | |
end | |
def install | |
ohai "Compilation takes a long time; use `brew install -v erlang` to see progress" unless ARGV.verbose? | |
if ENV.compiler == :llvm | |
# Don't use optimizations. Fixes build on Lion/Xcode 4.2 | |
ENV.remove_from_cflags /-O./ | |
ENV.append_to_cflags '-O0' | |
end | |
ENV.append 'LDFLAGS', '-framework Appkit' if build.include? 'with-wxgtk' | |
# Do this if building from a checkout to generate configure | |
system "./otp_build autoconf" if File.exist? "otp_build" | |
args = ["--disable-debug", | |
"--prefix=#{prefix}", | |
"--enable-kernel-poll", | |
"--enable-threads", | |
"--enable-dynamic-ssl-lib", | |
"--enable-shared-zlib", | |
"--enable-smp-support"] | |
args << "--with-dynamic-trace=dtrace" unless MacOS.version == :leopard | |
unless build.include? 'disable-hipe' | |
# HIPE doesn't strike me as that reliable on OS X | |
# http://syntatic.wordpress.com/2008/06/12/macports-erlang-bus-error-due-to-mac-os-x-1053-update/ | |
# http://www.erlang.org/pipermail/erlang-patches/2008-September/000293.html | |
args << '--enable-hipe' | |
end | |
if MacOS.prefer_64_bit? | |
args << "--enable-darwin-64bit" | |
args << "--enable-halfword-emulator" if build.include? 'halfword' # Does not work with HIPE yet. Added for testing only | |
end | |
system "./configure", *args | |
if (MacOS.version >= :snow_leopard && !build.include?('with-wxgtk')) | |
touch 'lib/wx/SKIP' | |
end | |
system "make" | |
system "make install" | |
unless build.include? 'no-docs' | |
manuals = build.head? ? ErlangHeadManuals : ErlangManuals | |
manuals.new.brew { man.install Dir['man/*'] } | |
htmls = build.head? ? ErlangHeadHtmls : ErlangHtmls | |
htmls.new.brew { doc.install Dir['*'] } | |
end | |
end | |
def test | |
`#{bin}/erl -noshell -eval 'crypto:start().' -s init stop` | |
# This test takes some time to run, but per bug #120 should finish in | |
# "less than 20 minutes". It takes a few minutes on a Mac Pro (2009). | |
if build.include? "time" | |
`#{bin}/dialyzer --build_plt -r #{lib}/erlang/lib/kernel-2.15/ebin/` | |
end | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment