8c29982153
This reverts commit adee5315265cc46aa6a3057071527abb16e1cd94. Turns out one of the "other things" is a dealbreaker. We only create kegs using a formula's canonical name. However, we do not check that this is the case when mapping existing kegs back to formula objects, and thus a keg with a name that happens to be an alias can fool Homebrew into thinking the canonically-named keg exists. So anything that enumerates kegs and then tries to do stuff with the resulting formula objects will just break. This is obviously worse than the debugger being broken, so reverting this for the time being.
107 lines
3.7 KiB
Ruby
107 lines
3.7 KiB
Ruby
require 'formula'
|
|
|
|
# Leading underscore because this method is defined differently
|
|
# in compat, and anything that loads this file would end up with
|
|
# this definition instead!
|
|
def _snow_leopard_64?
|
|
# 64 bit builds on 10.6 require some special handling.
|
|
MacOS.version == :snow_leopard and MacOS.prefer_64_bit?
|
|
end
|
|
|
|
class Octave < Formula
|
|
homepage 'http://www.gnu.org/software/octave/index.html'
|
|
url 'http://ftpmirror.gnu.org/octave/octave-3.6.2.tar.bz2'
|
|
mirror 'http://ftp.gnu.org/gnu/octave/octave-3.6.2.tar.bz2'
|
|
sha1 '145fef0122268086727a60e1c33e29d56fd546d7'
|
|
|
|
option 'without-graphicsmagick', 'Compile without GraphicsMagick'
|
|
option 'without-fltk', 'Compile without fltk (disables native graphics)'
|
|
option 'test', 'Run tests before installing'
|
|
|
|
depends_on 'pkg-config' => :build
|
|
depends_on 'gnu-sed' => :build
|
|
depends_on 'texinfo' => :build # OS X's makeinfo won't work for this
|
|
|
|
depends_on :x11
|
|
depends_on 'fftw'
|
|
# When building 64-bit binaries on Snow Leopard, there are naming issues with
|
|
# the dot product functions in the BLAS library provided by Apple's
|
|
# Accelerate framework. See the following thread for the gory details:
|
|
#
|
|
# http://www.macresearch.org/lapackblas-fortran-106
|
|
#
|
|
# We can work around the issues using dotwrp.
|
|
depends_on 'dotwrp' if _snow_leopard_64?
|
|
# octave refuses to work with BSD readline, so it's either this or --disable-readline
|
|
depends_on 'readline'
|
|
depends_on 'curl' if MacOS.version == :leopard # Leopard's libcurl is too old
|
|
|
|
# additional features
|
|
depends_on 'suite-sparse'
|
|
depends_on 'glpk'
|
|
depends_on 'graphicsmagick' => :recommended unless build.include? 'without-graphicsmagick'
|
|
depends_on 'hdf5'
|
|
depends_on 'pcre'
|
|
depends_on 'qhull'
|
|
depends_on 'qrupdate'
|
|
|
|
if build.include? 'without-fltk'
|
|
# required for plotting if we don't have native graphics
|
|
depends_on 'gnuplot'
|
|
else
|
|
depends_on 'fltk'
|
|
end
|
|
|
|
def install
|
|
ENV.fortran
|
|
|
|
# yes, compiling octave takes a long time, but using -O2 gives negligible savings
|
|
# build time with -O2: user 58m5.295s sys 7m29.064s
|
|
# build time with -O3: user 58m58.054s sys 7m52.221s
|
|
ENV.m64 if MacOS.prefer_64_bit?
|
|
ENV.append_to_cflags "-D_REENTRANT"
|
|
|
|
args = [
|
|
"--disable-dependency-tracking",
|
|
"--prefix=#{prefix}",
|
|
# Cant use `-framework Accelerate` because `mkoctfile`, the tool used to
|
|
# compile extension packages, can't parse `-framework` flags.
|
|
"--with-blas=#{'-ldotwrp ' if _snow_leopard_64?}-Wl,-framework -Wl,Accelerate",
|
|
# SuiteSparse-4.x.x fix, see http://savannah.gnu.org/bugs/?37031
|
|
"--with-umfpack=-lumfpack -lsuitesparseconfig",
|
|
]
|
|
args << "--without-framework-carbon" if MacOS.version >= :lion
|
|
# avoid spurious 'invalid assignment to cs-list' erorrs on 32 bit installs:
|
|
args << 'CXXFLAGS=-O0' unless MacOS.prefer_64_bit?
|
|
|
|
system "./configure", *args
|
|
system "make all"
|
|
system "make check 2>&1 | tee make-check.log" if build.include? 'test'
|
|
system "make install"
|
|
|
|
prefix.install ["test/fntests.log", "make-check.log"] if build.include? 'test'
|
|
end
|
|
|
|
def caveats
|
|
native_caveats = <<-EOS.undent
|
|
Octave supports "native" plotting using OpenGL and FLTK. You can activate
|
|
it for all future figures using the Octave command
|
|
|
|
graphics_toolkit ("fltk")
|
|
|
|
or for a specific figure handle h using
|
|
|
|
graphics_toolkit (h, "fltk")
|
|
|
|
Otherwise, gnuplot is still used by default, if available.
|
|
EOS
|
|
|
|
gnuplot_caveats = <<-EOS.undent
|
|
When plotting with gnuplot, you should set "GNUTERM=x11" before running octave;
|
|
if you are using Aquaterm, use "GNUTERM=aqua".
|
|
EOS
|
|
|
|
s = gnuplot_caveats
|
|
s = native_caveats + s unless build.include? 'without-fltk'
|
|
end
|
|
end
|