diff options
-rw-r--r-- | .file-metadata | bin | 6713 -> 6713 bytes | |||
-rwxr-xr-x | configure | 86 | ||||
-rw-r--r-- | reproduce/software/config/installation/TARGETS.mk | 1 | ||||
-rw-r--r-- | reproduce/software/config/installation/numpy-scipy.cfg | 1 | ||||
-rw-r--r-- | reproduce/software/config/installation/versions.mk | 8 | ||||
-rw-r--r-- | reproduce/software/make/basic.mk | 10 | ||||
-rw-r--r-- | reproduce/software/make/high-level.mk | 61 | ||||
-rw-r--r-- | reproduce/software/make/python.mk | 9 |
8 files changed, 114 insertions, 62 deletions
diff --git a/.file-metadata b/.file-metadata Binary files differindex a86e94c..c22144e 100644 --- a/.file-metadata +++ b/.file-metadata @@ -884,42 +884,80 @@ fi # # On some GNU/Linux distros, the C compiler is broken into `multilib' (for # 32-bit and 64-bit support, with their own headers). On these systems, -# `sys/cdefs.h' is not available by default. So if the user hasn't manually -# installed it before this configure script, GCC won't build. We are thus -# explicitly testing a small C program here to see if the host's C compiler -# won't have any problems in building GCC. +# `/usr/include/sys/cdefs.h' and `/usr/lib/libc.a' are not available by +# default. So GCC will crash with different ugly errors! The only solution +# is that user manually installs the `multilib' part as root, before +# running the configure script. +# +# Note that `sys/cdefs.h' may be available in other directories (for +# example `/usr/include/x86_64-linux-gnu/') that are automatically included +# in an installed GCC. HOWEVER during the build of GCC, all those other +# directories are ignored. So even if they exist, they are useless. +warningsleep=0 if [ $host_cc = 0 ]; then - tfile=$sdir/gcc-cdefs-test.c; - echo "#include <sys/cdefs.h>" > $tfile; - echo "int main(void){return 0;}" >> $tfile; - if gcc $tfile -o $sdir/gcc-cdefs-test &> /dev/null; then - rm $sdir/gcc-cdefs-test*; - else + if ! [ -f /usr/include/sys/cdefs.h ]; then host_cc=1 - fi; - rm -f $tfile; + warningsleep=1 + cat <<EOF + +!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +!!!!!!!!!!!!!!!!!!!!!! Warning !!!!!!!!!!!!!!!!!!!!!! +!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +This system doesn't have '/usr/include/sys/cdefs.h'. Because of this, the +project can't build its custom GCC to ensure better reproducibility. We +strongly recommend installing the proper package (for your operating +system) that installs this necessary file. For example on some Debian-based +GNU/Linux distros, you need these two packages: 'gcc-multilib' and +'g++-multilib'. +!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +EOF + fi - if [ $host_cc = 1 ]; then + if [ -f /usr/lib/libc.a ] || [ -f /usr/lib64/libc.a ]; then + # This is just a place holder + host_cc=$host_cc + else + host_cc=1 + warningsleep=1 cat <<EOF !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!! Warning !!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -This system's C compiler (called with 'gcc') can't include -'sys/cdefs.h. Because of this, the project can't build its custom GCC to -ensure better reproducibility. We strongly recommend installing the proper -package (for your operating system) that installs this necessary file. For -example on some Debian-based GNU/Linux distros, you need these two -packages: 'gcc-multilib' and 'g++-multilib'. - -However, since GCC is pretty low-level, this configuration script will -continue in 5 seconds and use your system's C compiler (it won't build a -custom GCC). But please consider installing the necessary package(s) to -complete your C compiler, then re-run './configure'. +This system doesn't have '/usr/lib/libc.a' or '/usr/lib64/libc.a'. Because +of this, the project can't build its custom GCC to ensure better +reproducibility. We strongly recommend installing the proper package (for +your operating system) that installs this necessary file. + +Some possible solutions: + 1. On some Debian-based GNU/Linux distros, these two packages may fix the + problem: 'gcc-multilib' and 'g++-multilib'. + 2. (BE CAREFUL!) If you have '/usr/lib/x86_64-linux-gnu' but don't have + '/usr/lib64', then running the following command might fix this + particular problem by making a symbolic link. + $ sudo ln -s /usr/lib/x86_64-linux-gnu /usr/lib64 + After the configure script is finished, delete the link with 'rm + /usr/lib64' (you won't need it any more as far as this project is + concerned). !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! EOF + fi + + if [ $warningsleep = 1 ]; then + cat <<EOF + +PLEASE SEE THE WARNINGS ABOVE. + +Since GCC is pretty low-level, this configuration script will continue in 5 +seconds and use your system's C compiler (it won't build a custom GCC). But +please consider installing the necessary package(s) to complete your C +compiler, then re-run './configure'. + +EOF sleep 5 fi fi diff --git a/reproduce/software/config/installation/TARGETS.mk b/reproduce/software/config/installation/TARGETS.mk index 4b1ff2e..b9157f1 100644 --- a/reproduce/software/config/installation/TARGETS.mk +++ b/reproduce/software/config/installation/TARGETS.mk @@ -1,6 +1,7 @@ # Necessary high-level software to build in this project. # # Copyright (C) 2018-2019 Mohammad Akhlaghi <mohammad@akhlaghi.org> +# Copyright (C) 2019 Raul Infante-Sainz <infantesainz@gmail.com> # # Copying and distribution of this file, with or without modification, are # permitted in any medium without royalty provided the copyright notice and diff --git a/reproduce/software/config/installation/numpy-scipy.cfg b/reproduce/software/config/installation/numpy-scipy.cfg index 4b7a7b0..03038ed 100644 --- a/reproduce/software/config/installation/numpy-scipy.cfg +++ b/reproduce/software/config/installation/numpy-scipy.cfg @@ -8,6 +8,7 @@ # should leave out sections that your package does not use. # # Copyright (C) 2018-2019 Mohammad Akhlaghi <mohammad@akhlaghi.org> +# Copyright (C) 2019 Raul Infante-Sainz <infantesainz@gmail.com> # # Copying and distribution of this file, with or without modification, are # permitted in any medium without royalty provided the copyright notice and diff --git a/reproduce/software/config/installation/versions.mk b/reproduce/software/config/installation/versions.mk index df2b4fa..5c7743d 100644 --- a/reproduce/software/config/installation/versions.mk +++ b/reproduce/software/config/installation/versions.mk @@ -83,10 +83,10 @@ gsl-version = 2.5 hdf5-version = 1.10.5 libffi-version = 3.2.1 libjpeg-version = v9b +libpng-version = 1.6.37 libtiff-version = 4.0.10 libtool-version = 2.4.6 libxml2-version = 2.9.9 -netpbm-version = 10.47.72 openblas-version = 0.3.5 openmpi-version = 4.0.1 pixman-version = 0.38.0 @@ -159,8 +159,8 @@ webencodings-version = 0.5.1 # during their build and must be accounted for. # # Special notes: -# - `libpng' is downgraded: the current installation of `netpbm' requires -# a version less than 1.5. +# - `netpbm' questions in the configure steps maybe change with different +# or new versions. # Basic/low-level bzip2-version = 1.0.6 @@ -168,5 +168,5 @@ bzip2-version = 1.0.6 # Optional/high-level lapack-version = 3.8.0 libgit2-version = 0.26.0 -libpng-version = 1.4.22 +netpbm-version = 10.86.99 wcslib-version = 6.2 diff --git a/reproduce/software/make/basic.mk b/reproduce/software/make/basic.mk index f2442ff..05161e9 100644 --- a/reproduce/software/make/basic.mk +++ b/reproduce/software/make/basic.mk @@ -16,6 +16,7 @@ # ------------------------------------------------------------------------ # # Copyright (C) 2018-2019 Mohammad Akhlaghi <mohammad@akhlaghi.org> +# Copyright (C) 2019 Raul Infante-Sainz <infantesainz@gmail.com> # # This Makefile is free software: you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by the @@ -806,7 +807,8 @@ $(ibidir)/git: $(tdir)/git-$(git-version).tar.xz \ && echo "Git $(git-version)" > $@ $(ibidir)/gmp: $(tdir)/gmp-$(gmp-version).tar.lz \ - $(ibidir)/bash + $(ibidir)/bash \ + $(ibidir)/m4 $(call gbuild, $<, gmp-$(gmp-version), static, , , make check) \ && echo "GNU Multiple Precision Arithmetic Library $(gmp-version)" > $@ @@ -1038,7 +1040,7 @@ $(ibidir)/gcc: $(gcc-prerequisites) \ rm -f $(ibdir)/gcc* $(ibdir)/g++ $(ibdir)/gfortran $(ibdir)/gcov*;\ rm -rf $(ildir)/gcc $(ildir)/libcc* $(ildir)/libgcc*; \ rm -rf $(ildir)/libgfortran* $(ildir)/libstdc* rm $(idir)/x86_64*;\ - \ + \ ln -fs $(ildir) $(idir)/lib64; \ \ cd $(ddir); \ @@ -1076,7 +1078,7 @@ $(ibidir)/gcc: $(gcc-prerequisites) \ patchelf --set-rpath $(ildir) $$f; \ fi; \ done; \ - fi; \ - ln -sf $(ibdir)/gcc $(ibdir)/cc \ + fi \ + && ln -sf $(ibdir)/gcc $(ibdir)/cc \ && echo "GNU Compiler Collection (GCC) $(gcc-version)" > $@; \ fi diff --git a/reproduce/software/make/high-level.mk b/reproduce/software/make/high-level.mk index c930814..85120bd 100644 --- a/reproduce/software/make/high-level.mk +++ b/reproduce/software/make/high-level.mk @@ -9,6 +9,7 @@ # ------------------------------------------------------------------------ # # Copyright (C) 2018-2019 Mohammad Akhlaghi <mohammad@akhlaghi.org> +# Copyright (C) 2019 Raul Infante-Sainz <infantesainz@gmail.com> # # This Makefile is free software: you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by the @@ -123,7 +124,7 @@ tarballs = $(foreach t, astrometry.net-$(astrometrynet-version).tar.gz \ libpng-$(libpng-version).tar.xz \ libgit2-$(libgit2-version).tar.gz \ libxml2-$(libxml2-version).tar.gz \ - netpbm-$(netpbm-version).tgz \ + netpbm-$(netpbm-version).tar.gz \ openmpi-$(openmpi-version).tar.gz \ openblas-$(openblas-version).tar.gz \ pixman-$(pixman-version).tar.gz \ @@ -183,9 +184,7 @@ $(tarballs): $(tdir)/%: | $(lockdir) mergenames=0 w=https://github.com/libgit2/libgit2/archive/v$(libgit2-version).tar.gz elif [ $$n = libxml ]; then w=ftp://xmlsoft.org/libxml2 - elif [ $$n = netpbm ]; then - mergenames=0 - w=https://sourceforge.net/projects/netpbm/files/super_stable/$(netpbm-version)/netpbm-$(netpbm-version).tgz/download + elif [ $$n = netpbm ]; then w=http://akhlaghi.org/src elif [ $$n = openblas ]; then mergenames=0 w=https://github.com/xianyi/OpenBLAS/archive/v$(openblas-version).tar.gz @@ -207,13 +206,13 @@ $(tarballs): $(tdir)/%: | $(lockdir) exit 1 fi - # Download the requested tarball. Note that some packages may not - # follow our naming convention (where the package name is merged - # with its version number). In such cases, `w' will be the full - # address, not just the top directory address. But since we are - # storing all the tarballs in one directory, we want it to have - # the same naming convention, so we'll download it to a temporary - # name, then rename that. + # Download the requested tarball. Note that some packages may not + # follow our naming convention (where the package name is merged + # with its version number). In such cases, `w' will be the full + # address, not just the top directory address. But since we are + # storing all the tarballs in one directory, we want it to have + # the same naming convention, so we'll download it to a temporary + # name, then rename that. if [ $$mergenames = 1 ]; then tarballurl=$$w/"$*" else tarballurl=$$w fi @@ -279,7 +278,7 @@ $(ibidir)/gsl: $(tdir)/gsl-$(gsl-version).tar.gz $(ibidir)/fftw: $(tdir)/fftw-$(fftw-version).tar.gz $(call gbuild, $<, fftw-$(fftw-version), static, \ - --enable-shared) \ + --enable-shared --enable-single) \ && cp $(dtexdir)/fftw.tex $(ictdir)/ \ && echo "FFTW $(fftw-version) \citep{fftw}" > $@ @@ -314,7 +313,7 @@ $(ibidir)/libxml2: $(tdir)/libxml2-$(libxml2-version).tar.gz # If you really need the Python bindings, try the # --with-python-install-dir=DIR option $(call gbuild, $<, libxml2-$(libxml2-version), static, \ - --without-python) \ + --without-python) \ && echo "Libxml2 $(libxml2-version)" > $@ $(ibidir)/pixman: $(tdir)/pixman-$(pixman-version).tar.gz @@ -500,9 +499,17 @@ $(ibidir)/astrometrynet: $(tdir)/astrometry.net-$(astrometrynet-version).tar.gz $(ipydir)/numpy \ $(ibidir)/swig \ $(ibidir)/gsl + # We are modifying the Makefile in two steps because on Mac OS + # system we do not have `/proc/cpuinfo' nor `free'. Since this is + # only for the `report.txt', this changes do not causes problems in + # running `astrometrynet' cd $(ddir) \ + && rm -rf astrometry.net-$(astrometrynet-version) \ && if ! tar xf $<; then echo; echo "Tar error"; exit 1; fi \ && cd astrometry.net-$(astrometrynet-version) \ + && sed -e 's|cat /proc/cpuinfo|echo "Ignoring CPU info"|' \ + -e 's|-free|echo "Ignoring RAM info"|' Makefile > Makefile.tmp \ + && mv Makefile.tmp Makefile \ && make \ && make py \ && make extra \ @@ -594,7 +601,7 @@ $(ibidir)/netpbm: $(tdir)/netpbm-$(netpbm-version).tgz \ $(ibidir)/libpng \ $(ibidir)/unzip if [ x$(on_mac_os) = xyes ]; then \ - answers='\n\n\n\n\n\n\n\n\n\n\n\nnone\n\n\n'; \ + answers='\n\n$(ildir)\n\n\n\n\n\n$(ildir)/include\n\n$(ildir)/include\n\n$(ildir)/include\nnone\n\n'; \ else \ answers='\n\n\n\ny\n\n\n\n\n\n\n\n\n\n\n\n\n'; \ fi; \ @@ -608,7 +615,7 @@ $(ibidir)/netpbm: $(tdir)/netpbm-$(netpbm-version).tgz \ && rm -rf $(ddir)/$$unpackdir/install \ && make package pkgdir=$(ddir)/$$unpackdir/install \ && printf "$(ddir)/$$unpackdir/install\n$(idir)\n\n\nN\n\n\n\n\nN\n\n" \ - | ./installnetpbm \ + | ./installnetpbm \ && cd .. \ && rm -rf $$unpackdir \ && echo "Netpbm $(netpbm-version)" > $@ @@ -619,9 +626,9 @@ $(ibidir)/netpbm: $(tdir)/netpbm-$(netpbm-version).tgz \ # the option --enable-openblas and it worked (same issue happened with # `sextractor'. $(ibidir)/scamp: $(tdir)/scamp-$(scamp-version).tar.lz \ - $(ibidir)/cdsclient \ - $(ibidir)/openblas \ - $(ibidir)/fftw + $(ibidir)/cdsclient \ + $(ibidir)/openblas \ + $(ibidir)/fftw $(call gbuild, $<, scamp-$(scamp-version), static, \ --enable-threads --enable-openblas \ --with-fftw-libdir=$(idir) \ @@ -639,19 +646,19 @@ $(ibidir)/sextractor: $(tdir)/sextractor-$(sextractor-version).tar.lz \ $(ibidir)/openblas \ $(ibidir)/fftw $(call gbuild, $<, sextractor-$(sextractor-version), static, \ - --enable-threads --enable-openblas \ - --with-openblas-libdir=$(ildir) \ - --with-openblas-incdir=$(idir)/include) \ - && ln -fs $(ibdir)/sex $(ibdir)/sextractor \ - && cp $(dtexdir)/sextractor.tex $(ictdir)/ \ - && echo "Sextractor $(sextractor-version) \citep{sextractor}" > $@ + --enable-threads --enable-openblas \ + --with-openblas-libdir=$(ildir) \ + --with-openblas-incdir=$(idir)/include) \ + && ln -fs $(ibdir)/sex $(ibdir)/sextractor \ + && cp $(dtexdir)/sextractor.tex $(ictdir)/ \ + && echo "Sextractor $(sextractor-version) \citep{sextractor}" > $@ $(ibidir)/swarp: $(tdir)/swarp-$(swarp-version).tar.gz \ $(ibidir)/fftw $(call gbuild, $<, swarp-$(swarp-version), static, \ - --enable-threads) \ - && cp $(dtexdir)/swarp.tex $(ictdir)/ \ - && echo "SWarp $(swarp-version) \citep{swarp}" > $@ + --enable-threads) \ + && cp $(dtexdir)/swarp.tex $(ictdir)/ \ + && echo "SWarp $(swarp-version) \citep{swarp}" > $@ $(ibidir)/swig: $(tdir)/swig-$(swig-version).tar.gz # Option --without-pcre was a suggestion once the configure step diff --git a/reproduce/software/make/python.mk b/reproduce/software/make/python.mk index 4c407f6..1a7be56 100644 --- a/reproduce/software/make/python.mk +++ b/reproduce/software/make/python.mk @@ -350,7 +350,9 @@ $(ipydir)/h5py: $(tdir)/h5py-$(h5py-version).tar.gz \ $(ipydir)/pypkgconfig \ $(ipydir)/setuptools \ $(ipydir)/cython \ - $(ibidir)/hdf5 + $(ipydir)/numpy \ + $(ibidir)/hdf5 \ + $(ipydir)/six #$(ipydir)/mpi4py # AFTER its problem is fixed. #export HDF5_MPI=ON; # AFTER its problem is fixed. export HDF5_DIR=$(ildir); \ @@ -496,8 +498,9 @@ $(ipydir)/setuptools_scm: $(tdir)/setuptools_scm-$(setuptools_scm-version).tar.g $(call pybuild, tar xf, $<, setuptools_scm-$(setuptools_scm-version), ,\ Setuptools-scm $(setuptools_scm-version)) -$(ipydir)/sip_tpv: $(tdir)/sip_tpv-$(sip_tpv-version).tar.gz \ - $(ipydir)/mpmath \ +$(ipydir)/sip_tpv: $(tdir)/sip_tpv-$(sip_tpv-version).tar.gz \ + $(ipydir)/astropy \ + $(ipydir)/numpy \ $(ipydir)/sympy $(call pybuild, tar xf, $<, sip_tpv-$(sip_tpv-version), ,) \ && cp $(dtexdir)/sip_tpv.tex $(ictdir)/ \ |