aboutsummaryrefslogtreecommitdiff
path: root/reproduce/software/make
diff options
context:
space:
mode:
authorMohammad Akhlaghi <mohammad@akhlaghi.org>2020-04-02 15:51:28 +0100
committerMohammad Akhlaghi <mohammad@akhlaghi.org>2020-04-02 16:05:03 +0100
commitde3842a14e36b2debb3ad375d95411d15d45dc84 (patch)
tree86ae571f85c639c616cf8939cbcec7f1c1be4c9c /reproduce/software/make
parent646756675566a0907edf143c6b6950e0479d9e7e (diff)
parentcbf177e09af6b9d240388d148b0cb5e3488d8b09 (diff)
Imported recent work on Maneage, minor conflicts fixed
A few minor conflicts occurred and were fixed.
Diffstat (limited to 'reproduce/software/make')
-rw-r--r--reproduce/software/make/README.md2
-rw-r--r--reproduce/software/make/basic.mk234
-rw-r--r--reproduce/software/make/build-rules.mk4
-rw-r--r--reproduce/software/make/high-level.mk53
-rw-r--r--reproduce/software/make/python.mk12
5 files changed, 195 insertions, 110 deletions
diff --git a/reproduce/software/make/README.md b/reproduce/software/make/README.md
index fc04dfb..d71a3d5 100644
--- a/reproduce/software/make/README.md
+++ b/reproduce/software/make/README.md
@@ -2,7 +2,7 @@ Software building instructions
==============================
This directory contains Makefiles that are called by the high-level
-`reproduce/software/bash/configure.sh` script. The main target for the
+`reproduce/software/shell/configure.sh` script. The main target for the
installation of each software is a simple plain text file that contains the
name of the software and its version (which is put in the paper in the
end). Once built, these plain-text files are all put in the proper
diff --git a/reproduce/software/make/basic.mk b/reproduce/software/make/basic.mk
index e7d00df..212c738 100644
--- a/reproduce/software/make/basic.mk
+++ b/reproduce/software/make/basic.mk
@@ -34,9 +34,9 @@
# Top level environment
include reproduce/software/make/build-rules.mk
-include reproduce/software/config/installation/LOCAL.mk
-include reproduce/software/config/installation/versions.mk
-include reproduce/software/config/installation/checksums.mk
+include reproduce/software/config/installation/LOCAL.conf
+include reproduce/software/config/installation/versions.conf
+include reproduce/software/config/installation/checksums.conf
lockdir = $(BDIR)/locks
tdir = $(BDIR)/software/tarballs
@@ -48,7 +48,7 @@ ibidir = $(BDIR)/software/installed/version-info/proglib
# We'll need the system's PATH for making links to low-level programs we
# won't be building ourselves.
-syspath := $(PATH)
+syspath := $(PATH)
# As we build more programs, we want to use this project's built programs
# and libraries, not the host's.
@@ -58,7 +58,15 @@ export PKG_CONFIG_PATH := $(ildir)/pkgconfig
export PKG_CONFIG_LIBDIR := $(ildir)/pkgconfig
export CPPFLAGS := -I$(idir)/include $(CPPFLAGS)
export LDFLAGS := $(rpath_command) -L$(ildir) $(LDFLAGS)
-export LD_LIBRARY_PATH := $(shell echo $(LD_LIBRARY_PATH) \
+
+# This is the "basic" tools where we are relying on the host operating
+# system, but are slowly populating our basic software envirnoment. To run
+# (system or template) programs, `LD_LIBRARY_PATH' is necessary, so here,
+# we'll first tell the programs to look into any possible pre-defined
+# `LD_LIBRARY_PATH', then we'll add our own newly installed libraries. We
+# will also make sure that there is no "current directory" in it (by
+# removing a starting or trailing `:' and any occurance of `::'.
+export LD_LIBRARY_PATH := $(shell echo $(LD_LIBRARY_PATH):$(ildir) \
| sed -e's/::/:/g' -e's/^://' -e's/:$$//')
# RPATH is automatically written in macOS, so `DYLD_LIBRARY_PATH' is
@@ -66,14 +74,18 @@ export LD_LIBRARY_PATH := $(shell echo $(LD_LIBRARY_PATH) \
# causes crashs (see bug #56682). So we'll just give it no value at all.
export DYLD_LIBRARY_PATH :=
-# Recipe startup script, see `reproduce/software/bash/bashrc.sh'.
+# Recipe startup script.
export PROJECT_STATUS := configure_basic
-export BASH_ENV := $(shell pwd)/reproduce/software/bash/bashrc.sh
+export BASH_ENV := $(shell pwd)/reproduce/software/shell/bashrc.sh
# Define the top-level basic programs (that don't depend on any other).
top-level-programs = low-level-links gcc
all: $(foreach p, $(top-level-programs), $(ibidir)/$(p))
+# Servers to use as backup, later this should go in a file that is not
+# under version control (the actual server that the tarbal comes from is
+# irrelevant).
+backupservers = http://akhlaghi.org/reproduce-software
@@ -176,7 +188,7 @@ $(tarballs): $(tdir)/%: | $(lockdir)
mergenames=0; \
c=$(m4-checksum); \
w=http://akhlaghi.org/reproduce-software/m4-1.4.18-patched.tar.gz; \
- elif [ $$n = make ]; then c=$(make-checksum); w=https://alpha.gnu.org/gnu/make; \
+ elif [ $$n = make ]; then c=$(make-checksum); w=https://ftp.gnu.org/gnu/make; \
elif [ $$n = metastore ]; then c=$(metastore-checksum); w=http://akhlaghi.org/reproduce-software; \
elif [ $$n = mpc ]; then c=$(mpc-checksum); w=http://ftp.gnu.org/gnu/mpc; \
elif [ $$n = mpfr ]; then c=$(mpfr-checksum); w=http://www.mpfr.org/mpfr-current;\
@@ -228,15 +240,19 @@ $(tarballs): $(tdir)/%: | $(lockdir)
\
touch $(lockdir)/download; \
$(downloadwrapper) "$$downloader" $(lockdir)/download \
- $$tarballurl "$@.unchecked"; \
+ $$tarballurl "$@.unchecked" "$(backupservers)"; \
fi; \
\
\
if type sha512sum > /dev/null 2>/dev/null; then \
checksum=$$(sha512sum "$@.unchecked" | awk '{print $$1}'); \
- echo "$*: should be '$$c', is '$$checksum'"; \
- if [ x$$checksum = x$$c ]; then mv "$@.unchecked" "$@"; \
- else echo "ERROR: Non-matching checksum for '$*'."; exit 1; \
+ if [ x"$$checksum" = x"$$c" ]; then \
+ mv "$@.unchecked" "$@"; \
+ else \
+ echo "ERROR: Non-matching checksum for '$*'."; \
+ echo "Checksum should be: $$c"; \
+ echo "Checksum is: $$checksum"; \
+ exit 1; \
fi; \
else mv "$@.unchecked" "$@"; \
fi;
@@ -658,6 +674,66 @@ $(ibidir)/bash: $(ibidir)/readline \
+# The `-shared' flag will cause problems while building Perl on macOS, so
+# we'll only use this configuration option when we are GNU/Linux
+# systems. However, since the whole option must be used (which includes `='
+# and empty space), its easier to define the variable as a Make variable
+# outside the recipe, not as a shell variable inside it.
+ifeq ($(on_mac_os),yes)
+perl-conflddlflags =
+else
+perl-conflddlflags = -Dlddlflags="-shared $$LDFLAGS"
+endif
+$(ibidir)/perl: | $(ibidir)/bash \
+ $(tdir)/perl-$(perl-version).tar.gz
+ major_version=$$(echo $(perl-version) \
+ | sed -e's/\./ /g' \
+ | awk '{printf("%d", $$1)}'); \
+ base_version=$$(echo $(perl-version) \
+ | sed -e's/\./ /g' \
+ | awk '{printf("%d.%d", $$1, $$2)}'); \
+ cd $(ddir) \
+ && rm -rf perl-$(perl-version) \
+ && if ! tar xf $(word 1,$(filter $(tdir)/%,$|)); then \
+ echo; echo "Tar error"; exit 1; \
+ fi \
+ && cd perl-$(perl-version) \
+ && sed -e's|\#\! /bin/sh|\#\! $(ibdir)/bash|' \
+ -e's|\#\!/bin/sh|\#\! $(ibdir)/bash|' \
+ Configure > Configure-tmp \
+ && mv -f Configure-tmp Configure \
+ && chmod +x Configure \
+ && ./Configure -des \
+ -Dusethreads \
+ -Duseshrplib \
+ -Dprefix=$(idir) \
+ -Dvendorprefix=$(idir) \
+ -Dprivlib=$(idir)/share/perl$$major_version/core_perl \
+ -Darchlib=$(idir)/lib/perl$$major_version/$$base_version/core_perl \
+ -Dsitelib=$(idir)/share/perl$$major_version/site_perl \
+ -Dsitearch=$(idir)/lib/perl$$major_version/$$basever/site_perl \
+ -Dvendorlib=$(idir)/share/perl$$major_version/vendor_perl \
+ -Dvendorarch=$(idir)/lib/perl$$major_version/$$base_version/vendor_perl \
+ -Dscriptdir=$(idir)/bin/core_perl \
+ -Dsitescript=$(idir)/bin/site_perl \
+ -Dvendorscript=$(idir)/bin/vendor_perl \
+ -Dinc_version_list=none \
+ -Dman1ext=1perl \
+ -Dman3ext=3perl \
+ -Dcccdlflags='-fPIC' \
+ $(perl-conflddlflags) \
+ -Dldflags="$$LDFLAGS" \
+ && make SHELL=$(ibdir)/bash -j$(numthreads) \
+ && make SHELL=$(ibdir)/bash install \
+ && cd .. \
+ && rm -rf perl-$(perl-version) \
+ && cd $$topdir \
+ && echo "Perl $(perl-version)" > $@
+
+
+
+
+
# Coreutils
# ---------
#
@@ -677,8 +753,10 @@ $(ibidir)/bash: $(ibidir)/readline \
# The echo after the PatchELF loop is to avoid a crash if the last
# file that PatchELF encounters is not usable (and it returns with
# an error).
+#
+# Coreutils uses Perl to create man pages!
$(ibidir)/coreutils: $(ibidir)/openssl \
- | $(ibidir)/bash \
+ | $(ibidir)/perl \
$(tdir)/coreutils-$(coreutils-version).tar.xz
cd $(ddir) \
&& rm -rf coreutils-$(coreutils-version) \
@@ -847,17 +925,17 @@ $(ibidir)/wget: $(ibidir)/libiconv \
# there is no access to the system's PATH.
$(ibidir)/diffutils: | $(ibidir)/coreutils \
$(tdir)/diffutils-$(diffutils-version).tar.xz
- $(call gbuild, diffutils-$(diffutils-version), static, , V=1) \
+ $(call gbuild, diffutils-$(diffutils-version), static,,V=1) \
&& echo "GNU Diffutils $(diffutils-version)" > $@
$(ibidir)/file: | $(ibidir)/coreutils \
$(tdir)/file-$(file-version).tar.gz
- $(call gbuild, file-$(file-version), static) \
+ $(call gbuild, file-$(file-version), static,,V=1) \
&& echo "File $(file-version)" > $@
$(ibidir)/findutils: | $(ibidir)/coreutils \
$(tdir)/findutils-$(findutils-version).tar.xz
- $(call gbuild, findutils-$(findutils-version), static, , V=1) \
+ $(call gbuild, findutils-$(findutils-version), static,,V=1) \
&& echo "GNU Findutils $(findutils-version)" > $@
$(ibidir)/gawk: $(ibidir)/gmp \
@@ -910,13 +988,13 @@ $(ibidir)/gmp: | $(ibidir)/m4 \
$(ibidir)/glibtool: | $(ibidir)/m4 \
$(tdir)/libtool-$(libtool-version).tar.xz
$(call gbuild, libtool-$(libtool-version), static, \
- --program-prefix=g) \
+ --program-prefix=g, V=1) \
&& ln -s $(ibdir)/glibtoolize $(ibdir)/libtoolize \
&& echo "GNU Libtool $(libtool-version)" > $@
$(ibidir)/grep: | $(ibidir)/coreutils \
$(tdir)/grep-$(grep-version).tar.xz
- $(call gbuild, grep-$(grep-version), static) \
+ $(call gbuild, grep-$(grep-version), static,,V=1) \
&& echo "GNU Grep $(grep-version)" > $@
$(ibidir)/libbsd: | $(ibidir)/coreutils \
@@ -927,7 +1005,7 @@ $(ibidir)/libbsd: | $(ibidir)/coreutils \
$(ibidir)/m4: | $(ibidir)/coreutils \
$(ibidir)/texinfo \
$(tdir)/m4-$(m4-version).tar.gz
- $(call gbuild, m4-$(m4-version), static) \
+ $(call gbuild, m4-$(m4-version), static,,V=1) \
&& echo "GNU M4 $(m4-version)" > $@
# Metastore is used (through a Git hook) to restore the source modification
@@ -997,7 +1075,7 @@ $(ibidir)/metastore: $(needlibbsd) \
-e's|@GROUP[@]|'$$group'|g' \
-e's|@BINDIR[@]|$(ibdir)|g' \
-e's|@TOP_PROJECT_DIR[@]|'$$current_dir'|g' \
- reproduce/software/bash/git-$$f > .git/hooks/$$f \
+ reproduce/software/shell/git-$$f > .git/hooks/$$f \
&& chmod +x .git/hooks/$$f; \
done; \
fi \
@@ -1020,63 +1098,6 @@ $(ibidir)/mpfr: $(ibidir)/gmp \
$(call gbuild, mpfr-$(mpfr-version), static, , , make check) \
&& echo "GNU Multiple Precision Floating-Point Reliably $(mpfr-version)" > $@
-# The `-shared' flag will cause problems while building Perl on macOS, so
-# we'll only use this configuration option when we are GNU/Linux
-# systems. However, since the whole option must be used (which includes `='
-# and empty space), its easier to define the variable as a Make variable
-# outside the recipe, not as a shell variable inside it.
-ifeq ($(on_mac_os),yes)
-perl-conflddlflags =
-else
-perl-conflddlflags = -Dlddlflags="-shared $$LDFLAGS"
-endif
-$(ibidir)/perl: | $(ibidir)/coreutils \
- $(tdir)/perl-$(perl-version).tar.gz
- major_version=$$(echo $(perl-version) \
- | sed -e's/\./ /g' \
- | awk '{printf("%d", $$1)}'); \
- base_version=$$(echo $(perl-version) \
- | sed -e's/\./ /g' \
- | awk '{printf("%d.%d", $$1, $$2)}'); \
- cd $(ddir) \
- && rm -rf perl-$(perl-version) \
- && if ! tar xf $(word 1,$(filter $(tdir)/%,$|)); then \
- echo; echo "Tar error"; exit 1; \
- fi \
- && cd perl-$(perl-version) \
- && sed -e's|\#\! /bin/sh|\#\! $(ibdir)/bash|' \
- -e's|\#\!/bin/sh|\#\! $(ibdir)/bash|' \
- Configure > Configure-tmp \
- && mv -f Configure-tmp Configure \
- && chmod +x Configure \
- && ./Configure -des \
- -Dusethreads \
- -Duseshrplib \
- -Dprefix=$(idir) \
- -Dvendorprefix=$(idir) \
- -Dprivlib=$(idir)/share/perl$$major_version/core_perl \
- -Darchlib=$(idir)/lib/perl$$major_version/$$base_version/core_perl \
- -Dsitelib=$(idir)/share/perl$$major_version/site_perl \
- -Dsitearch=$(idir)/lib/perl$$major_version/$$basever/site_perl \
- -Dvendorlib=$(idir)/share/perl$$major_version/vendor_perl \
- -Dvendorarch=$(idir)/lib/perl$$major_version/$$base_version/vendor_perl \
- -Dscriptdir=$(idir)/bin/core_perl \
- -Dsitescript=$(idir)/bin/site_perl \
- -Dvendorscript=$(idir)/bin/vendor_perl \
- -Dinc_version_list=none \
- -Dman1ext=1perl \
- -Dman3ext=3perl \
- -Dcccdlflags='-fPIC' \
- $(perl-conflddlflags) \
- -Dldflags="$$LDFLAGS" \
- && make SHELL=$(ibdir)/bash -j$(numthreads) \
- && make SHELL=$(ibdir)/bash install \
- && cd .. \
- && rm -rf perl-$(perl-version) \
- && cd $$topdir \
- && echo "Perl $(perl-version)" > $@
-
-
$(ibidir)/pkg-config: | $(ibidir)/coreutils \
$(tdir)/pkg-config-$(pkgconfig-version).tar.gz
# An existing `libiconv' can cause a conflict with `pkg-config',
@@ -1101,7 +1122,7 @@ $(ibidir)/pkg-config: | $(ibidir)/coreutils \
$(ibidir)/sed: | $(ibidir)/coreutils \
$(tdir)/sed-$(sed-version).tar.xz
- $(call gbuild, sed-$(sed-version), static) \
+ $(call gbuild, sed-$(sed-version), static,,V=1) \
&& echo "GNU Sed $(sed-version)" > $@
$(ibidir)/texinfo: | $(ibidir)/perl \
@@ -1111,7 +1132,7 @@ $(ibidir)/texinfo: | $(ibidir)/perl \
$(ibdir)/patchelf --set-rpath $(ildir) $(ibdir)/info; \
$(ibdir)/patchelf --set-rpath $(ildir) $(ibdir)/install-info; \
fi \
- && echo "GNU Texinfo $(sed-version)" > $@
+ && echo "GNU Texinfo $(texinfo-version)" > $@
$(ibidir)/which: | $(ibidir)/coreutils \
$(tdir)/which-$(which-version).tar.gz
@@ -1161,6 +1182,15 @@ endif
# programs (http://savannah.nongnu.org/bugs/?56294). Therefore, we'll set
# all other basic programs as Binutils prerequisite and GCC (the final
# basic target) ultimately just depends on Binutils.
+#
+# The `ld' linker of Binutils needs several `*crt*.o' file to run. On some
+# systems these object files aren't installed in standard places. We
+# defined `LIBRARY_PATH' and that fixed the problem for many
+# systems. However, some software (for example ImageMagick) over-write
+# `LIBRARY_PATH', therefore there is no other way than to put a link to
+# these necessary files in our local build directory. IMPORTANT NOTE:
+# later, when we build the GNU C Library in the project, we should remove
+# this step.
$(ibidir)/binutils: | $(ibidir)/sed \
$(ibidir)/wget \
$(ibidir)/grep \
@@ -1174,6 +1204,7 @@ $(ibidir)/binutils: | $(ibidir)/sed \
$(ibidir)/diffutils \
$(ibidir)/coreutils \
$(gcc-prerequisites)
+
if [ x$(on_mac_os) = xyes ]; then \
$(call makelink,as); \
$(call makelink,ar); \
@@ -1181,9 +1212,17 @@ $(ibidir)/binutils: | $(ibidir)/sed \
$(call makelink,nm); \
$(call makelink,ps); \
$(call makelink,ranlib); \
- echo "" > $@; \
+ echo "" > $@; \
else \
- $(call gbuild, binutils-$(binutils-version), static) \
+ $(call gbuild, binutils-$(binutils-version), static, \
+ --with-lib-path=$(sys_library_path), \
+ -j$(numthreads) ) \
+ && if ! [ x"$(sys_library_path)" = x ]; then \
+ for f in $(sys_library_path)/*crt*.o; do \
+ b=$$($(ibdir)/basename $$f); \
+ ln -s $$f $(ildir)/$$b; \
+ done; \
+ fi \
&& echo "GNU Binutils $(binutils-version)" > $@; \
fi
@@ -1222,15 +1261,27 @@ $(ibidir)/gcc: | $(ibidir)/binutils \
ccinfo=$$(gcc --version | awk 'NR==1'); \
echo "C compiler (""$$ccinfo"")" > $@; \
else \
+ current_dir=$$(pwd); \
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); \
+ \
+ in_ram=$$(df $(ddir) \
+ | awk 'NR==2{print ($$4>10000000) ? "yes" : "no"}'); \
+ if [ $$in_ram = "yes" ]; then odir=$(ddir); \
+ else \
+ odir=$(BDIR)/software/build-tmp-gcc; \
+ if [ -d $$odir ]; then rm -rf $$odir; fi; \
+ mkdir $$odir; \
+ fi; \
+ cd $$odir; \
rm -rf gcc-$(gcc-version); \
- tar xf $(word 1,$(filter $(tdir)/%,$|)) \
+ tar xf $(word 1,$(filter $(tdir)/%,$|)); \
+ if [ $$odir != $(ddir) ]; then \
+ ln -s $$odir/gcc-$(gcc-version) $(ddir)/gcc-$(gcc-version); \
+ fi \
&& cd gcc-$(gcc-version) \
&& mkdir build \
&& cd build \
@@ -1257,15 +1308,24 @@ $(ibidir)/gcc: | $(ibidir)/binutils \
&& make SHELL=$(ibdir)/bash -j$(numthreads) \
&& make SHELL=$(ibdir)/bash install \
&& cd ../.. \
- && rm -rf gcc-$(gcc-version) \
+ && tempname=$$odir/gcc-$(gcc-version)/build/rpath-temp-copy \
&& if [ "x$(on_mac_os)" != xyes ]; then \
patchelf --add-needed $(ildir)/libiconv.so $(ildir)/libstdc++.so; \
for f in $$(find $(idir)/libexec/gcc) $(ildir)/libstdc++*; do \
- if ldd $$f &> /dev/null; then \
- patchelf --set-rpath $(ildir) $$f; \
+ isdynamic=$$(file $$f | grep "dynamically linked"); \
+ if [ x"$$isdynamic" != x ]; then \
+ cp $$f $$tempname; \
+ patchelf --set-rpath $(ildir) $$tempname; \
+ mv $$tempname $$f; echo "corrected"; \
fi; \
done; \
fi \
+ && rm -rf gcc-$(gcc-version) \
+ && cd $$current_dir \
+ && if [ "$$odir" != "$(ddir)" ]; then \
+ rm -rf $$odir; \
+ rm $(ddir)/gcc-$(gcc-version); \
+ fi \
&& ln -sf $(ibdir)/gcc $(ibdir)/cc \
&& echo "GNU Compiler Collection (GCC) $(gcc-version)" > $@; \
fi
diff --git a/reproduce/software/make/build-rules.mk b/reproduce/software/make/build-rules.mk
index cbde70b..f3ca7d2 100644
--- a/reproduce/software/make/build-rules.mk
+++ b/reproduce/software/make/build-rules.mk
@@ -1,7 +1,7 @@
# Generic configurable recipes to build packages with GNU Build system or
# CMake. This is Makefile is not intended to be run directly, it will be
-# imported into `dependencies-basic.mk' and `dependencies.mk'. They should
-# be activated with Make's `Call' function.
+# imported into `basic.mk' and `high-level.mk'. They should be activated
+# with Make's `Call' function.
#
# Copyright (C) 2018-2020 Mohammad Akhlaghi <mohammad@akhlaghi.org>
#
diff --git a/reproduce/software/make/high-level.mk b/reproduce/software/make/high-level.mk
index ac46f3a..5f1d2b2 100644
--- a/reproduce/software/make/high-level.mk
+++ b/reproduce/software/make/high-level.mk
@@ -28,11 +28,11 @@
# Top level environment
include reproduce/software/make/build-rules.mk
-include reproduce/software/config/installation/LOCAL.mk
-include reproduce/software/config/installation/TARGETS.mk
-include reproduce/software/config/installation/texlive.mk
-include reproduce/software/config/installation/versions.mk
-include reproduce/software/config/installation/checksums.mk
+include reproduce/software/config/installation/LOCAL.conf
+include reproduce/software/config/installation/TARGETS.conf
+include reproduce/software/config/installation/versions.conf
+include reproduce/software/config/installation/checksums.conf
+include reproduce/software/config/installation/texlive-packages.conf
lockdir = $(BDIR)/locks
tdir = $(BDIR)/software/tarballs
@@ -70,8 +70,8 @@ all: $(foreach p, $(top-level-programs), $(ibidir)/$(p)) \
.SHELLFLAGS := --noprofile --norc -ec
export CCACHE_DISABLE := 1
export PATH := $(ibdir)
-export CXX := $(ibdir)/g++
export CC := $(ibdir)/gcc
+export CXX := $(ibdir)/g++
export SHELL := $(ibdir)/bash
export F77 := $(ibdir)/gfortran
export LD_RUN_PATH := $(ildir):$(il64dir)
@@ -79,14 +79,31 @@ export PKG_CONFIG_PATH := $(ildir)/pkgconfig
export LD_LIBRARY_PATH := $(ildir):$(il64dir)
export PKG_CONFIG_LIBDIR := $(ildir)/pkgconfig
+# Until we build our own C library, without this, our GCC won't be able to
+# compile anything! Note that on most systems (in particular
+# non-Debian-based), `sys_cpath' will be empty.
+export CPATH := $(sys_cpath)
+
# RPATH is automatically written in macOS, so `DYLD_LIBRARY_PATH' is
# ultimately redundant. But on some systems, even having a single value
# causes crashs (see bug #56682). So we'll just give it no value at all.
export DYLD_LIBRARY_PATH :=
-# Recipe startup script, see `reproduce/software/bash/bashrc.sh'.
+# On Debian-based OSs, the basic C libraries are in a target-specific
+# location, not in standard places. Until we merge the building of the C
+# library, it is thus necessary to include this location here. On systems
+# that don't need it, `sys_library_path' is just empty. This is necessary
+# for `ld'.
+export LIBRARY_PATH := $(sys_library_path)
+
+# Recipe startup script, see `reproduce/software/shell/bashrc.sh'.
export PROJECT_STATUS := configure_highlevel
-export BASH_ENV := $(shell pwd)/reproduce/software/bash/bashrc.sh
+export BASH_ENV := $(shell pwd)/reproduce/software/shell/bashrc.sh
+
+# Servers to use as backup, later this should go in a file that is not
+# under version control (the actual server that the tarbal comes from is
+# irrelevant).
+backupservers = http://akhlaghi.org/reproduce-software
# Building flags:
#
@@ -168,6 +185,7 @@ tarballs = $(foreach t, apachelog4cxx-$(apachelog4cxx-version).tar.lz \
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 \
openmpi-$(openmpi-version).tar.gz \
@@ -268,6 +286,7 @@ $(tarballs): $(tdir)/%: | $(lockdir)
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
mergenames=0
@@ -325,7 +344,7 @@ $(tarballs): $(tdir)/%: | $(lockdir)
touch $(lockdir)/download
downloader="wget --no-use-server-timestamps -O"
$(downloadwrapper) "$$downloader" $(lockdir)/download \
- $$tarballurl "$@.unchecked"
+ $$tarballurl "$@.unchecked" "$(backupservers)"
fi
# Make sure this is the expected tarball. Note that we now have a
@@ -601,7 +620,7 @@ $(ibidir)/hdf5: $(ibidir)/openmpi \
# HEALPix includes the source of its C, C++, Python (and several other
# languages) libraries within one tarball. We will include the Python
# installation only when any other Python module is requested (in
-# `TARGETS.mk').
+# `TARGETS.conf').
#
# Note that the default `./configure' script is an interactive script which
# is hard to automate. So we need to go into the `autotools' directory of
@@ -647,7 +666,7 @@ $(ibidir)/healpix: $(ibidir)/cfitsio \
&& echo "HEALPix $(healpix-version) \citep{healpix}" > $@
$(ibidir)/libjpeg: | $(tdir)/jpegsrc.$(libjpeg-version).tar.gz
- $(call gbuild, jpeg-9b, static) \
+ $(call gbuild, jpeg-9b, static,,V=1) \
&& echo "Libjpeg $(libjpeg-version)" > $@
$(ibidir)/libnsl: $(ibidir)/libtirpc \
@@ -1017,12 +1036,15 @@ $(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)" > $@
+$(ibidir)/missfits: | $(tdir)/missfits-$(missfits-version).tar.gz
+ $(call gbuild, missfits-$(missfits-version), static) \
+ && cp $(dtexdir)/missfits.tex $(ictdir)/ \
+ && echo "MissFITS $(missfits-version) \citep{missfits}" > $@
# Netpbm is a prerequisite of Astrometry-net, it contains a lot of programs.
# This program has a crazy dialogue installation which is override using the
@@ -1135,7 +1157,10 @@ $(ibidir)/xlsxio: $(ibidir)/expat \
| $(tdir)/xlsxio-$(xlsxio-version).tar.gz
export LDFLAGS="-lbz2 -lbsd"; \
$(call cbuild, xlsxio-$(xlsxio-version), static) \
- && echo "XLSX I/O $(xlsxio-version)" > $@
+ && echo "XLSX I/O $(xlsxio-version)" > $
+
+
+
@@ -1216,7 +1241,7 @@ $(itidir)/texlive-ready-tlmgr: reproduce/software/config/installation/texlive.co
#else
#forbiber = $(ibidir)/libnsl
#endif
-$(itidir)/texlive: reproduce/software/config/installation/texlive.mk \
+$(itidir)/texlive: reproduce/software/config/installation/texlive-packages.conf \
$(itidir)/texlive-ready-tlmgr \
$(forbiber)
diff --git a/reproduce/software/make/python.mk b/reproduce/software/make/python.mk
index 8c7b6f0..fef1605 100644
--- a/reproduce/software/make/python.mk
+++ b/reproduce/software/make/python.mk
@@ -185,7 +185,7 @@ $(pytarballs): $(tdir)/%:
h=$(pytopurl)/$$hash/SecretStorage-$(secretstorage-version).tar.gz
elif [ $$n = asn ]; then h=fc/f1/8db7daa71f414ddabfa056c4ef792e1461ff655c2ae2928a2b675bfed6b4; c=$(asn1crypto-checksum)
elif [ $$n = asteval ]; then h=50/3f/29b7935c6dc09ee96dc347edc66c57e8ef68d595dd35b763a36a117acc8c; c=$(asteval-checksum)
- elif [ $$n = astroquery ]; then h=61/50/a7a08f9e54d7d9d97e69433cd88231e1ad2901811c9d1ae9ac7ccaef9396; c=$(astroquery-checksum)
+ elif [ $$n = astroquery ]; then h=e2/af/a3cd3b30745832a0e81f5f13327234099aaf5d03b7979ac947a888e68e91; c=$(astroquery-checksum)
elif [ $$n = astropy ]; then h=de/96/7feaca4b9be134128838395a9d924ea0b389ed4381702dcd9d11ae31789f; c=$(astropy-checksum)
elif [ $$n = beautifulsoup ]; then h=80/f2/f6aca7f1b209bb9a7ef069d68813b091c8c3620642b568dac4eb0e507748; c=$(beautifulsoup4-checksum)
elif [ $$n = certifi ]; then h=55/54/3ce77783acba5979ce16674fc98b1920d00b01d337cfaaf5db22543505ed; c=$(certifi-checksum)
@@ -259,7 +259,7 @@ $(pytarballs): $(tdir)/%:
touch $(lockdir)/download
downloader="wget --no-use-server-timestamps -O"
$(downloadwrapper) "$$downloader" $(lockdir)/download \
- $$tarballurl "$@.unchecked"
+ $$tarballurl "$@.unchecked" "$(backupservers)"
fi
# Make sure this is the expected tarball. Note that we now have a
@@ -373,12 +373,9 @@ $(ipydir)/asteval: $(ipydir)/numpy \
$(call pybuild, tar xf, asteval-$(asteval-version), , \
ASTEVAL $(asteval-version))
-$(ipydir)/astroquery: $(ipydir)/numpy \
- $(ipydir)/astropy \
+$(ipydir)/astroquery: $(ipydir)/astropy \
$(ipydir)/keyring \
- $(ipydir)/html5lib \
$(ipydir)/requests \
- $(ipydir)/beautifulsoup4 \
| $(tdir)/astroquery-$(astroquery-version).tar.gz
$(call pybuild, tar xf, astroquery-$(astroquery-version), ,\
Astroquery $(astroquery-version))
@@ -386,6 +383,9 @@ $(ipydir)/astroquery: $(ipydir)/numpy \
$(ipydir)/astropy: $(ipydir)/h5py \
$(ipydir)/scipy \
$(ipydir)/numpy \
+ $(ipydir)/pyyaml \
+ $(ipydir)/html5lib \
+ $(ipydir)/beautifulsoup4 \
| $(tdir)/astropy-$(astropy-version).tar.gz
$(call pybuild, tar xf, astropy-$(astropy-version)) \
&& cp $(dtexdir)/astropy.tex $(ictdir)/ \