diff --git a/Formula/gdal.rb b/Formula/gdal.rb index 12478d6c14..804206979c 100644 --- a/Formula/gdal.rb +++ b/Formula/gdal.rb @@ -2,9 +2,8 @@ require 'formula' class Gdal < Formula homepage 'http://www.gdal.org/' - url 'http://download.osgeo.org/gdal/1.10.1/gdal-1.10.1.tar.gz' - sha1 'b4df76e2c0854625d2bedce70cc1eaf4205594ae' - revision 1 + url 'http://download.osgeo.org/gdal/1.11.0/gdal-1.11.0.tar.gz' + sha1 '25efd2bffdea2e841377ca8c1fd49d89d02ac87e' bottle do sha1 "01dee8d333f89ba82165c2eb72816bafc687a308" => :mavericks @@ -22,8 +21,9 @@ class Gdal < Formula option 'enable-armadillo', 'Build with Armadillo accelerated TPS transforms.' option 'enable-unsupported', "Allow configure to drag in any library it can find. Invoke this at your own risk." option 'enable-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)" - depends_on :python => :recommended + depends_on :python => :optional if build.with? "python" depends_on :fortran => :build end @@ -45,6 +45,12 @@ class Gdal < Formula depends_on 'homebrew/science/armadillo' if build.include? 'enable-armadillo' + if build.with? "libkml" + depends_on "autoconf" => :build + depends_on "automake" => :build + depends_on "libtool" => :build + end + if build.include? 'complete' # Raster libraries depends_on "homebrew/science/netcdf" # Also brings in HDF5 @@ -61,28 +67,30 @@ class Gdal < Formula # Other libraries depends_on "xz" # get liblzma compression algorithm library from XZutils depends_on "poppler" + depends_on "json-c" end - # Prevent build failure on 10.6 / 10.7: http://trac.osgeo.org/gdal/ticket/5197 - # Fix build against MySQL 5.6.x: http://trac.osgeo.org/gdal/ticket/5284 - patch :DATA - - stable do - # Patch of configure that finds Mac Java for MDB driver (uses Oracle or Mac default JDK) - # TODO: Remove when future GDAL release includes a fix - # http://trac.osgeo.org/gdal/ticket/5267 (patch applied to trunk, 2.0 release milestone) - # Must come before DATA - patch do - url "https://gist.githubusercontent.com/dakcarto/6877854/raw/82ae81e558c0b6048336f0acb5d7577bd0a237d5/gdal-mdb-patch.diff" - sha1 "ea6c753df9e35abd90d7078f8a727eaab7f7d996" - end if build.include? "enable-mdb" - end + # 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' + patch do + url "https://gist.githubusercontent.com/dakcarto/7abad108aa31a1e53fb4/raw/gdal-armadillo.patch" + sha1 "3af1cae94a977d55541adba0d86c697d77bd1320" + end if build.include? "enable-armadillo" resource 'numpy' do url 'http://downloads.sourceforge.net/project/numpy/NumPy/1.8.1/numpy-1.8.1.tar.gz' sha1 '8fe1d5f36bab3f1669520b4c7d8ab59a21a984da' 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 get_configure_args args = [ # Base configuration. @@ -118,6 +126,7 @@ class Gdal < Formula "--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 @@ -170,12 +179,12 @@ class Gdal < Formula msg oci ingres - libkml dwgdirect idb sde podofo rasdaman + sosi ] args.concat unsupported_backends.map {|b| '--without-' + b} unless build.include? 'enable-unsupported' @@ -190,6 +199,8 @@ class Gdal < Formula 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' @@ -206,7 +217,7 @@ class Gdal < Formula args << "--without-ruby" args << (build.include?("enable-opencl") ? "--with-opencl" : "--without-opencl") - args << (build.include?("enable-armadillo") ? "--with-armadillo=yes" : "--with-armadillo=no") + args << (build.include?("enable-armadillo") ? "--with-armadillo=#{Formula["armadillo"].opt_prefix}" : "--with-armadillo=no") return args end @@ -219,6 +230,24 @@ class Gdal < Formula resource('numpy').stage { system "python", "setup.py", *numpy_args } end + 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 @@ -271,168 +300,10 @@ class Gdal < Formula EOS end end -end -__END__ -diff --git a/GDALmake.opt.in b/GDALmake.opt.in -index d7273aa..2fcbd53 100644 ---- a/GDALmake.opt.in -+++ b/GDALmake.opt.in -@@ -123,6 +123,7 @@ INGRES_INC = @INGRES_INC@ - HAVE_MYSQL = @HAVE_MYSQL@ - MYSQL_LIB = @MYSQL_LIB@ - MYSQL_INC = @MYSQL_INC@ -+MYSQL_NEEDS_LOAD_DEFAULTS_DECLARATION = @MYSQL_NEEDS_LOAD_DEFAULTS_DECLARATION@ - LIBS += $(MYSQL_LIB) - - # -diff --git a/configure b/configure -index 1c4f8fb..120b17f 100755 ---- a/configure -+++ b/configure -@@ -700,6 +700,7 @@ INGRES_INC - INGRES_LIB - II_SYSTEM - HAVE_INGRES -+MYSQL_NEEDS_LOAD_DEFAULTS_DECLARATION - MYSQL_LIB - MYSQL_INC - HAVE_MYSQL -@@ -23045,6 +23046,34 @@ $as_echo "no, mysql is pre-4.x" >&6; } - MYSQL_INC="`$MYSQL_CONFIG --include`" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 - $as_echo "yes" >&6; } -+ -+ # Check if mysql headers declare load_defaults -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking load_defaults() in MySQL" >&5 -+$as_echo_n "checking load_defaults() in MySQL... " >&6; } -+ rm -f testmysql.* -+ echo '#include "my_global.h"' > testmysql.cpp -+ echo '#include "my_sys.h"' >> testmysql.cpp -+ echo 'int main(int argc, char** argv) { load_defaults(0, 0, 0, 0); return 0; } ' >> testmysql.cpp -+ if test -z "`${CXX} ${CXXFLAGS} ${MYSQL_INC} -o testmysql testmysql.cpp ${MYSQL_LIB} 2>&1`" ; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes, found in my_sys.h" >&5 -+$as_echo "yes, found in my_sys.h" >&6; } -+ else -+ echo 'extern "C" void load_defaults(const char *conf_file, const char **groups, int *argc, char ***argv);' > testmysql.cpp -+ echo 'int main(int argc, char** argv) { load_defaults(0, 0, 0, 0); return 0; } ' >> testmysql.cpp -+ if test -z "`${CXX} ${CXXFLAGS} ${MYSQL_INC} -o testmysql testmysql.cpp ${MYSQL_LIB} 2>&1`" ; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes, found in library but not in header" >&5 -+$as_echo "yes, found in library but not in header" >&6; } -+ MYSQL_NEEDS_LOAD_DEFAULTS_DECLARATION=yes -+ else -+ HAVE_MYSQL=no -+ MYSQL_LIB= -+ MYSQL_INC= -+ as_fn_error $? "Cannot find load_defaults()" "$LINENO" 5 -+ fi -+ fi -+ rm -f testmysql.* -+ rm -f testmysql -+ - ;; - esac - fi -@@ -23055,6 +23084,8 @@ MYSQL_INC=$MYSQL_INC - - MYSQL_LIB=$MYSQL_LIB - -+MYSQL_NEEDS_LOAD_DEFAULTS_DECLARATION=$MYSQL_NEEDS_LOAD_DEFAULTS_DECLARATION -+ - - - -diff --git a/configure.in b/configure.in -index 481e8ea..d83797f 100644 ---- a/configure.in -+++ b/configure.in -@@ -2294,6 +2294,31 @@ else - MYSQL_LIB="`$MYSQL_CONFIG --libs`" - MYSQL_INC="`$MYSQL_CONFIG --include`" - AC_MSG_RESULT([yes]) -+ -+ # Check if mysql headers declare load_defaults -+ AC_MSG_CHECKING([load_defaults() in MySQL]) -+ rm -f testmysql.* -+ echo '#include "my_global.h"' > testmysql.cpp -+ echo '#include "my_sys.h"' >> testmysql.cpp -+ echo 'int main(int argc, char** argv) { load_defaults(0, 0, 0, 0); return 0; } ' >> testmysql.cpp -+ if test -z "`${CXX} ${CXXFLAGS} ${MYSQL_INC} -o testmysql testmysql.cpp ${MYSQL_LIB} 2>&1`" ; then -+ AC_MSG_RESULT([yes, found in my_sys.h]) -+ else -+ echo 'extern "C" void load_defaults(const char *conf_file, const char **groups, int *argc, char ***argv);' > testmysql.cpp -+ echo 'int main(int argc, char** argv) { load_defaults(0, 0, 0, 0); return 0; } ' >> testmysql.cpp -+ if test -z "`${CXX} ${CXXFLAGS} ${MYSQL_INC} -o testmysql testmysql.cpp ${MYSQL_LIB} 2>&1`" ; then -+ AC_MSG_RESULT([yes, found in library but not in header]) -+ MYSQL_NEEDS_LOAD_DEFAULTS_DECLARATION=yes -+ else -+ HAVE_MYSQL=no -+ MYSQL_LIB= -+ MYSQL_INC= -+ AC_MSG_ERROR([Cannot find load_defaults()]) -+ fi -+ fi -+ rm -f testmysql.* -+ rm -f testmysql -+ - ;; - esac - fi -@@ -2301,6 +2326,7 @@ fi - AC_SUBST(HAVE_MYSQL,$HAVE_MYSQL) - AC_SUBST(MYSQL_INC,$MYSQL_INC) - AC_SUBST(MYSQL_LIB,$MYSQL_LIB) -+AC_SUBST(MYSQL_NEEDS_LOAD_DEFAULTS_DECLARATION,$MYSQL_NEEDS_LOAD_DEFAULTS_DECLARATION) - - dnl --------------------------------------------------------------------------- - dnl INGRES support. -diff --git a/ogr/ogrsf_frmts/mysql/GNUmakefile b/ogr/ogrsf_frmts/mysql/GNUmakefile -index 292ae45..e78398d 100644 ---- a/ogr/ogrsf_frmts/mysql/GNUmakefile -+++ b/ogr/ogrsf_frmts/mysql/GNUmakefile -@@ -7,6 +7,11 @@ OBJ = ogrmysqldriver.o ogrmysqldatasource.o \ - - CPPFLAGS := -I.. -I../.. $(GDAL_INCLUDE) $(MYSQL_INC) $(CPPFLAGS) - -+ifeq ($(MYSQL_NEEDS_LOAD_DEFAULTS_DECLARATION),yes) -+CPPFLAGS += -DMYSQL_NEEDS_LOAD_DEFAULTS_DECLARATION -+endif -+ -+ - default: $(O_OBJ:.o=.$(OBJ_EXT)) - - clean: -diff --git a/ogr/ogrsf_frmts/mysql/ogrmysqldatasource.cpp b/ogr/ogrsf_frmts/mysql/ogrmysqldatasource.cpp -index 65c275b..447e374 100644 ---- a/ogr/ogrsf_frmts/mysql/ogrmysqldatasource.cpp -+++ b/ogr/ogrsf_frmts/mysql/ogrmysqldatasource.cpp -@@ -36,6 +36,16 @@ - #include "cpl_conv.h" - #include "cpl_string.h" - -+/* Recent versions of mysql no longer declare load_defaults() in my_sys.h */ -+/* but they still have it in the lib. Very fragile... */ -+#ifdef MYSQL_NEEDS_LOAD_DEFAULTS_DECLARATION -+extern "C" { -+int load_defaults(const char *conf_file, const char **groups, -+ int *argc, char ***argv); -+void free_defaults(char **argv); -+} -+#endif -+ - CPL_CVSID("$Id: ogrmysqldatasource.cpp 24947 2012-09-22 09:54:23Z rouault $"); - /************************************************************************/ - /* OGRMySQLDataSource() */ -diff --git a/port/cpl_spawn.cpp b/port/cpl_spawn.cpp -index d702594..69ea3c2 100644 ---- a/port/cpl_spawn.cpp -+++ b/port/cpl_spawn.cpp -@@ -464,7 +464,7 @@ void CPLSpawnAsyncCloseErrorFileHandle(CPLSpawnedProcess* p) - #ifdef __APPLE__ - #include - #endif -- #if defined(__APPLE__) && !defined(TARGET_OS_IPHONE) -+ #if defined(__APPLE__) && (!defined(TARGET_OS_IPHONE) || TARGET_OS_IPHONE==0) - #include - #define environ (*_NSGetEnviron()) - #else + test do + # basic tests to see if third-party dylibs are loading OK + system "#{bin}/gdalinfo", "--formats" + system "#{bin}/ogrinfo", "--formats" + end +end