From b8f525ff7dfe7cced8691760eaa51ce0479a88fe Mon Sep 17 00:00:00 2001 From: Mohammad Akhlaghi Date: Thu, 24 Oct 2019 19:02:27 +0100 Subject: APR, APR Utility, Boost and Eigen are now available As part of an effort to bring in all the dependencies of the LSST Science pipeline (which includes the last commit), these software are now available in the template. --- .../software/config/installation/checksums.mk | 4 ++ reproduce/software/config/installation/versions.mk | 4 ++ reproduce/software/make/high-level.mk | 63 +++++++++++++++++++++- reproduce/software/make/python.mk | 1 + 4 files changed, 70 insertions(+), 2 deletions(-) (limited to 'reproduce') diff --git a/reproduce/software/config/installation/checksums.mk b/reproduce/software/config/installation/checksums.mk index 6c12712..39c8a7f 100644 --- a/reproduce/software/config/installation/checksums.mk +++ b/reproduce/software/config/installation/checksums.mk @@ -73,13 +73,17 @@ zlib-checksum = 73fd3fff4adeccd4894084c15ddac89890cd10ef105dd5e1835e1e9bbb6a49ff # `reproduce/software/config/installation/TARGETS.mk' will be built as part # of a project. To specify a software there, just remove the `-checksum' # suffix from the list below. +apr-checksum = daa140c83c7e2c45c3980d9dc81d34fa662bebd050653562c39572d0ddf2eaedb71767c518a59d77f59db9b32e00221ef48b9f72ec3666c4521dd511969f3706 +apr-util-checksum = 84da76e9b64da2de0996d4d6f3ab3f23db3724eb6352d218e0e8196bcc0b0a5d4fe791f41b4cc350ce3d04cce3bb3cf8bfb513d777d0cd030928368e6b55a536 astrometrynet-checksum = 35c268bf0a7068e01323b9bfccdf255c993df83c24b2e6026a00084c4ab87d031f1024205d0ed3aecc7e2a495d4bc0b0e67270d66679020b7cc2e4b2f30f5c4a atlas-checksum = bf17306f09f2aa973cb776e2c9eacfb2409ad4d95d19802e1c4e0597d0a099fccdb5eaafe273c2682a41e41a3c6fabc8bbba4ce03180cffea40ede5df1d1f56e bison-checksum = 00d2b37187b93100ec4b220ce2752d12ccf68f9d0d39b380d375d36dd8a22aa1d6e60156918f95e4493f9531c5d42d8fad38fd807307b491c1ca7ca4177823d9 +boost-checksum = 4378e20f18db9f186ac0f38ad98c522526e0fe48a8deb968c41325e3f69e733be3298505e91ea713e79a9d9e741305fa879d289f74e6276e0ec7286f03be87fc cairo-checksum = 9eb27c4cf01c0b8b56f2e15e651f6d4e52c99d0005875546405b64f1132aed12fbf84727273f493d84056a13105e065009d89e94a8bfaf2be2649e232b82377f cdsclient-checksum = 2d7abf0079189b9dd19cb8919061445fd19ea9f7dfd54e8ceee26b743218cf62ab00eba0147abe82d9294223927f04b4cc3328620dfc9184a7049f8d515b29e4 cfitsio-checksum = c0502699e266928dd25abe57730dc4b357ccc9023789fe745324ae01aa688516aceaf37321ee578f0430111d9718f0fec0dc5b54c07f935529560f00b32ce1e3 cmake-checksum = 7d0abf2f7c661c6b555a7e93a2fce5ab5610c653b0aa4949bed6e97bfbe6523fd0665f67115d3944d3729cbe07ae3aaf780ee673b06dd80f90018cec8a999658 +eigen-checksum = 34cf600914cce719d61511577ef9cd26fbdcb7a6fad1d0ab8396f98b887fac6a5577d3967e84a8f56225cc50de38f3b91f34f447d14312028383e32b34ea1972 fftw-checksum = ab918b742a7c7dcb56390a0a0014f517a6dff9a2e4b4591060deeb2c652bf3c6868aa74559a422a276b853289b4b701bdcbd3d4d8c08943acf29167a7be81a38 flex-checksum = e9785f3d620a204b7d20222888917dc065c2036cae28667065bf7862dfa1b25235095a12fd04efdbd09bfd17d3452e6b9ef953a8c1137862ff671c97132a082e freetype-checksum = 02f0f4211f9cee5b5e46ebe61190482fca5b41bc26be06fcf0d2d717e9fb119229308398c420eeea476fa2511ca2d52948f1a3242efad30ca82ed0b07cd50e3a diff --git a/reproduce/software/config/installation/versions.mk b/reproduce/software/config/installation/versions.mk index 3002078..54e1f2e 100644 --- a/reproduce/software/config/installation/versions.mk +++ b/reproduce/software/config/installation/versions.mk @@ -71,13 +71,17 @@ zlib-version = 1.2.11 # `reproduce/software/config/installation/TARGETS.mk' will be built as part # of a project. To specify a software there, just remove the `-version' # suffix from the list below. +apr-version = 1.7.0 +apr-util-version = 1.6.1 astrometrynet-version = 0.77 atlas-version = 3.10.3 bison-version = 3.4.2 +boost-version = 1.71.0 cairo-version = 1.16.0 cdsclient-version = 3.84 cfitsio-version = 3.47 cmake-version = 3.15.3 +eigen-version = 3.3.7 fftw-version = 3.3.8 flex-version = 2.6.4 flock-version = 0.2.3 diff --git a/reproduce/software/make/high-level.mk b/reproduce/software/make/high-level.mk index 9f7b7e1..36e88ef 100644 --- a/reproduce/software/make/high-level.mk +++ b/reproduce/software/make/high-level.mk @@ -40,6 +40,7 @@ ddir = $(BDIR)/software/build-tmp idir = $(BDIR)/software/installed ibdir = $(BDIR)/software/installed/bin ildir = $(BDIR)/software/installed/lib +iidir = $(BDIR)/software/installed/include dtexdir = $(shell pwd)/reproduce/software/bibtex itidir = $(BDIR)/software/installed/version-info/tex ictdir = $(BDIR)/software/installed/version-info/cite @@ -131,13 +132,17 @@ include reproduce/software/make/python.mk # convention, but include the name/version in their tarball names with # another format, we'll do the modification before the download so the # downloaded file has our desired format. -tarballs = $(foreach t, astrometry.net-$(astrometrynet-version).tar.gz \ +tarballs = $(foreach t, apr-$(apr-version).tar.gz \ + apr-util-$(apr-util-version).tar.gz \ + astrometry.net-$(astrometrynet-version).tar.gz \ atlas-$(atlas-version).tar.bz2 \ bison-$(bison-version).tar.xz \ + boost-$(boost-version).tar.gz \ cairo-$(cairo-version).tar.xz \ cdsclient-$(cdsclient-version).tar.gz \ cfitsio-$(cfitsio-version).tar.gz \ cmake-$(cmake-version).tar.gz \ + eigen-$(eigen-version).tar.gz \ fftw-$(fftw-version).tar.gz \ flex-$(flex-version).tar.gz \ freetype-$(freetype-version).tar.gz \ @@ -181,12 +186,20 @@ $(tarballs): $(tdir)/%: | $(lockdir) # Set the top download link of the requested tarball. mergenames=1 - if [ $$n = astrometry ]; then c=$(astrometrynet-checksum); w=http://astrometry.net/downloads + if [ $* = apr-util-$(apr-util-version).tar.gz ]; + then c=$(apr-util-checksum); w=https://www-us.apache.org/dist/apr + elif [ $$n = apr ]; then c=$(apr-checksum); w=https://www-us.apache.org/dist/apr + elif [ $$n = astrometry ]; then c=$(astrometrynet-checksum); w=http://astrometry.net/downloads elif [ $$n = atlas ]; then mergenames=0 c=$(atlas-checksum) w=https://sourceforge.net/projects/math-atlas/files/Stable/$(atlas-version)/atlas$(atlas-version).tar.bz2/download elif [ $$n = bison ]; then c=$(bison-checksum); w=http://ftp.gnu.org/gnu/bison/ + elif [ $$n = boost ]; then + mergenames=0 + c=$(boost-checksum) + vstr=$$(echo $(boost-version) | sed -e's/\./_/g') + w=https://dl.bintray.com/boostorg/release/$(boost-version)/source/boost_$$vstr.tar.gz elif [ $$n = cairo ]; then c=$(cairo-checksum); w=https://www.cairographics.org/releases elif [ $$n = cdsclient ]; then c=$(cdsclient-checksum); w=http://cdsarc.u-strasbg.fr/ftp/pub/sw elif [ $$n = cfitsio ]; then c=$(cfitsio-checksum); w=https://heasarc.gsfc.nasa.gov/FTP/software/fitsio/c @@ -197,6 +210,10 @@ $(tarballs): $(tdir)/%: | $(lockdir) | sed -e's/\./ /' \ | awk '{printf("%d.%d", $$1, $$2)}') w=https://cmake.org/files/v$$majv/cmake-$(cmake-version).tar.gz + elif [ $$n = eigen ]; then + mergenames=0 + c=$(eigen-checksum); + w=http://bitbucket.org/eigen/eigen/get/$(eigen-version).tar.gz elif [ $$n = fftw ]; then c=$(fftw-checksum); w=ftp://ftp.fftw.org/pub/fftw elif [ $$n = flex ]; then c=$(flex-checksum); w=https://github.com/westes/flex/files/981163 elif [ $$n = freetype ]; then c=$(freetype-checksum); w=https://download.savannah.gnu.org/releases/freetype @@ -314,6 +331,19 @@ $(tarballs): $(tdir)/%: | $(lockdir) # libraries. Therefore, we can't use the easy `.a' suffix for static # libraries as targets and there are different conventions for shared # library names. +$(ibidir)/apr: $(tdir)/apr-$(apr-version).tar.gz + $(call gbuild, $<, apr-$(apr-version), ,--disable-static) \ + && echo "Apache Portable Runtime $(apr-version)" > $@ + +$(ibidir)/apr-util: $(tdir)/apr-util-$(apr-util-version).tar.gz \ + $(ibidir)/apr + $(call gbuild, $<, apr-util-$(apr-util-version), , \ + --disable-static \ + --with-apr=$(idir) \ + --with-openssl=$(idir) \ + --with-crypto ) \ + && echo "Apache Portable Runtime Utility $(apr-util-version)" > $@ + $(ibidir)/atlas: $(tdir)/atlas-$(atlas-version).tar.bz2 \ $(tdir)/lapack-$(lapack-version).tar.gz @@ -394,6 +424,23 @@ $(ibidir)/atlas: $(tdir)/atlas-$(atlas-version).tar.bz2 \ echo "ATLAS $(atlas-version)" > $@; \ fi +# Boost doesn't use the standard GNU Build System. +$(ibidir)/boost: $(tdir)/boost-$(boost-version).tar.gz \ + $(ibidir)/openmpi \ + $(ibidir)/python + vstr=$$(echo $(boost-version) | sed -e's/\./_/g') + rm -rf $(ddir)/boost_$$vstr + topdir=$(pwd); cd $(ddir); tar xf $< + cd boost_$$vstr + ./bootstrap.sh --prefix=$(idir) --with-libraries=all \ + --with-python=python3 \ + && echo "using mpi ;" > project-config.jam \ + && ./b2 stage threading=multi link=shared --prefix=$(idir) -j$(numthreads) \ + && ./b2 install threading=multi link=shared --prefix=$(idir) -j$(numthreads) \ + && cd $$topdir \ + && rm -rf $(ddir)/boost_$$vstr \ + && echo "Boost $(boost-version)" > $@ + $(ibidir)/cfitsio: $(tdir)/cfitsio-$(cfitsio-version).tar.gz \ $(ibidir)/curl @@ -428,6 +475,18 @@ $(ibidir)/cairo: $(tdir)/cairo-$(cairo-version).tar.xz \ --with-x=no, -j$(numthreads) V=1) \ && echo "Cairo $(cairo-version)" > $@ +# Eigen is just headers! So it doesn't need to be compiled. Once unpacked +# it has a checksum after `eigen-eigen', so we'll just use a `*' to choose +# the unpacked directory. +$(ibidir)/eigen: $(tdir)/eigen-$(eigen-version).tar.gz + rm -rf $(ddir)/eigen-eigen-* + topdir=$(pwd); cd $(ddir); tar xf $< + cd eigen-eigen-* + cp -r Eigen $(iidir)/eigen3 \ + && cd $$topdir \ + && rm -rf $(ddir)/eigen-eigen-* \ + && echo "Eigen $(eigen-version)" > $@ + $(ibidir)/fftw: $(tdir)/fftw-$(fftw-version).tar.gz # FFTW's single and double precission libraries must be built # independently: for the the single-precision library, we need to diff --git a/reproduce/software/make/python.mk b/reproduce/software/make/python.mk index f624a20..9cf99e5 100644 --- a/reproduce/software/make/python.mk +++ b/reproduce/software/make/python.mk @@ -271,6 +271,7 @@ $(ibidir)/python: $(tdir)/python-$(python-version).tar.gz \ {printf "%d.%d\n", $$1, $$2}') \ && ln -sf $(ildir)/python$$v $(ildir)/python \ && ln -sf $(ibdir)/python$$v $(ibdir)/python \ + && ln -sf $(iidir)/python$$v"m" $(iidir)/python$$v \ && rm -rf $(ipydir) \ && mkdir $(ipydir) \ && echo "Python $(python-version)" > $@ -- cgit v1.2.1