336 lines
11 KiB
Ruby
336 lines
11 KiB
Ruby
class Gdal < Formula
|
|
desc "Geospatial Data Abstraction Library"
|
|
homepage "http://www.gdal.org/"
|
|
url "http://download.osgeo.org/gdal/1.11.5/gdal-1.11.5.tar.gz"
|
|
sha256 "49f99971182864abed9ac42de10545a92392d88f7dbcfdb11afe449a7eb754fe"
|
|
revision 3
|
|
|
|
bottle do
|
|
rebuild 1
|
|
sha256 "4d084ada89aa6461c48730686ae157ae0f3447cc7b04aa11ffecb3e19feb81a7" => :high_sierra
|
|
sha256 "69dcd735eb3543c602e65d2b35be1f09dd62724d8673571397f2802a38d5e3de" => :sierra
|
|
sha256 "4d960f47450a62f7b59fa3d83691c8379111f6d00ad7231774d21bdcc45ebcc2" => :el_capitan
|
|
sha256 "4107e0b06a0466f37f5ffe8dfddae8ccc8eafce8c187ccf4382a3986851115bb" => :yosemite
|
|
end
|
|
|
|
head do
|
|
url "https://svn.osgeo.org/gdal/trunk/gdal"
|
|
depends_on "doxygen" => :build
|
|
end
|
|
|
|
option "with-complete", "Use additional Homebrew libraries to provide more drivers."
|
|
option "with-opencl", "Build with OpenCL acceleration."
|
|
option "with-armadillo", "Build with Armadillo accelerated TPS transforms."
|
|
option "with-unsupported", "Allow configure to drag in any library it can find. Invoke this at your own risk."
|
|
option "with-mdb", "Build with Access MDB driver (requires Java 1.6+ JDK/JRE, from Apple or Oracle)."
|
|
option "with-libkml", "Build with Google's libkml driver (requires libkml --HEAD or >= 1.3)"
|
|
option "with-swig-java", "Build the swig java bindings"
|
|
option "without-python", "Build without python2 support"
|
|
|
|
deprecated_option "enable-opencl" => "with-opencl"
|
|
deprecated_option "enable-armadillo" => "with-armadillo"
|
|
deprecated_option "enable-unsupported" => "with-unsupported"
|
|
deprecated_option "enable-mdb" => "with-mdb"
|
|
deprecated_option "complete" => "with-complete"
|
|
|
|
depends_on "libpng"
|
|
depends_on "jpeg"
|
|
depends_on "giflib"
|
|
depends_on "libtiff"
|
|
depends_on "libgeotiff"
|
|
depends_on "proj"
|
|
depends_on "geos"
|
|
depends_on "json-c"
|
|
depends_on "libxml2"
|
|
depends_on "pcre"
|
|
depends_on "sqlite" # To ensure compatibility with SpatiaLite.
|
|
depends_on "freexl"
|
|
depends_on "libspatialite"
|
|
|
|
depends_on "postgresql" => :optional
|
|
depends_on "mysql" => :optional
|
|
depends_on "armadillo" => :optional
|
|
|
|
if build.with? "libkml"
|
|
depends_on "autoconf" => :build
|
|
depends_on "automake" => :build
|
|
depends_on "libtool" => :build
|
|
end
|
|
|
|
if build.with? "complete"
|
|
# Raster libraries
|
|
depends_on "netcdf" # Also brings in HDF5
|
|
depends_on "jasper"
|
|
depends_on "webp"
|
|
depends_on "cfitsio"
|
|
depends_on "epsilon"
|
|
depends_on "libdap"
|
|
depends_on "libxml2"
|
|
|
|
# Vector libraries
|
|
depends_on "unixodbc" # macOS version is not complete enough
|
|
depends_on "xerces-c"
|
|
|
|
# Other libraries
|
|
depends_on "xz" # get liblzma compression algorithm library from XZutils
|
|
depends_on "poppler"
|
|
depends_on "podofo"
|
|
depends_on "json-c"
|
|
end
|
|
|
|
depends_on :java => ["1.7+", :optional, :build]
|
|
|
|
if build.with? "swig-java"
|
|
depends_on "ant" => :build
|
|
depends_on "swig" => :build
|
|
end
|
|
|
|
depends_on "python" => :optional if MacOS.version <= :snow_leopard
|
|
depends_on :python3 => :optional
|
|
depends_on :fortran => :build if build.with?("python") || build.with?("python3")
|
|
|
|
# Extra linking libraries in configure test of armadillo may throw warning
|
|
# see: https://trac.osgeo.org/gdal/ticket/5455
|
|
# including prefix lib dir added by Homebrew:
|
|
# ld: warning: directory not found for option "-L/usr/local/Cellar/gdal/1.11.0/lib"
|
|
if build.with? "armadillo"
|
|
patch do
|
|
url "https://gist.githubusercontent.com/dakcarto/7abad108aa31a1e53fb4/raw/b56887208fd91d0434d5a901dae3806fb1bd32f8/gdal-armadillo.patch"
|
|
sha256 "e6880b9256abe2c289f4b1196792a626c689772390430c36976c0c5e0f339124"
|
|
end
|
|
end
|
|
|
|
resource "numpy" do
|
|
url "https://pypi.python.org/packages/source/n/numpy/numpy-1.9.3.tar.gz"
|
|
sha256 "c3b74d3b9da4ceb11f66abd21e117da8cf584b63a0efbd01a9b7e91b693fbbd6"
|
|
end
|
|
|
|
resource "libkml" do
|
|
# Until 1.3 is stable, use master branch
|
|
url "https://github.com/google/libkml.git",
|
|
:revision => "9b50572641f671194e523ad21d0171ea6537426e"
|
|
version "1.3-dev"
|
|
end
|
|
|
|
def configure_args
|
|
args = [
|
|
# Base configuration.
|
|
"--prefix=#{prefix}",
|
|
"--mandir=#{man}",
|
|
"--disable-debug",
|
|
"--with-local=#{prefix}",
|
|
"--with-threads",
|
|
"--with-libtool",
|
|
|
|
# GDAL native backends.
|
|
"--with-pcraster=internal",
|
|
"--with-pcidsk=internal",
|
|
"--with-bsb",
|
|
"--with-grib",
|
|
"--with-pam",
|
|
|
|
# Default Homebrew backends.
|
|
"--with-png=#{Formula["libpng"].opt_prefix}",
|
|
"--with-curl=/usr/bin/curl-config",
|
|
"--with-jpeg=#{HOMEBREW_PREFIX}",
|
|
"--without-jpeg12", # Needs specially configured JPEG and TIFF libraries.
|
|
"--with-gif=#{HOMEBREW_PREFIX}",
|
|
"--with-libtiff=#{HOMEBREW_PREFIX}",
|
|
"--with-geotiff=#{HOMEBREW_PREFIX}",
|
|
"--with-sqlite3=#{Formula["sqlite"].opt_prefix}",
|
|
"--with-freexl=#{HOMEBREW_PREFIX}",
|
|
"--with-spatialite=#{HOMEBREW_PREFIX}",
|
|
"--with-geos=#{HOMEBREW_PREFIX}/bin/geos-config",
|
|
"--with-static-proj4=#{HOMEBREW_PREFIX}",
|
|
"--with-libjson-c=#{Formula["json-c"].opt_prefix}",
|
|
|
|
# GRASS backend explicitly disabled. Creates a chicken-and-egg problem.
|
|
# Should be installed separately after GRASS installation using the
|
|
# official GDAL GRASS plugin.
|
|
"--without-grass",
|
|
"--without-libgrass",
|
|
]
|
|
|
|
# Optional Homebrew packages supporting additional formats.
|
|
supported_backends = %w[
|
|
liblzma
|
|
cfitsio
|
|
hdf5
|
|
netcdf
|
|
jasper
|
|
xerces
|
|
odbc
|
|
dods-root
|
|
epsilon
|
|
webp
|
|
podofo
|
|
]
|
|
if build.with? "complete"
|
|
supported_backends.delete "liblzma"
|
|
args << "--with-liblzma=yes"
|
|
args.concat supported_backends.map { |b| "--with-" + b + "=" + HOMEBREW_PREFIX }
|
|
elsif build.without? "unsupported"
|
|
args.concat supported_backends.map { |b| "--without-" + b }
|
|
end
|
|
|
|
# The following libraries are either proprietary, not available for public
|
|
# download or have no stable version in the Homebrew core that is
|
|
# compatible with GDAL. Interested users will have to install such software
|
|
# manually and most likely have to tweak the install routine.
|
|
#
|
|
# Podofo is disabled because Poppler provides the same functionality and
|
|
# then some.
|
|
unsupported_backends = %w[
|
|
gta
|
|
ogdi
|
|
fme
|
|
hdf4
|
|
openjpeg
|
|
fgdb
|
|
ecw
|
|
kakadu
|
|
mrsid
|
|
jp2mrsid
|
|
mrsid_lidar
|
|
msg
|
|
oci
|
|
ingres
|
|
dwgdirect
|
|
idb
|
|
sde
|
|
podofo
|
|
rasdaman
|
|
sosi
|
|
]
|
|
args.concat unsupported_backends.map { |b| "--without-" + b } if build.without? "unsupported"
|
|
|
|
# Database support.
|
|
args << (build.with?("postgresql") ? "--with-pg=#{HOMEBREW_PREFIX}/bin/pg_config" : "--without-pg")
|
|
args << (build.with?("mysql") ? "--with-mysql=#{HOMEBREW_PREFIX}/bin/mysql_config" : "--without-mysql")
|
|
|
|
if build.with? "mdb"
|
|
args << "--with-java=yes"
|
|
# The rpath is only embedded for Oracle (non-framework) installs
|
|
args << "--with-jvm-lib-add-rpath=yes"
|
|
args << "--with-mdb=yes"
|
|
end
|
|
|
|
args << "--with-libkml=#{libexec}" if build.with? "libkml"
|
|
|
|
# Python is installed manually to ensure everything is properly sandboxed.
|
|
args << "--without-python"
|
|
|
|
# Scripting APIs that have not been re-worked to respect Homebrew prefixes.
|
|
#
|
|
# Currently disabled as they install willy-nilly into locations outside of
|
|
# the Homebrew prefix. Enable if you feel like it, but uninstallation may be
|
|
# a manual affair.
|
|
#
|
|
# TODO: Fix installation of script bindings so they install into the
|
|
# Homebrew prefix.
|
|
args << "--without-perl"
|
|
args << "--without-php"
|
|
args << "--without-ruby"
|
|
|
|
args << (build.with?("opencl") ? "--with-opencl" : "--without-opencl")
|
|
args << (build.with?("armadillo") ? "--with-armadillo=#{Formula["armadillo"].opt_prefix}" : "--with-armadillo=no")
|
|
|
|
args
|
|
end
|
|
|
|
def install
|
|
inreplace "frmts/jpeg2000/jpeg2000_vsil_io.cpp",
|
|
"stream->bufbase_ = JAS_CAST(uchar *, buf);",
|
|
"stream->bufbase_ = JAS_CAST(u_char *, buf);"
|
|
|
|
if build.with? "libkml"
|
|
resource("libkml").stage do
|
|
# See main `libkml` formula for info on patches
|
|
inreplace "configure.ac", "-Werror", ""
|
|
inreplace "third_party/Makefile.am" do |s|
|
|
s.sub! /(lib_LTLIBRARIES =) libminizip.la liburiparser.la/, "\\1"
|
|
s.sub! /(noinst_LTLIBRARIES = libgtest.la libgtest_main.la)/,
|
|
"\\1 libminizip.la liburiparser.la"
|
|
s.sub! /(libminizip_la_LDFLAGS =)/, "\\1 -static"
|
|
s.sub! /(liburiparser_la_LDFLAGS =)/, "\\1 -static"
|
|
end
|
|
|
|
system "./autogen.sh"
|
|
system "./configure", "--prefix=#{libexec}"
|
|
system "make", "install"
|
|
end
|
|
end
|
|
|
|
# Linking flags for SQLite are not added at a critical moment when the GDAL
|
|
# library is being assembled. This causes the build to fail due to missing
|
|
# symbols. Also, ensure Homebrew SQLite is used so that Spatialite is
|
|
# functional.
|
|
#
|
|
# Fortunately, this can be remedied using LDFLAGS.
|
|
sqlite = Formula["sqlite"]
|
|
ENV.append "LDFLAGS", "-L#{sqlite.opt_lib} -lsqlite3"
|
|
ENV.append "CFLAGS", "-I#{sqlite.opt_include}"
|
|
|
|
# Reset ARCHFLAGS to match how we build.
|
|
ENV["ARCHFLAGS"] = "-arch #{MacOS.preferred_arch}"
|
|
|
|
# Fix hardcoded mandir: https://trac.osgeo.org/gdal/ticket/5092
|
|
inreplace "configure", %r[^mandir='\$\{prefix\}/man'$], ""
|
|
|
|
# These libs are statically linked in vendored libkml and libkml formula
|
|
inreplace "configure", " -lminizip -luriparser", "" if build.with? "libkml"
|
|
|
|
system "./configure", *configure_args
|
|
system "make"
|
|
system "make", "install"
|
|
|
|
inreplace "swig/python/setup.cfg", /#(.*_dirs)/, "\\1"
|
|
Language::Python.each_python(build) do |python, python_version|
|
|
numpy_site_packages = buildpath/"homebrew-numpy/lib/python#{python_version}/site-packages"
|
|
numpy_site_packages.mkpath
|
|
ENV["PYTHONPATH"] = numpy_site_packages
|
|
resource("numpy").stage do
|
|
system python, *Language::Python.setup_install_args(buildpath/"homebrew-numpy")
|
|
end
|
|
cd "swig/python" do
|
|
system python, *Language::Python.setup_install_args(prefix)
|
|
bin.install Dir["scripts/*"] if python == "python"
|
|
end
|
|
end
|
|
|
|
if build.with? "swig-java"
|
|
cd "swig/java" do
|
|
inreplace "java.opt", "linux", "darwin"
|
|
inreplace "java.opt", "#JAVA_HOME = /usr/lib/jvm/java-6-openjdk/", "JAVA_HOME=$(shell echo $$JAVA_HOME)"
|
|
system "make"
|
|
system "make", "install"
|
|
|
|
# Install the jar that complements the native JNI bindings
|
|
system "ant"
|
|
lib.install "gdal.jar"
|
|
end
|
|
end
|
|
|
|
system "make", "man" if build.head?
|
|
system "make", "install-man"
|
|
# Clean up any stray doxygen files.
|
|
Dir.glob("#{bin}/*.dox") { |p| rm p }
|
|
end
|
|
|
|
def caveats
|
|
if build.with? "mdb"
|
|
<<~EOS
|
|
To have a functional MDB driver, install supporting .jar files in:
|
|
`/Library/Java/Extensions/`
|
|
|
|
See: `http://www.gdal.org/ogr/drv_mdb.html`
|
|
EOS
|
|
end
|
|
end
|
|
|
|
test do
|
|
# basic tests to see if third-party dylibs are loading OK
|
|
system "#{bin}/gdalinfo", "--formats"
|
|
system "#{bin}/ogrinfo", "--formats"
|
|
end
|
|
end
|