From 162be154d29a19407722611519524a7384affe8e Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Mon, 23 Jan 2017 10:20:54 -0800 Subject: Fix configure's zlib version check (#2901) * Fix configure's zlib version check R wants a version of zlib that is 1.2.5 or newer. The version checking code just does a lexicographic comparison of the first 5 characters of the string, so it seesthat the latest zlib version, 1.2.10, as 1.2.1 and fails. This patch changes the comparison to use zlibs' hex ZLIB_VERNUM so that it does not suffer from this problem. A version of this patch is wending it's way through the R comunity community and will/should be included in a future release. I tested the patch with the current R, 3.3.1. * Tighten zlib dependency version (>= 1.2.5) * Convert patch to level=1 format. --- var/spack/repos/builtin/packages/r/package.py | 4 +++- var/spack/repos/builtin/packages/r/zlib.patch | 29 +++++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 var/spack/repos/builtin/packages/r/zlib.patch (limited to 'var') diff --git a/var/spack/repos/builtin/packages/r/package.py b/var/spack/repos/builtin/packages/r/package.py index 3fed62d1fa..590c5b2feb 100644 --- a/var/spack/repos/builtin/packages/r/package.py +++ b/var/spack/repos/builtin/packages/r/package.py @@ -63,7 +63,7 @@ class R(Package): depends_on('ncurses') depends_on('icu4c') depends_on('glib') - depends_on('zlib@:1.2.8') + depends_on('zlib@1.2.5:') depends_on('bzip2') depends_on('libtiff') depends_on('jpeg') @@ -82,6 +82,8 @@ class R(Package): depends_on('pcre') depends_on('jdk') + patch('zlib.patch', when='@:3.3.1') + @property def etcdir(self): return join_path(prefix, 'rlib', 'R', 'etc') diff --git a/var/spack/repos/builtin/packages/r/zlib.patch b/var/spack/repos/builtin/packages/r/zlib.patch new file mode 100644 index 0000000000..673d5352fa --- /dev/null +++ b/var/spack/repos/builtin/packages/r/zlib.patch @@ -0,0 +1,29 @@ +*** a/configure 2017-01-21 21:48:35.077000000 +0000 +--- b/configure 2017-01-21 21:50:50.700000000 +0000 +*************** +*** 35496,35505 **** + #include + #include + int main() { +! #ifdef ZLIB_VERSION +! /* Work around Debian bug: it uses 1.2.3.4 even though there was no such +! version on the master site zlib.net */ +! exit(strncmp(ZLIB_VERSION, "1.2.5", 5) < 0); + #else + exit(1); + #endif +--- 35496,35509 ---- + #include + #include + int main() { +! /* Checking ZLIB_VERNUM trick learned here: +! * https://github.com/TransitApp/protobuf/blob/master/configure.ac#L95 +! */ +! #ifdef ZLIB_VERNUM +! if (ZLIB_VERNUM < 0x1250) { +! exit(1); +! } +! exit(0); + #else + exit(1); + #endif -- cgit v1.2.3-60-g2f50