aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Library/Formula/gdal.rb154
1 files changed, 151 insertions, 3 deletions
diff --git a/Library/Formula/gdal.rb b/Library/Formula/gdal.rb
index 0cc2863c9..78023fb75 100644
--- a/Library/Formula/gdal.rb
+++ b/Library/Formula/gdal.rb
@@ -182,9 +182,8 @@ class Gdal < Formula
end
def patches
- # Prevent build failure on 10.6 / 10.7
- # TODO: Remove when 1.10.2 releases
- # http://trac.osgeo.org/gdal/ticket/5197
+ # 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
DATA
end
@@ -245,6 +244,155 @@ class Gdal < Formula
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