53473b6bf5
The MacOS.version? family of methods (other than "leopard?") are poorly defined and lead to confusing code. Replace them in formulae with more explicit comparisons. "MacOS.version" is a special version object that can be compared to numerics, symbols, and strings using the standard Ruby comparison methods. The old methods were moved to compat when the version comparison code was merged, and they must remain there "forever", but they should not be used in new code. Signed-off-by: Jack Nagel <jacknagel@gmail.com>
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
|