diff options
-rw-r--r-- | testing/geos/10-isnan.patch | 108 | ||||
-rw-r--r-- | testing/geos/APKBUILD | 67 |
2 files changed, 175 insertions, 0 deletions
diff --git a/testing/geos/10-isnan.patch b/testing/geos/10-isnan.patch new file mode 100644 index 0000000000..f3415aff8b --- /dev/null +++ b/testing/geos/10-isnan.patch @@ -0,0 +1,108 @@ +diff -urp geos-3.5.0-old/configure geos-3.5.0/configure +--- geos-3.5.0-old/configure 2015-08-16 18:22:07.000000000 -0400 ++++ geos-3.5.0/configure 2016-04-18 09:03:56.912678918 -0400 +@@ -17822,6 +17822,39 @@ if test x"$ac_cv_isnan" = x"yes"; then + + $as_echo "#define HAVE_ISNAN 1" >>confdefs.h + ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for std::isnan" >&5 ++$as_echo_n "checking for std::isnan... " >&6; } ++if ${ac_cv_std_isnan+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++#include <cmath> ++int ++main () ++{ ++double x; int y; y = std::isnan(x); ++ ; ++ return 0; ++} ++_ACEOF ++if ac_fn_cxx_try_link "$LINENO"; then : ++ ac_cv_std_isnan=yes ++else ++ ac_cv_std_isnan=no ++ ++fi ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_std_isnan" >&5 ++$as_echo "$ac_cv_std_isnan" >&6; } ++ if test x"$ac_cv_std_isnan" = x"yes"; then ++ ++$as_echo "#define HAVE_STD_ISNAN 1" >>confdefs.h ++ ++ fi + fi + ac_ext=c + ac_cpp='$CPP $CPPFLAGS' +diff -urp geos-3.5.0-old/configure.ac geos-3.5.0/configure.ac +--- geos-3.5.0-old/configure.ac 2015-08-14 14:31:26.000000000 -0400 ++++ geos-3.5.0/configure.ac 2016-04-18 09:03:37.064679323 -0400 +@@ -192,7 +192,7 @@ fi + dnl -------------------------------------------------------------------- + dnl Test for presence of isnan function when using C++ and <cmath> + dnl This is for a particular bug in OS/X where <cmath> drops the definition +-dnl of isnan(). ++dnl of isnan(). A number of other systems appear to do the same thing. + + AC_LANG_PUSH([C++]) + AC_CACHE_CHECK([for isnan], ac_cv_isnan, +@@ -203,6 +203,16 @@ AC_CACHE_CHECK([for isnan], ac_cv_isnan, + )]) + if test x"$ac_cv_isnan" = x"yes"; then + AC_DEFINE(HAVE_ISNAN, [1], [Has isnan]) ++else ++ AC_CACHE_CHECK([for std::isnan], ac_cv_std_isnan, ++ [AC_TRY_LINK([#include <cmath>], ++ [double x; int y; y = std::isnan(x);], ++ ac_cv_std_isnan=yes, ++ ac_cv_std_isnan=no ++ )]) ++ if test x"$ac_cv_std_isnan" = x"yes"; then ++ AC_DEFINE(HAVE_STD_ISNAN, [1], [Has std::isnan]) ++ fi + fi + AC_LANG_POP([C++]) + +diff -urp geos-3.5.0-old/include/geos/platform.h.in geos-3.5.0/include/geos/platform.h.in +--- geos-3.5.0-old/include/geos/platform.h.in 2015-08-14 14:23:18.000000000 -0400 ++++ geos-3.5.0/include/geos/platform.h.in 2016-04-18 08:52:50.480692517 -0400 +@@ -22,6 +22,9 @@ + /* Has isnan */ + #undef HAVE_ISNAN + ++/* Has std::isnan */ ++#undef HAVE_STD_ISNAN ++ + #ifdef HAVE_IEEEFP_H + extern "C" + { +@@ -87,18 +90,16 @@ extern "C" + + #if defined(HAVE_ISNAN) + # define ISNAN(x) (isnan(x)) ++#elif defined(HAVE_STD_ISNAN) ++ // Hack for OS/X <cmath> incorrectly re-defining isnan() into oblivion. ++ // It does leave a version in std. ++# define ISNAN(x) (std::isnan(x)) + #else + # if defined(_MSC_VER) + # define ISNAN(x) _isnan(x) + # elif defined(__MINGW32__) || defined(__CYGWIN__) + // sandro furieri: sanitizing MinGW32 + # define ISNAN(x) (std::isnan(x)) +-# elif defined(__OSX__) || defined(__APPLE__) || \ +- defined(__NetBSD__) || defined(__DragonFly__) || defined (__OpenBSD__) || \ +- (defined(__sun) && defined(__GNUC__)) +- // Hack for OS/X <cmath> incorrectly re-defining isnan() into oblivion. +- // It does leave a version in std. +-# define ISNAN(x) (std::isnan(x)) + # elif (defined(__sun) || defined(__sun__)) && defined(__SUNPRO_CC) + # include <math.h> + # define ISNAN(x) (::isnan(x)) diff --git a/testing/geos/APKBUILD b/testing/geos/APKBUILD new file mode 100644 index 0000000000..238f715ce1 --- /dev/null +++ b/testing/geos/APKBUILD @@ -0,0 +1,67 @@ +# Contributor: Eric Kidd <git@randomhacks.net> +# Maintainer: +pkgname=geos +pkgver=3.5.0 +pkgrel=0 +pkgdesc="GEOS is a library providing OpenGIS and JTS spatial operations in C++." +url="http://trac.osgeo.org/geos/" +arch="all" +license="LGPL2.1" +depends="" +depends_dev="" +makedepends="swig python-dev $depends_dev" +install="" +subpackages="py-$pkgname:py $pkgname-dev" +source="http://download.osgeo.org/geos/geos-$pkgver.tar.bz2 10-isnan.patch" + +builddir="$srcdir/$pkgname-$pkgver" +prepare() { + cd "$builddir" + for i in "$srcdir"/*.patch; do + msg "Applying ${i}" + patch -p1 -i $i || return 1 + done +} + +build() { + cd "$builddir" + ./configure \ + --build=$CBUILD \ + --host=$CHOST \ + --prefix=/usr \ + --sysconfdir=/etc \ + --mandir=/usr/share/man \ + --localstatedir=/var \ + --enable-python \ + || return 1 + + # --enable-ruby produces a gem which crashes, and which seems to + # mostly ignored in favor of the rgeo and ffi-geos modules, anyway. + + make || return 1 + + # This is a complex library that does lots of complicated numeric + # stuff, and the unit tests are fast, so let's run them just to be + # safe. + make check || return 1 +} + +package() { + cd "$builddir" + make DESTDIR="$pkgdir" install || return 1 + install -Dm644 COPYING "$pkgdir"/usr/share/licenses/$pkgname/COPYING +} + +py() { + cd "$builddir" + pkgdesc="$pkgname Python bindings" + install -d "$subpkgdir"/usr/lib + mv "$pkgdir"/usr/lib/python* "$subpkgdir"/usr/lib/ +} + +md5sums="136842690be7f504fba46b3c539438dd geos-3.5.0.tar.bz2 +05cb0ecb132c4d20b5444a7ec926d68c 10-isnan.patch" +sha256sums="49982b23bcfa64a53333dab136b82e25354edeb806e5a2e2f5b8aa98b1d0ae02 geos-3.5.0.tar.bz2 +1bce38b84d5ba67bc0f4725cc13d69b89654b3cd37e4189090691e8abe008040 10-isnan.patch" +sha512sums="cd9c008c19213eb90959f950b03958e6abd9c22d83e6eb5f5a9020263ad8b0045dd5c5af60417c548fc130a57756ae1ef706710086cc277498b9ba6a0a6256b7 geos-3.5.0.tar.bz2 +3bb8a11e56f9f03138e46b96c31c57f7f080a7115d5d64a3d84c1dbd077ab61e32e7c8b441d5d167ba0f9b87ac6b978291b507ab0ef7d9f27f3fb282766a3db6 10-isnan.patch" |