commit: e748080fd04e9196cfb3146e6f341f06f3be6813 Author: Thomas Deutschmann <whissi <AT> gentoo <DOT> org> AuthorDate: Sun Dec 4 21:09:14 2016 +0000 Commit: Thomas Deutschmann <whissi <AT> gentoo <DOT> org> CommitDate: Mon Dec 5 14:16:54 2016 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=e748080f
sci-libs/gdal: Bump to v2.0.3 - Version bump to new upstream release v2.0.3. - Bumped to EAPI=6. - Enabled python3_5 support. - "oracle" USE flag added (Fixes Gentoo-Bug #585156). - Fixes a build issue when using "java" USE flag and you have a JRE installed (patch for gdal provided by James Le Cuirot, thanks!). - MDB driver now uses new dev-java/jackcess pack (patch for gdal provided by James Le Cuirot, thanks!) - Switched JPEG-2000 provider from media-libs/jasper to media-libs/openjpeg:2 because JasPer is unmaintained and vulnerable. Gentoo-Bug: https://bugs.gentoo.org/585156 Closes: https://github.com/gentoo/gentoo/pull/2106 Package-Manager: portage-2.3.2 profiles/arch/arm/package.use.mask | 4 + profiles/arch/powerpc/ppc32/package.use.mask | 4 + profiles/arch/powerpc/ppc64/32ul/package.use.mask | 6 +- sci-libs/gdal/Manifest | 1 + sci-libs/gdal/files/gdal-1.5.0-soname-r1.patch | 13 + .../gdal-2.0.3-add-dlopen-support-for-jvm.patch | 232 ++++++++++++++++ sci-libs/gdal/files/gdal-2.0.3-install_name.patch | 49 ++++ sci-libs/gdal/gdal-2.0.3.ebuild | 291 +++++++++++++++++++++ 8 files changed, 599 insertions(+), 1 deletion(-) diff --git a/profiles/arch/arm/package.use.mask b/profiles/arch/arm/package.use.mask index 15c657a..7159328 100644 --- a/profiles/arch/arm/package.use.mask +++ b/profiles/arch/arm/package.use.mask @@ -2,6 +2,10 @@ # Distributed under the terms of the GNU General Public License v2 # $Id$ +# Thomas Deutschmann <[email protected]> (2016-12-04) +# sci-libs/gdal[mdb] requires dev-java/jackcess which is not keyworded +>=sci-libs/gdal-2.0.3 mdb + # Christoph Junghans <[email protected]> (11 Sep 2016) # Missing keywords on openmpi deps sys-cluster/openmpi openmpi_fabrics_ofed openmpi_fabrics_knem openmpi_fabrics_psm openmpi_rm_pbs openmpi_rm_slurm openmpi_ofed_features_rdmacm diff --git a/profiles/arch/powerpc/ppc32/package.use.mask b/profiles/arch/powerpc/ppc32/package.use.mask index 4ea06c9..44f98d9 100644 --- a/profiles/arch/powerpc/ppc32/package.use.mask +++ b/profiles/arch/powerpc/ppc32/package.use.mask @@ -4,6 +4,10 @@ # This file requires >=portage-2.1.1 +# Thomas Deutschmann <[email protected]> (2016-12-04) +# sci-libs/gdal[mdb] requires dev-java/jackcess which is not keyworded +>=sci-libs/gdal-2.0.3 mdb + # Michał Górny <[email protected]> (18 Nov 2016) # libomp does not support 32-bit PPC, #600148. sys-devel/clang-runtime openmp diff --git a/profiles/arch/powerpc/ppc64/32ul/package.use.mask b/profiles/arch/powerpc/ppc64/32ul/package.use.mask index 6b924cb..6a05e0f 100644 --- a/profiles/arch/powerpc/ppc64/32ul/package.use.mask +++ b/profiles/arch/powerpc/ppc64/32ul/package.use.mask @@ -1,6 +1,10 @@ -# Copyright 1999-2009 Gentoo Foundation +# Copyright 1999-2016 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Id$ +# Thomas Deutschmann <[email protected]> (2016-12-04) +# sci-libs/gdal[mdb] requires dev-java/jackcess which is not keyworded +>=sci-libs/gdal-2.0.3 mdb + # The appropriate dependencies are already keyworded for 32bit, just not 64bit gnome-base/gvfs -bluetooth diff --git a/sci-libs/gdal/Manifest b/sci-libs/gdal/Manifest index fbc1190..109dfbf 100644 --- a/sci-libs/gdal/Manifest +++ b/sci-libs/gdal/Manifest @@ -1,3 +1,4 @@ DIST gdal-1.11.1.tar.gz 10731242 SHA256 f46b5944a8cabc8516673f231f466131cdfd2cdc6677dbee5d96ec7fc58a3340 SHA512 17214ae17a5199d73477d17cf8680396aee8a28d4333cf55818bdd869548dc6a4d7535d7e05949696db31a7be4a511c5ca73199af3dda48d9a40d5640618e9c3 WHIRLPOOL 1f07ee4acccf58552ddef6b5a306b9dbe832014f6890d353f195ab0d47dfc4e81164b7c8b9cefc9915035d113d2f28818f05e89918728eadb0e80e43e7220b5b DIST gdal-1.11.2.tar.gz 10746847 SHA256 66bc8192d24e314a66ed69285186d46e6999beb44fc97eeb9c76d82a117c0845 SHA512 f1f025de5a618cc2458b6d1f066647341ad4ded1cc2a08e4b78756d96d38715ddd8ba34b7c263369bde66cb20c7919195e13b60a1ecadee25ef80db79f3eb7da WHIRLPOOL 77274f6f9b9bb29fc21c6f274512bccebc7748420c31e3e626d26087194f69b9606354603b393b77903451b073d034f2508403193fdf738f5b099d7808771653 DIST gdal-2.0.2.tar.gz 11643726 SHA256 db7722caf8d9dd798ec18012b9cacf40a518918466126a88b9fd277bd7d40cc4 SHA512 b3fedc8d1d0522d2a6fd22fbc722c551ebf2e4326f64b76c9c43cd3848f7c97a0636c691ee383b3f3c872dc79cd0e216527d3985c6aac3103395fde657db1266 WHIRLPOOL 889b35d0c2d972681d30eb33b731498b58951ed64a37d0152b15f8d9c3e414703158498cc6eb1bc75a3cd598a567738e4e937fffa6a55cdff2b6cf87338e25e6 +DIST gdal-2.0.3.tar.gz 11589011 SHA256 af661066a0bcac733521d66a73375dbe70b0e87d234a99af9f8f1d034c127914 SHA512 3ed2a084fa146fab8d5f5e039480ab935edaefebe9e55f85bf637a4487a3f56951c93055395850e7bf35d5a6d6e901f741ae01ad64be87597aabfad52f1c5e90 WHIRLPOOL 15bc985dc9a8543e3cc7caaca36e41bb9891558adaea2c3883af3d58d5059d01eacda9e8e79b6051c230dd84d08b93b9a8c778758b8fab14d146d42bfba22659 diff --git a/sci-libs/gdal/files/gdal-1.5.0-soname-r1.patch b/sci-libs/gdal/files/gdal-1.5.0-soname-r1.patch new file mode 100644 index 00000000..ec35018 --- /dev/null +++ b/sci-libs/gdal/files/gdal-1.5.0-soname-r1.patch @@ -0,0 +1,13 @@ +--- old/GDALmake.opt.in.orig 2008-02-02 18:25:48.000000000 -0800 ++++ new/GDALmake.opt.in 2008-02-02 18:54:53.000000000 -0800 +@@ -97,6 +97,10 @@ + GDAL_SLIB = $(GDAL_ROOT)/libgdal.$(SO_EXT) + GDAL_SLIB_LINK = -L$(GDAL_ROOT) -lgdal + ++# for building without libtool ++GDAL_SLIB_SO_VER = $(GDAL_VERSION_MAJOR).$(LIBGDAL_CURRENT).$(LIBGDAL_REVISION) ++GDAL_SLIB_SONAME = -Wl,-soname,libgdal.$(SO_EXT).$(GDAL_VERSION_MAJOR) ++ + # Mac OS X Framework definition + MACOSX_FRAMEWORK = @MACOSX_FRAMEWORK@ + diff --git a/sci-libs/gdal/files/gdal-2.0.3-add-dlopen-support-for-jvm.patch b/sci-libs/gdal/files/gdal-2.0.3-add-dlopen-support-for-jvm.patch new file mode 100644 index 00000000..7c35d1c --- /dev/null +++ b/sci-libs/gdal/files/gdal-2.0.3-add-dlopen-support-for-jvm.patch @@ -0,0 +1,232 @@ +From baba2c213770972e79be6be4902716278f351fb4 Mon Sep 17 00:00:00 2001 +From: James Le Cuirot <[email protected]> +Date: Wed, 24 Aug 2016 23:32:13 +0100 +Subject: [PATCH 1/2] Allow libjvm.so to be dlopen'd with --with-jvm-lib=dlopen + +Having to set LD_LIBRARY_PATH is a pain and relying on the rpath can +be problematic when libjvm.so lives in a versioned directory. Some +distributions even allow per-user JVM selection so checking the value +of JAVA_HOME at runtime allows this choice to be respected. + +libjvm.so's location is hard to predict (amd64 vs i386, jre or not?) +so ${JAVA_HOME}/bin/java -XshowSettings is executed to find its +location. If JAVA_HOME is not set then java is executed from the PATH +instead. +--- + gdal/configure | 11 +++++- + gdal/configure.in | 7 +++- + gdal/ogr/ogrsf_frmts/mdb/ogrmdbjackcess.cpp | 57 +++++++++++++++++++++++++++-- + gdal/port/cpl_config.h.in | 3 ++ + 4 files changed, 71 insertions(+), 7 deletions(-) + +diff --git a/configure b/configure +index 75e4e279de..acdfa439de 100755 +--- a/configure ++++ b/configure +@@ -1753,7 +1753,7 @@ Optional Packages: + --with-python=ARG Enable python bindings (ARG=yes, no, or path to python binary) + --with-java Include Java support (ARG=yes, no or JDK home path) [default=no] + --with-mdb Include MDB driver +- --with-jvm-lib=ARG ARG points to Java libjvm path ++ --with-jvm-lib=ARG ARG is dlopen or points to Java libjvm path + --with-jvm-lib-add-rpath Add the libjvm path to the RPATH (no by default) + --with-rasdaman=DIR Include rasdaman support (DIR is rasdaman's install dir). + --with-armadillo=ARG Include Armadillo support for faster TPS transform computation (ARG=yes/no/path to armadillo install root) [default=no] +@@ -29491,7 +29491,14 @@ if test "${with_jvm_lib_add_rpath+set}" = set; then : + fi + + +- if test "x$with_jvm_lib" != "x"; then ++ if test "x$with_jvm_lib" = "xdlopen"; then ++ ++cat >>confdefs.h <<_ACEOF ++#define JVM_LIB_DLOPEN 1 ++_ACEOF ++ ++ JVM_LIB="-ldl" ++ elif test "x$with_jvm_lib" != "x"; then + if test -d "$with_jvm_lib"; then + saved_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -L$with_jvm_lib" +diff --git a/configure.in b/configure.in +index 91efa5a32a..546ff04049 100644 +--- a/configure.in ++++ b/configure.in +@@ -4213,11 +4213,14 @@ if test "$with_mdb" = "yes" ; then + AC_MSG_ERROR("--with-java must be specified.") + fi + +- AC_ARG_WITH(jvm-lib, [ --with-jvm-lib=[ARG] ARG points to Java libjvm path],,) ++ AC_ARG_WITH(jvm-lib, [ --with-jvm-lib=[ARG] ARG is dlopen or points to Java libjvm path],,) + + AC_ARG_WITH(jvm-lib-add-rpath,[ --with-jvm-lib-add-rpath Add the libjvm path to the RPATH (no by default)],,) + +- if test "x$with_jvm_lib" != "x"; then ++ if test "x$with_jvm_lib" = "xdlopen"; then ++ AC_DEFINE_UNQUOTED(JVM_LIB_DLOPEN, 1, [Define to 1 if libjvm.so should be dlopen'd]) ++ JVM_LIB="-ldl" ++ elif test "x$with_jvm_lib" != "x"; then + if test -d "$with_jvm_lib"; then + saved_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -L$with_jvm_lib" +diff --git a/ogr/ogrsf_frmts/mdb/ogrmdbjackcess.cpp b/ogr/ogrsf_frmts/mdb/ogrmdbjackcess.cpp +index b068adf777..bc54a115df 100644 +--- a/ogr/ogrsf_frmts/mdb/ogrmdbjackcess.cpp ++++ b/ogr/ogrsf_frmts/mdb/ogrmdbjackcess.cpp +@@ -29,6 +29,11 @@ + + #include "ogr_mdb.h" + ++#if JVM_LIB_DLOPEN ++#include <limits.h> ++#include <stdio.h> ++#endif ++ + CPL_CVSID("$Id: ogrmdbjackcess.cpp 27044 2014-03-16 23:41:27Z rouault $"); + + static JavaVM *jvm_static = NULL; +@@ -161,9 +166,41 @@ int OGRMDBJavaEnv::Init() + { + JavaVM* vmBuf[1]; + jsize nVMs; ++ int ret = 0; ++ ++#if JVM_LIB_DLOPEN ++ const char *jvmLibPtr = "libjvm.so"; ++ char jvmLib[PATH_MAX]; ++ ++ FILE *javaCmd = popen("\"${JAVA_HOME}${JAVA_HOME:+/bin/}java\" -XshowSettings 2>&1 | sed -n '/\\bsun\\.boot\\.library\\.path =/s:.* = \\(.*\\):\\1/server/libjvm.so:p'", "r"); ++ ++ if (javaCmd != NULL) ++ { ++ size_t javaCmdRead = fread(jvmLib, 1, PATH_MAX, javaCmd); ++ ret = pclose(javaCmd); ++ ++ if (ret == 0 && javaCmdRead >= 2) ++ { ++ /* Chomp the new line */ ++ jvmLib[javaCmdRead - 1] = '\0'; ++ jvmLibPtr = jvmLib; ++ } ++ } ++ ++ jint (*pfnJNI_GetCreatedJavaVMs)(JavaVM **, jsize, jsize *); ++ pfnJNI_GetCreatedJavaVMs = (jint (*)(JavaVM **, jsize, jsize *)) ++ CPLGetSymbol(jvmLibPtr, "JNI_GetCreatedJavaVMs"); ++ ++ if (pfnJNI_GetCreatedJavaVMs == NULL) ++ return FALSE; ++ else ++ ret = pfnJNI_GetCreatedJavaVMs(vmBuf, 1, &nVMs); ++#else ++ ret = JNI_GetCreatedJavaVMs(vmBuf, 1, &nVMs); ++#endif + + /* Are we already called from Java ? */ +- if (JNI_GetCreatedJavaVMs(vmBuf, 1, &nVMs) == JNI_OK && nVMs == 1) ++ if (ret == JNI_OK && nVMs == 1) + { + jvm = vmBuf[0]; + if (jvm->GetEnv((void **)&env, JNI_VERSION_1_2) == JNI_OK) +@@ -194,8 +231,22 @@ int OGRMDBJavaEnv::Init() + args.nOptions = 0; + args.ignoreUnrecognized = JNI_FALSE; + +- int ret = JNI_CreateJavaVM(&jvm, (void **)&env, &args); +- if (ret != 0 || jvm == NULL || env == NULL) ++#if JVM_LIB_DLOPEN ++ jint (*pfnJNI_CreateJavaVM)(JavaVM **, void **, void *); ++ pfnJNI_CreateJavaVM = (jint (*)(JavaVM **, void **, void *)) ++ CPLGetSymbol(jvmLibPtr, "JNI_CreateJavaVM"); ++ ++ if (pfnJNI_CreateJavaVM == NULL) ++ return FALSE; ++ else ++ ret = pfnJNI_CreateJavaVM(&jvm, (void **)&env, &args); ++#else ++ ret = JNI_CreateJavaVM(&jvm, (void **)&env, &args); ++#endif ++ ++ CPLFree(pszClassPathOption); ++ ++ if (ret != JNI_OK || jvm == NULL || env == NULL) + { + CPLError(CE_Failure, CPLE_AppDefined, "JNI_CreateJavaVM failed (%d)", ret); + return FALSE; +diff --git a/port/cpl_config.h.in b/port/cpl_config.h.in +index 313729fd3e..e8fa21140a 100644 +--- a/port/cpl_config.h.in ++++ b/port/cpl_config.h.in +@@ -161,6 +161,9 @@ + /* For .cpp files, define as const if the declaration of iconv() needs const. */ + #undef ICONV_CPP_CONST + ++/* Define to 1 if libjvm.so should be dlopen'd */ ++#undef JVM_LIB_DLOPEN ++ + /* Define to the sub-directory in which libtool stores uninstalled libraries. + */ + #undef LT_OBJDIR +-- +2.11.0 + + +From cd6bbb60ced62b6176482e86c54ab618e2592ac8 Mon Sep 17 00:00:00 2001 +From: James Le Cuirot <[email protected]> +Date: Thu, 25 Aug 2016 21:26:20 +0100 +Subject: [PATCH 2/2] Fetch jackcess classpath using java-config instead of + using CLASSPATH + +--- + gdal/ogr/ogrsf_frmts/mdb/ogrmdbjackcess.cpp | 26 ++++++++++++++++++++++---- + 1 file changed, 22 insertions(+), 4 deletions(-) + +diff --git a/ogr/ogrsf_frmts/mdb/ogrmdbjackcess.cpp b/ogr/ogrsf_frmts/mdb/ogrmdbjackcess.cpp +index bc54a115df..5b0972677e 100644 +--- a/ogr/ogrsf_frmts/mdb/ogrmdbjackcess.cpp ++++ b/ogr/ogrsf_frmts/mdb/ogrmdbjackcess.cpp +@@ -218,19 +218,37 @@ int OGRMDBJavaEnv::Init() + JavaVMInitArgs args; + JavaVMOption options[1]; + args.version = JNI_VERSION_1_2; +- const char* pszClassPath = CPLGetConfigOption("CLASSPATH", NULL); +- CPLString osClassPathOption; ++ ++ FILE *javaCmd = popen("java-config --with-dependencies --classpath=jackcess-1", "r"); ++ ++ const char* pszClassPath = NULL; ++ if (javaCmd != NULL) ++ { ++ pszClassPath = CPLReadLine(javaCmd); ++ ret = pclose(javaCmd); ++ ++ if (ret != 0) ++ pszClassPath = NULL; ++ } ++ ++ if (pszClassPath == NULL) ++ pszClassPath = CPLGetConfigOption("CLASSPATH", NULL); ++ ++ char* pszClassPathOption = NULL; + if (pszClassPath) + { + args.nOptions = 1; +- osClassPathOption.Printf("-Djava.class.path=%s", pszClassPath); +- options[0].optionString = (char*) osClassPathOption.c_str(); ++ pszClassPathOption = CPLStrdup(CPLSPrintf("-Djava.class.path=%s", pszClassPath)); ++ options[0].optionString = pszClassPathOption; + args.options = options; + } + else + args.nOptions = 0; + args.ignoreUnrecognized = JNI_FALSE; + ++ if (javaCmd != NULL) ++ CPLReadLine(NULL); ++ + #if JVM_LIB_DLOPEN + jint (*pfnJNI_CreateJavaVM)(JavaVM **, void **, void *); + pfnJNI_CreateJavaVM = (jint (*)(JavaVM **, void **, void *)) +-- +2.11.0 + diff --git a/sci-libs/gdal/files/gdal-2.0.3-install_name.patch b/sci-libs/gdal/files/gdal-2.0.3-install_name.patch new file mode 100644 index 00000000..1e83d55 --- /dev/null +++ b/sci-libs/gdal/files/gdal-2.0.3-install_name.patch @@ -0,0 +1,49 @@ +Unbreak compilation on Darwin + +Author: Fabian Groffen <[email protected]> + +--- gdal-2.0.3.old/GDALmake.opt.in ++++ gdal-2.0.3/GDALmake.opt.in +@@ -104,6 +104,10 @@ GDAL_LIB = $(GDAL_ROOT)/libgdal.a + GDAL_SLIB = $(GDAL_ROOT)/libgdal.$(SO_EXT) + GDAL_SLIB_LINK = -L$(GDAL_ROOT) -lgdal + ++# for building without libtool ++GDAL_SLIB_SO_VER = $(GDAL_VERSION_MAJOR).$(LIBGDAL_CURRENT).$(LIBGDAL_REVISION) ++GDAL_SLIB_SONAME = -install_name $(INST_LIB)/libgdal.$(GDAL_VERSION_MAJOR).$(SO_EXT) ++ + # Mac OS X Framework definition + MACOSX_FRAMEWORK = @MACOSX_FRAMEWORK@ + +--- gdal-2.0.3.old/GNUmakefile ++++ gdal-2.0.3/GNUmakefile +@@ -208,7 +208,7 @@ else + + ifeq ($(HAVE_LD_SHARED),yes) + +-GDAL_SLIB_B = $(notdir $(GDAL_SLIB)) ++GDAL_SLIB_B = libgdal + + install-lib: + +@@ -216,14 +216,14 @@ install-lib: + ifeq ($(MACOSX_FRAMEWORK),yes) + $(INSTALL_LIB) $(GDAL_SLIB) $(DESTDIR)$(INST_LIB)/GDAL + else +- rm -f $(DESTDIR)$(INST_LIB)/$(GDAL_SLIB_B) +- rm -f $(DESTDIR)$(INST_LIB)/$(GDAL_SLIB_B).$(GDAL_VERSION_MAJOR) +- rm -f $(DESTDIR)$(INST_LIB)/$(GDAL_SLIB_B).$(GDAL_VER) +- $(INSTALL_LIB) $(GDAL_SLIB) $(DESTDIR)$(INST_LIB)/$(GDAL_SLIB_B).$(GDAL_VER) ++ rm -f $(DESTDIR)$(INST_LIB)/$(GDAL_SLIB_B).dylib ++ rm -f $(DESTDIR)$(INST_LIB)/$(GDAL_SLIB_B).$(GDAL_VERSION_MAJOR).dylib ++ rm -f $(DESTDIR)$(INST_LIB)/$(GDAL_SLIB_B).$(GDAL_VER).dylib ++ $(INSTALL_LIB) $(GDAL_SLIB) $(DESTDIR)$(INST_LIB)/$(GDAL_SLIB_B).$(GDAL_VER).dylib + (cd $(DESTDIR)$(INST_LIB) ; \ +- ln -s $(GDAL_SLIB_B).$(GDAL_VER) $(GDAL_SLIB_B).$(GDAL_VERSION_MAJOR)) ++ ln -s $(GDAL_SLIB_B).$(GDAL_VER).dylib $(GDAL_SLIB_B).$(GDAL_VERSION_MAJOR).dylib) + (cd $(DESTDIR)$(INST_LIB) ; \ +- ln -s $(GDAL_SLIB_B).$(GDAL_VERSION_MAJOR) $(GDAL_SLIB_B)) ++ ln -s $(GDAL_SLIB_B).$(GDAL_VERSION_MAJOR).dylib $(GDAL_SLIB_B).dylib) + $(INSTALL_DIR) $(DESTDIR)$(INST_LIB)/gdalplugins + endif + diff --git a/sci-libs/gdal/gdal-2.0.3.ebuild b/sci-libs/gdal/gdal-2.0.3.ebuild new file mode 100644 index 00000000..09ee953 --- /dev/null +++ b/sci-libs/gdal/gdal-2.0.3.ebuild @@ -0,0 +1,291 @@ +# Copyright 1999-2016 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +EAPI="6" + +WANT_AUTOCONF="2.5" + +GENTOO_DEPEND_ON_PERL="no" +PYTHON_COMPAT=( python2_7 python3_{4,5} ) +DISTUTILS_OPTIONAL=1 + +inherit autotools perl-module distutils-r1 toolchain-funcs java-pkg-opt-2 + +DESCRIPTION="Translator library for raster geospatial data formats (includes OGR support)" +HOMEPAGE="http://www.gdal.org/" +SRC_URI="http://download.osgeo.org/${PN}/${PV}/${P}.tar.gz" + +SLOT="0/2" +LICENSE="BSD Info-ZIP MIT" +KEYWORDS="~amd64 ~arm ~ppc ~ppc64 ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x86-macos" +IUSE="armadillo +aux_xml curl debug doc fits geos gif gml hdf5 java jpeg jpeg2k mdb mysql netcdf odbc ogdi opencl oracle pdf perl png postgres python spatialite sqlite threads xls" + +COMMON_DEPEND="dev-libs/expat + dev-libs/json-c:= + dev-libs/libpcre + dev-libs/libxml2:= + media-libs/tiff:0= + sci-libs/libgeotiff + sys-libs/zlib[minizip(+)] + armadillo? ( sci-libs/armadillo:=[lapack] ) + curl? ( net-misc/curl ) + fits? ( sci-libs/cfitsio:= ) + geos? ( >=sci-libs/geos-2.2.1 ) + gif? ( media-libs/giflib:= ) + gml? ( >=dev-libs/xerces-c-3 ) + hdf5? ( >=sci-libs/hdf5-1.6.4:=[szip] ) + jpeg? ( virtual/jpeg:0= ) + jpeg2k? ( media-libs/openjpeg:2= ) + mdb? ( dev-java/jackcess:1 ) + mysql? ( virtual/mysql ) + netcdf? ( sci-libs/netcdf:= ) + odbc? ( dev-db/unixODBC ) + ogdi? ( sci-libs/ogdi ) + opencl? ( virtual/opencl ) + oracle? ( dev-db/oracle-instantclient:= ) + pdf? ( >=app-text/poppler-0.24.3:= ) + perl? ( dev-lang/perl:= ) + png? ( media-libs/libpng:0= ) + postgres? ( >=dev-db/postgresql-8.4:= ) + python? ( + ${PYTHON_DEPS} + dev-python/setuptools[${PYTHON_USEDEP}] + dev-python/numpy[${PYTHON_USEDEP}] + ) + sqlite? ( dev-db/sqlite:3 ) + spatialite? ( dev-db/spatialite ) + xls? ( dev-libs/freexl )" + +RDEPEND="${COMMON_DEPEND} + java? ( >=virtual/jre-1.7:* )" + +DEPEND="${COMMON_DEPEND} + doc? ( app-doc/doxygen ) + java? ( >=virtual/jdk-1.7:* ) + perl? ( dev-lang/swig:0 ) + python? ( dev-lang/swig:0 )" + +REQUIRED_USE="mdb? ( java ) + python? ( ${PYTHON_REQUIRED_USE} ) + spatialite? ( sqlite ) +" + +src_prepare() { + local PATCHES=() + local PATCHES=( "${FILESDIR}"/gdal-2.0.3-add-dlopen-support-for-jvm.patch ) + + # -soname is only accepted by GNU ld/ELF + if [[ ${CHOST} == *-darwin* ]]; then + PATCHES+=( "${FILESDIR}"/${PN}-2.0.3-install_name.patch ) + else + PATCHES+=( "${FILESDIR}"/${PN}-1.5.0-soname-r1.patch ) + fi + + # fix datadir and docdir placement + sed -i \ + -e "s:@datadir@:@datadir@/gdal:" \ + -e "s:@exec_prefix@/doc:@exec_prefix@/share/doc/${PF}/html:g" \ + "${S}"/GDALmake.opt.in || die + + # the second sed expression should fix bug 371075 + sed -i \ + -e "s:setup.py install:setup.py install --root=\$(DESTDIR):" \ + -e "s:--prefix=\$(DESTDIR):--prefix=:" \ + "${S}"/swig/python/GNUmakefile || die + + # Fix spatialite/sqlite include issue + sed -i \ + -e 's:spatialite/sqlite3.h:sqlite3.h:g' \ + ogr/ogrsf_frmts/sqlite/ogr_sqlite.h || die + + # Fix freexl configure check + sed -i \ + -e 's:FREEXL_LIBS=missing):FREEXL_LIBS=missing,-lm):g' \ + configure.in || die + + sed \ + -e "s: /usr/: \"${EPREFIX}\"/usr/:g" \ + -i configure.in || die + + sed \ + -e 's:^ar:$(AR):g' \ + -i ogr/ogrsf_frmts/sdts/install-libs.sh || die + + # updated for newer swig (must specify the path to input files) + sed -i \ + -e "s: gdal_array.i: ../include/gdal_array.i:" \ + -e "s:\$(DESTDIR)\$(prefix):\$(DESTDIR)\$(INST_PREFIX):g" \ + swig/python/GNUmakefile || die "sed python makefile failed" + sed -i \ + -e "s:library_dirs = :library_dirs = /usr/$(get_libdir):g" \ + swig/python/setup.cfg || die "sed python setup.cfg failed" + + default + + tc-export AR RANLIB + + mv configure.{in,ac} || die + + eautoreconf +} + +src_configure() { + local myopts="" + + if use java; then + myopts+=" + --with-java=$(java-config --jdk-home 2>/dev/null) + --with-jvm-lib=dlopen + $(use_with mdb)" + else + myopts+=" --without-java --without-mdb" + fi + + if use sqlite; then + myopts+=" LIBS=-lsqlite3" + fi + + # pcidsk is internal, because there is no such library yet released + # also that thing is developed by the gdal people + # kakadu, mrsid jp2mrsid - another jpeg2k stuff, ignore + # bsb - legal issues + # ingres - same story as oracle oci + # jasper - disabled because unmaintained and vulnerable; openjpeg will be used as JPEG-2000 provider instead + # podofo - we use poppler instead they are exclusive for each other + # tiff is a hard dep + ECONF_SOURCE="${S}" econf \ + --includedir="${EPREFIX}/usr/include/${PN}" \ + --disable-static \ + --enable-shared \ + --with-expat \ + --with-geotiff \ + --with-grib \ + --with-libtiff \ + --with-libz="${EPREFIX}/usr/" \ + --with-ogr \ + --without-bsb \ + --without-dods-root \ + --without-dwgdirect \ + --without-epsilon \ + --without-fme \ + --without-grass \ + --without-hdf4 \ + --without-idb \ + --without-ingres \ + --without-jasper \ + --without-jp2mrsid \ + --without-kakadu \ + --without-libtool \ + --without-mrsid \ + --without-msg \ + --without-pcraster \ + --without-podofo \ + --without-sde \ + $(use_enable debug) \ + $(use_with armadillo) \ + $(use_with aux_xml pam) \ + $(use_with curl) \ + --without-ecw \ + $(use_with fits cfitsio) \ + $(use_with geos) \ + $(use_with gif) \ + $(use_with gml xerces) \ + $(use_with hdf5) \ + $(use_with jpeg pcidsk) \ + $(use_with jpeg) \ + $(use_with jpeg2k openjpeg) \ + $(use_with mysql mysql "${EPREFIX}"/usr/bin/mysql_config) \ + $(use_with netcdf) \ + $(use_with oracle oci) \ + $(use_with odbc) \ + $(use_with ogdi ogdi "${EPREFIX}"/usr) \ + $(use_with opencl) \ + $(use_with pdf poppler) \ + $(use_with perl) \ + $(use_with png) \ + $(use_with postgres pg) \ + $(use_with python) \ + $(use_with spatialite) \ + $(use_with sqlite sqlite3 "${EPREFIX}"/usr) \ + $(use_with threads) \ + $(use_with xls freexl) \ + ${myopts} + + # mysql-config puts this in (and boy is it a PITA to get it out) + if use mysql; then + sed -i \ + -e "s: -rdynamic : :" \ + GDALmake.opt || die "sed LIBS failed" + fi +} + +src_compile() { + if use perl; then + rm "${S}"/swig/perl/*_wrap.cpp || die + emake -C "${S}"/swig/perl generate + fi + + # gdal-config needed before generating Python bindings + default + + if use perl ; then + pushd "${S}"/swig/perl > /dev/null || die + perl-module_src_configure + perl-module_src_compile + popd > /dev/null || die + fi + + if use python; then + rm -f "${S}"swig/python/*_wrap.cpp || die + emake -C "${S}"/swig/python generate + pushd "${S}"/swig/python > /dev/null || die + distutils-r1_src_compile + popd > /dev/null || die + fi + + use doc && emake docs +} + +src_install() { + if use perl ; then + pushd "${S}"/swig/perl > /dev/null || die + perl-module_src_install + popd > /dev/null || die + sed -e 's:BINDINGS = \(.*\) perl:BINDINGS = \1:g' \ + -i GDALmake.opt || die + fi + + use perl && perl_delete_localpod + + local DOCS=( Doxyfile HOWTO-RELEASE NEWS ) + use doc && HTML_DOCS=( html/. ) + + default + + python_install() { + distutils-r1_python_install + python_doscript scripts/*.py + } + + if use python; then + # Don't clash with gdal's docs + unset DOCS HTML_DOCS + + pushd "${S}"/swig/python > /dev/null || die + distutils-r1_src_install + popd > /dev/null || die + + newdoc swig/python/README.txt README-python.txt + + insinto /usr/share/${PN}/samples + doins swig/python/samples/* + fi + + doman "${S}"/man/man*/* +} + +pkg_postinst() { + elog "Check available image and data formats after building with" + elog "gdalinfo and ogrinfo (using the --formats switch)." +}
