aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRaul Infante-Sainz <infantesainz@gmail.com>2020-04-05 17:03:16 +0100
committerRaul Infante-Sainz <infantesainz@gmail.com>2020-04-05 17:03:16 +0100
commitc2b36cc6b6c62b5f19745703c65df7cfa8b84cc4 (patch)
treea7b1159fd71e498a718d3953ad255f88eccdd58a
parent3c4f1863d012ee4fefe64644c91b4a759a208e0f (diff)
Building Minizip 1.x instead of Minizip 2.x
Minizip is a dependency of XLSX I/O and until now, I was just using the most recent version I found (2.9.2), but XLSX I/O is written for the Minizip 1.x series, not 2.x. Somehow it didn't cause a crash on my computer!!! I think XLSX I/O's CMake is instructed to look into system directories by default when it doesn't find the directories in the given places. And because I had installed Minizip on my operating system, it did't complain. Upon trying the build on their systems, Yahya, Raul and Zahra reported a failure in the build of XLSX I/O which was due the to the problem above (we were installing the wrong version of Minizip!). With this commit, this has been fixed by installing the 1.x series of Minizip (whish is actually installed within zlib!). This commit was original done by Mohammad Akhlaghi.
-rw-r--r--.file-metadatabin7874 -> 7946 bytes
-rw-r--r--reproduce/software/config/installation/checksums.conf2
-rw-r--r--reproduce/software/config/installation/versions.conf5
-rw-r--r--reproduce/software/make/high-level.mk77
4 files changed, 67 insertions, 17 deletions
diff --git a/.file-metadata b/.file-metadata
index 9a732fa..aa6d61e 100644
--- a/.file-metadata
+++ b/.file-metadata
Binary files differ
diff --git a/reproduce/software/config/installation/checksums.conf b/reproduce/software/config/installation/checksums.conf
index 950880b..7531749 100644
--- a/reproduce/software/config/installation/checksums.conf
+++ b/reproduce/software/config/installation/checksums.conf
@@ -110,7 +110,6 @@ libpng-checksum = 59e8c1059013497ae616a14c3abbe239322d3873c6ded0912403fc62fb2605
libtiff-checksum = d213e5db09fd56b8977b187c5a756f60d6e3e998be172550c2892dbdb4b2a8e8c750202bc863fe27d0d1c577ab9de1710d15e9f6ed665aadbfd857525a81eea8
libtirpc-checksum = 392f391f9fc1bd68d81dc44e4058831a64b32790b5c8c37338b0ab416fad2ae4d16389e632596734dba09780347918cc65c6f134e0c1afd09e81ec250785ed23
libxml2-checksum = cb7784ba4e72e942614e12e4f83f4ceb275f3d738b30e3b5c1f25edf8e9fa6789e854685974eed95b362049dbf6c8e7357e0327d64c681ed390534ac154e6810
-minizip-checksum = 56b5443f79d1a0a5f563a563f7b1c27b0b0fc5ba5b37248367b204a89a9373df7d12ea802c678f3f39c987d5f1766003eac3dd31b643773afa4463a3f6406628
missfits-checksum = 32727f5eb30573a1cedacb8900e2536867e4815059eee32e64e3db65be9291b8a91b9f45b2c9f3cf6fc2a8cc448012ea3d502bdd9dee516008e17d5086aee795
netpbm-checksum = 064720f8a9d0a502488e1af4daecdbf3936910996507ca6f311073a0ad842346692a148eb1ddf7b717f7b108f60500246cb4b83f4d3665f5fc285a84ae1d63d6
openblas-checksum = 91b3074eb922453bf843158b4281cde65db9e8bbdd7590e75e9e6cdcb486157f7973f2936f327bb3eb4f1702ce0ba51ae6729d8d4baf2d986c50771e8f696df0
@@ -129,6 +128,7 @@ tides-checksum = c3360ff0d023b43749ba09a33302ca059f017a157b3ce7cdcf4f1a1578e90d3
wcslib-checksum = fed47771defb2a93fb50aa2e701c46f8ce35773dd3de91eeaed311b5a0474c096c7f9be6996fe95f82faa30b1d5c0aba892bca5da80bc32b15919dfaf551aeb7
xlsxio-checksum = 22870fda7bd4eefd5fea2a9ad7530c9049135129d9b69805091777e6b54b2fc6c3f0e69c6954f36bce54eebbfeccaf637cce9e271a593221a4296d6632470a6c
yaml-checksum = 13d2197135946204323dbfccafa0ac7b3d05437e920545a56f46811fd7319c01419a58083090ce85fccd4d6901a620ceb9f1190078cc0830bc0ce769bb024f51
+zlib-checksum = 73fd3fff4adeccd4894084c15ddac89890cd10ef105dd5e1835e1e9bbb6a49ff229713bd197d203edfa17c2727700fce65a2a235f07568212d820dca88b528ae
diff --git a/reproduce/software/config/installation/versions.conf b/reproduce/software/config/installation/versions.conf
index 592d931..39642d4 100644
--- a/reproduce/software/config/installation/versions.conf
+++ b/reproduce/software/config/installation/versions.conf
@@ -107,7 +107,6 @@ libpng-version = 1.6.37
libtiff-version = 4.0.10
libtirpc-version = 1.1.4
libxml2-version = 2.9.9
-minizip-version = 2.9.2
missfits-version = 2.8.0
openblas-version = 0.3.5
openmpi-version = 4.0.1
@@ -216,3 +215,7 @@ lapack-version = 3.8.0
libgit2-version = 0.28.2
netpbm-version = 10.86.99
wcslib-version = 6.4
+
+# Minizip is installed as a part of `zlib', and they have the same version.
+zlib-version = 1.2.11
+minizip-version = $(zlib-version)
diff --git a/reproduce/software/make/high-level.mk b/reproduce/software/make/high-level.mk
index 274bcdf..43dfaa1 100644
--- a/reproduce/software/make/high-level.mk
+++ b/reproduce/software/make/high-level.mk
@@ -184,7 +184,6 @@ tarballs = $(foreach t, apachelog4cxx-$(apachelog4cxx-version).tar.lz \
libpng-$(libpng-version).tar.xz \
libtirpc-$(libtirpc-version).tar.bz2 \
libxml2-$(libxml2-version).tar.gz \
- minizip-$(minizip-version).tar.gz \
missfits-$(missfits-version).tar.gz \
netpbm-$(netpbm-version).tar.gz \
openblas-$(openblas-version).tar.gz \
@@ -203,6 +202,7 @@ tarballs = $(foreach t, apachelog4cxx-$(apachelog4cxx-version).tar.lz \
wcslib-$(wcslib-version).tar.bz2 \
xlsxio-$(xlsxio-version).tar.gz \
yaml-$(yaml-version).tar.gz \
+ zlib-$(zlib-version).tar.gz \
, $(tdir)/$(t) )
$(tarballs): $(tdir)/%: | $(lockdir)
@@ -282,10 +282,6 @@ $(tarballs): $(tdir)/%: | $(lockdir)
w=https://github.com/libgit2/libgit2/archive/v$(libgit2-version).tar.gz
elif [ $$n = libtirpc ]; then c=$(libtirpc-checksum); w=https://downloads.sourceforge.net/libtirpc
elif [ $$n = libxml ]; then c=$(libxml2-checksum); w=ftp://xmlsoft.org/libxml2
- elif [ $$n = minizip ]; then
- mergenames=0
- c=$(minizip-checksum);
- w=https://github.com/nmoinvaz/minizip/archive/$(minizip-version).tar.gz
elif [ $$n = missfits ]; then c=$(missfits-checksum); w=https://www.astromatic.net/download/missfits
elif [ $$n = netpbm ]; then c=$(netpbm-checksum); w=http://akhlaghi.org/reproduce-software
elif [ $$n = openblas ]; then
@@ -319,6 +315,7 @@ $(tarballs): $(tdir)/%: | $(lockdir)
c=$(xlsxio-checksum);
w=https://github.com/brechtsanders/xlsxio/archive/$(xlsxio-version).tar.gz
elif [ $$n = yaml ]; then c=$(yaml-checksum); w=pyyaml.org/download/libyaml
+ elif [ $$n = zlib ]; then c=$(zlib-checksum); w=https://zlib.net
else
echo; echo; echo;
echo "'$$n' not recognized as a software tarball name to download."
@@ -927,8 +924,8 @@ $(ibidir)/ghostscript: $(ibidir)/libpng \
# First we need to make sure some necessary X11 libraries that we
# don't yet install in this template are present on the host
# system, see https://savannah.nongnu.org/task/?15481 .
- # Adding `-L/opt/X11/lib' to LDFLAGS is necessary for macOS systems
- # because X11 libraries used to be installed there.
+ # Adding `-L/opt/X11/lib' to LDFLAGS is necessary for macOS systems
+ # because X11 libraries used to be installed there.
echo;
echo "Template: testing necessary X11 libraries for ghostscript"
echo "---------------------------------------------------------"
@@ -1036,10 +1033,43 @@ $(ibidir)/imfit: $(ibidir)/gsl \
fi \
&& echo "Imfit $(imfit-version) \citep{imfit2015}" > $@
-$(ibidir)/minizip: $(ibidir)/cmake \
- | $(tdir)/minizip-$(minizip-version).tar.gz
- $(call cbuild, minizip-$(minizip-version), static) \
- && echo "minizip $(minizip-version)" > $@
+# Minizip 1.x is actually distributed within zlib. It doesn't have its own
+# independent tarball. So we need a custom build, which include the GNU
+# Autotools (Autoconf and Automake). Note that Minizip 2.x isn't like this
+# any more and has its own independent tarball, but currently the programs
+# that depend on Minizip need Minizip 1.x. The instructions to build
+# minizip were taken from ArchLinux.
+#
+# About deleting the final crypt.h file after installation, see
+# https://bugzilla.redhat.com/show_bug.cgi?id=1424609
+$(ibidir)/minizip: $(ibidir)/automake \
+ | $(tdir)/zlib-$(zlib-version).tar.gz
+ cd $(ddir) \
+ && unpackdir=minizip-$(minizip-version) \
+ && rm -rf $$unpackdir \
+ && mkdir $$unpackdir \
+ && if ! tar xf $(word 1,$(filter $(tdir)/%,$|)) \
+ -C$$unpackdir --strip-components=1; then \
+ echo; echo "Tar error"; exit 1; \
+ fi \
+ && cd $$unpackdir\
+ && ./configure --prefix=$(idir) \
+ && make \
+ && cd contrib/minizip \
+ && cp Makefile Makefile.orig \
+ && cp ../README.contrib readme.txt \
+ && autoreconf --install \
+ && ./configure --prefix=$(idir) \
+ && make \
+ && cd ../../ \
+ && make test \
+ && cd contrib/minizip \
+ && make -f Makefile.orig test \
+ && make install \
+ && rm $(iidir)/minizip/crypt.h \
+ && cd ../../.. \
+ && rm -rf $$unpackdir \
+ && echo "Minizip $(minizip)" > $@
$(ibidir)/missfits: | $(tdir)/missfits-$(missfits-version).tar.gz
$(call gbuild, missfits-$(missfits-version), static) \
@@ -1152,11 +1182,29 @@ $(ibidir)/swig: | $(tdir)/swig-$(swig-version).tar.gz
$(call gbuild, swig-$(swig-version), static, --without-pcre) \
&& echo "Swig $(swig-version)" > $@
-$(ibidir)/xlsxio: $(ibidir)/expat \
+$(ibidir)/xlsxio: $(ibidir)/cmake \
+ $(ibidir)/expat \
$(ibidir)/minizip \
| $(tdir)/xlsxio-$(xlsxio-version).tar.gz
- export LDFLAGS="-lbz2 -lbsd"; \
- $(call cbuild, xlsxio-$(xlsxio-version), static) \
+ if [ x$(on_mac_os) = xyes ]; then \
+ export CC=clang; \
+ export CXX=clang++; \
+ export LDFLAGS="-lbz2"; \
+ else \
+ export LDFLAGS="-lbz2 -lbsd"; \
+ fi; \
+ $(call cbuild, xlsxio-$(xlsxio-version), static, \
+ -DMINIZIP_DIR:PATH=$(idir) \
+ -DMINIZIP_LIBRARIES=$(idir) \
+ -DMINIZIP_INCLUDE_DIRS=$(iidir)) \
+ && if [ "x$(on_mac_os)" != xyes ]; then \
+ echo "Adding RPATH to the XLSX I/O executables..."; \
+ for f in $(ibdir)/xlsxio_* $(ildir)/libxlsxio_*.so; do \
+ patchelf --set-rpath $(ildir) $$f; \
+ done; \
+ fi \
+ && echo "Deleting XLSX I/O example files..." \
+ && rm $(ibdir)/example_xlsxio_* \
&& echo "XLSX I/O $(xlsxio-version)" > $@
@@ -1166,7 +1214,6 @@ $(ibidir)/xlsxio: $(ibidir)/expat \
-
# Since we want to avoid complicating the PATH, we are putting a symbolic
# link of all the TeX Live executables in $(ibdir). But symbolic links are
# hard to track for Make (as a target). Also, TeX in general is optional