Last active
November 21, 2018 19:58
-
-
Save meeech/b236c0ddce32a03b249b86d8cf09f26a to your computer and use it in GitHub Desktop.
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
class Octave < Formula | |
desc "a high-level interpreted language for numerical computations." | |
homepage "https://www.gnu.org/software/octave/index.html" | |
url "http://ftpmirror.gnu.org/octave/octave-3.8.2.tar.bz2" | |
mirror "https://ftp.gnu.org/gnu/octave/octave-3.8.2.tar.bz2" | |
sha256 "83bbd701aab04e7e57d0d5b8373dd54719bebb64ce0a850e69bf3d7454f33bae" | |
head "http://www.octave.org/hg/octave", :branch => "default", :using => :hg | |
revision 2 | |
bottle do | |
sha256 "98d8a35cd7c4e20e13b77e6999bc75a39ef52f8e5fa6deafd80f60e10c8db8d0" => :yosemite | |
sha256 "0a28985e322d56002755469a22cc5ae3c487c191d35c8b5b3b25c34abcc0b2cb" => :mavericks | |
sha256 "35344dafa1cb05d8d7d1c77c469e012d404b0a5062c840ed062570c94fce3d2b" => :mountain_lion | |
end | |
# Allows other software to interface Octave and find its headers. | |
# See: https://github.com/shogun-toolbox/shogun/issues/2396 | |
patch :DATA | |
skip_clean "share/info" # Keep the docs | |
option "without-check", "Skip build-time tests (not recommended)" | |
option "without-docs", "Don't build documentation" | |
option "without-gui", "Do not build the experimental GUI" | |
option "with-native-graphics", "Use native OpenGL/FLTKgraphics (does not work with the GUI)" | |
option "without-gnuplot", "Do not use gnuplot graphics" | |
option "with-jit", "Use the experimental JIT support (not recommended)" | |
option "with-openblas", "Use OpenBLAS instead of native LAPACK/BLAS" | |
option "without-curl", "Do not use cURL (urlread/urlwrite/@ftp)" | |
option "without-fftw", "Do not use FFTW (fft,ifft,fft2,etc.)" | |
option "without-glpk", "Do not use GLPK" | |
option "without-hdf5", "Do not use HDF5 (hdf5 data file support)" | |
option "without-qhull", "Do not use the Qhull library (delaunay,voronoi,etc.)" | |
option "without-qrupdate", "Do not use the QRupdate package (qrdelete,qrinsert,qrshift,qrupdate)" | |
option "without-suite-sparse421", "Do not use SuiteSparse (sparse matrix operations)" | |
option "without-zlib", "Do not use zlib (compressed MATLAB file formats)" | |
depends_on :fortran | |
depends_on "pkg-config" => :build | |
depends_on "gnu-sed" => :build | |
depends_on "texinfo" => :build if build.with?("docs") && OS.linux? | |
head do | |
depends_on "bison" => :build | |
depends_on "automake" => :build | |
depends_on "autoconf" => :build | |
depends_on "qscintilla2" | |
depends_on "qt" | |
depends_on "fltk" | |
depends_on "fontconfig" | |
depends_on "freetype" | |
end | |
depends_on "pcre" | |
if build.with? "gui" | |
depends_on "qscintilla2" | |
depends_on "qt" | |
end | |
if build.with? "native-graphics" | |
depends_on "fltk" | |
depends_on "fontconfig" | |
depends_on "freetype" | |
end | |
depends_on "llvm" if build.with? "jit" | |
depends_on "curl" if build.with?("curl") && MacOS.version == :leopard | |
depends_on :java => :recommended | |
depends_on "gnuplot" => [:recommended, build.with?("gui") ? "with-qt" : ""] | |
depends_on "suite-sparse421" => :recommended | |
depends_on "readline" => :recommended | |
depends_on "arpack" => :recommended | |
depends_on "fftw" => :recommended | |
depends_on "glpk" => :recommended | |
depends_on "gl2ps" => :recommended | |
depends_on "graphicsmagick" => :recommended # imread/imwrite | |
depends_on "hdf5" => :recommended | |
depends_on "qhull" => :recommended | |
depends_on "qrupdate" => :recommended | |
depends_on "epstool" => :recommended | |
depends_on "ghostscript" => :recommended # ps/pdf image output | |
depends_on "pstoedit" if build.with? "ghostscript" | |
depends_on "openblas" => :optional | |
def install | |
ENV.m64 if MacOS.prefer_64_bit? | |
ENV.append_to_cflags "-D_REENTRANT" | |
ENV.append "LDFLAGS", "-L#{Formula["readline"].opt_lib} -lreadline" if build.with? "readline" | |
args = ["--prefix=#{prefix}"] | |
args << "--with-blas=-L#{Formula["openblas"].opt_lib} -lopenblas" if build.with? "openblas" | |
args << "--disable-docs" if build.without? "docs" | |
args << "--enable-jit" if build.with? "jit" | |
args << "--disable-gui" if build.without? "gui" | |
args << "--without-opengl" if build.without?("native-graphics") && !build.head? | |
args << "--disable-readline" if build.without? "readline" | |
args << "--without-curl" if build.without? "curl" | |
args << "--without-fftw3" if build.without? "fftw" | |
args << "--without-glpk" if build.without? "glpk" | |
args << "--without-hdf5" if build.without? "hdf5" | |
args << "--disable-java" if build.without? :java | |
args << "--without-qhull" if build.without? "qhull" | |
args << "--without-qrupdate" if build.without? "qrupdate" | |
if build.without? "suite-sparse421" | |
args << "--without-amd" | |
args << "--without-camd" | |
args << "--without-colamd" | |
args << "--without-ccolamd" | |
args << "--without-cxsparse" | |
args << "--without-camd" | |
args << "--without-cholmod" | |
args << "--without-umfpack" | |
else | |
sparse = Tab.for_name("suite-sparse421") | |
ENV.append_to_cflags "-L#{Formula["metis4"].opt_lib} -lmetis" if sparse.with? "metis4" | |
end | |
args << "--without-zlib" if build.without? "zlib" | |
args << "--with-x=no" if OS.mac? # We don't need X11 for Mac at all | |
system "./bootstrap" if build.head? | |
# Libtool needs to see -framework to handle dependencies better. | |
inreplace "configure", "-Wl,-framework -Wl,", "-framework " | |
# The Mac build configuration passes all linker flags to mkoctfile to | |
# be inserted into every oct/mex build. This is actually unnecessary and | |
# can cause linking problems. | |
inreplace "src/mkoctfile.in.cc", /%OCTAVE_CONF_OCT(AVE)?_LINK_(DEPS|OPTS)%/, '""' | |
if build.with?("gnuplot") && build.with?("gui") | |
# ~/.octaverc takes precedence over site octaverc | |
open("scripts/startup/local-rcfile", "a") do |file| | |
file.write "setenv('GNUTERM','#{build.with?("gui") ? "qt" : ""}')" | |
end | |
end | |
system "./configure", *args | |
system "make", "all" | |
system "make check 2>&1 | tee make-check.log" if build.with? "check" | |
system "make", "install" | |
prefix.install "make-check.log" if File.exist? "make-check.log" | |
prefix.install "test/fntests.log" if File.exist? "test/fntests.log" | |
end | |
def caveats | |
s = "" | |
if build.with? "gnuplot" | |
s += <<-EOS.undent | |
gnuplot's Qt terminal is supported by default with the Octave GUI. | |
Use other gnuplot graphics terminals by setting the environment variable | |
GNUTERM in ~/.octaverc, and building gnuplot with the matching options. | |
setenv('GNUTERM','qt') # Default graphics terminal with Octave GUI | |
setenv('GNUTERM','x11') # Requires XQuartz; install gnuplot --with-x | |
setenv('GNUTERM','wxt') # wxWidgets/pango; install gnuplot --wx | |
setenv('GNUTERM','aqua') # Requires AquaTerm; install gnuplot --with-aquaterm | |
You may also set this variable from within Octave. | |
EOS | |
end | |
if build.with?("native graphics") || build.head? | |
s += <<-EOS.undent | |
You have configured Octave to use "native" OpenGL/FLTK plotting by | |
default. If you prefer gnuplot, you can activate it for all future | |
figures with the command | |
graphics_toolkit ('gnuplot') | |
or for a specific figure handle h using | |
graphics_toolkit (h,'gnuplot') | |
EOS | |
end | |
if build.head? | |
s += <<-EOS.undent | |
The HEAD installation activates the experimental GUI by default. | |
To use the CLI version of octave, run the command "octave-cli". | |
EOS | |
elsif build.with? "gui" | |
s += <<-EOS.undent | |
The Octave GUI is experimental and not enabled by default. To use it, | |
use the command-line argument "--force-gui"; e.g., | |
octave --force-gui | |
EOS | |
if build.with? "native-graphics" | |
s += <<-EOS.undent | |
Native graphics do *not* work with the GUI. You must switch to | |
gnuplot when using it. | |
EOS | |
end | |
end | |
logfile = "#{prefix}/make-check.log" | |
if File.exist? logfile | |
logs = `grep 'libinterp/array/.*FAIL \\d' #{logfile}` | |
unless logs.empty? | |
s += <<-EOS.undent | |
Octave's self-tests for this installation produced the following failues: | |
-------- | |
EOS | |
s += logs + <<-EOS.undent | |
-------- | |
These failures indicate a conflict between Octave and its BLAS-related | |
dependencies. You can likely correct these by removing and reinstalling | |
arpack, qrupdate, suite-sparse421, and octave. Please use the same BLAS | |
settings for all (i.e., with the default, or "--with-openblas"). | |
EOS | |
end | |
end | |
s += "\n" unless s.empty? | |
s | |
end | |
test do | |
system "octave", "--eval", "'(22/7 - pi)/pi'" | |
end | |
end | |
__END__ | |
diff --git a/libinterp/corefcn/comment-list.h b/libinterp/corefcn/comment-list.h | |
index 2f2c4d5..18df774 100644 | |
--- a/libinterp/corefcn/comment-list.h | |
+++ b/libinterp/corefcn/comment-list.h | |
@@ -25,7 +25,7 @@ along with Octave; see the file COPYING. If not, see | |
#include <string> | |
-#include <base-list.h> | |
+#include "base-list.h" | |
extern std::string get_comment_text (void); | |
diff --git a/libinterp/corefcn/oct.h b/libinterp/corefcn/oct.h | |
index c6d21ad..db06357 100644 | |
--- a/libinterp/corefcn/oct.h | |
+++ b/libinterp/corefcn/oct.h | |
@@ -28,7 +28,7 @@ along with Octave; see the file COPYING. If not, see | |
// config.h needs to be first because it includes #defines that can */ | |
// affect other header files. | |
-#include <config.h> | |
+#include "config.h" | |
#include "Matrix.h" | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment