aboutsummaryrefslogtreecommitdiff
path: root/reproduce/software/make
diff options
context:
space:
mode:
Diffstat (limited to 'reproduce/software/make')
-rw-r--r--reproduce/software/make/README.md30
-rwxr-xr-xreproduce/software/make/atlas-multiple.mk19
-rwxr-xr-xreproduce/software/make/atlas-single.mk19
-rw-r--r--reproduce/software/make/basic.mk725
-rw-r--r--reproduce/software/make/build-rules.mk61
-rw-r--r--reproduce/software/make/high-level.mk330
-rw-r--r--reproduce/software/make/python.mk134
7 files changed, 736 insertions, 582 deletions
diff --git a/reproduce/software/make/README.md b/reproduce/software/make/README.md
index d71a3d5..7376cdd 100644
--- a/reproduce/software/make/README.md
+++ b/reproduce/software/make/README.md
@@ -1,5 +1,8 @@
Software building instructions
-==============================
+------------------------------
+
+Copyright (C) 2019-2020 Mohammad Akhlaghi <mohammad@akhlaghi.org>\
+See the end of the file for license conditions.
This directory contains Makefiles that are called by the high-level
`reproduce/software/shell/configure.sh` script. The main target for the
@@ -13,8 +16,7 @@ Besides being directly used in the paper, these simple plain text files
also act as prerequisites for higher-level software that depend on
lower-level ones.
-Note on prerequisites
----------------------
+### Note on prerequisites
Tarballs are order-only prerequsites (after a `|`) because we already
check their contents with the checksums, so their date is irrelevant: a
@@ -30,4 +32,24 @@ higher-level program, then it shouldn't be order-only.
Libraries or Python modules that are used at compile time must be normal
prerequisites (not order-only), because they are used during the building
-of the program. \ No newline at end of file
+of the program.
+
+
+
+
+
+### Copyright information
+This file is part of Maneage (https://maneage.org).
+
+This file is free software: you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the
+Free Software Foundation, either version 3 of the License, or (at your
+option) any later version.
+
+This file is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License along
+with this file. If not, see <http://www.gnu.org/licenses/>. \ No newline at end of file
diff --git a/reproduce/software/make/atlas-multiple.mk b/reproduce/software/make/atlas-multiple.mk
index c98130d..9bd26b1 100755
--- a/reproduce/software/make/atlas-multiple.mk
+++ b/reproduce/software/make/atlas-multiple.mk
@@ -10,15 +10,18 @@
#
# Copyright (C) 2019-2020 Mohammad Akhlaghi <mohammad@akhlaghi.org>
#
-# This Makefile is part of Maneage. Maneage is free software: you can
-# redistribute it and/or modify it under the terms of the GNU General
-# Public License as published by the Free Software Foundation, either
-# version 3 of the License, or (at your option) any later version.
+# 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 Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
#
-# Maneage is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
-# more details. See <http://www.gnu.org/licenses/>.
+# This Makefile is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this Makefile. If not, see <http://www.gnu.org/licenses/>.
ORIGLDFLAGS := $(LDFLAGS)
diff --git a/reproduce/software/make/atlas-single.mk b/reproduce/software/make/atlas-single.mk
index 82eade9..29373e0 100755
--- a/reproduce/software/make/atlas-single.mk
+++ b/reproduce/software/make/atlas-single.mk
@@ -10,15 +10,18 @@
#
# Copyright (C) 2019-2020 Mohammad Akhlaghi <mohammad@akhlaghi.org>
#
-# This Makefile is part of Maneage. Maneage is free software: you can
-# redistribute it and/or modify it under the terms of the GNU General
-# Public License as published by the Free Software Foundation, either
-# version 3 of the License, or (at your option) any later version.
+# 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 Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
#
-# Maneage is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
-# more details. See <http://www.gnu.org/licenses/>.
+# This Makefile is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this Makefile. If not, see <http://www.gnu.org/licenses/>.
ORIGLDFLAGS := $(LDFLAGS)
diff --git a/reproduce/software/make/basic.mk b/reproduce/software/make/basic.mk
index 0bec163..b4745e2 100644
--- a/reproduce/software/make/basic.mk
+++ b/reproduce/software/make/basic.mk
@@ -18,15 +18,18 @@
# Copyright (C) 2018-2020 Mohammad Akhlaghi <mohammad@akhlaghi.org>
# Copyright (C) 2019-2020 Raul Infante-Sainz <infantesainz@gmail.com>
#
-# This Makefile is part of Maneage. Maneage is free software: you can
-# redistribute it and/or modify it under the terms of the GNU General
-# Public License as published by the Free Software Foundation, either
-# version 3 of the License, or (at your option) any later version.
+# 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 Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
#
-# Maneage is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
-# more details. See <http://www.gnu.org/licenses/>.
+# This Makefile is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this Makefile. If not, see <http://www.gnu.org/licenses/>.
# Top level environment
@@ -49,6 +52,7 @@ syspath := $(PATH)
# As we build more programs, we want to use this project's built programs
# and libraries, not the host's.
+.ONESHELL:
export CCACHE_DISABLE := 1
export PATH := $(ibdir):$(PATH)
export PKG_CONFIG_PATH := $(ildir)/pkgconfig
@@ -56,6 +60,17 @@ export PKG_CONFIG_LIBDIR := $(ildir)/pkgconfig
export CPPFLAGS := -I$(idir)/include $(CPPFLAGS)
export LDFLAGS := $(rpath_command) -L$(ildir) $(LDFLAGS)
+# Note that we build GNU Bash here in 'basic.mk'. So we can't assume Bash
+# in this Makefile and use the DASH shell that was before calling this
+# Makefile: http://gondor.apana.org.au/~herbert/dash. Dash is a minimalist
+# POSIX shell, so it doesn't have startup options like '--noprofile
+# --norc'. But from its manual, to load startup files, Dash actually
+# requires that it be called with a '-' before it (for example '-dash'), so
+# it shouldn't be loading any startup files if it was interpretted
+# properly.
+.SHELLFLAGS := -e -c
+export SHELL := $(ibdir)/dash
+
# 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,
@@ -82,7 +97,10 @@ 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/maneage-software
+backupservers := $(shell awk '!/^#/{printf "%s ", $$1}' \
+ reproduce/software/config/servers-backup.conf)
+
+
@@ -124,17 +142,18 @@ tarballs = $(foreach t, bash-$(bash-version).tar.lz \
findutils-$(findutils-version).tar.xz \
gawk-$(gawk-version).tar.lz \
gcc-$(gcc-version).tar.xz \
+ gettext-$(gettext-version).tar.xz \
git-$(git-version).tar.xz \
gmp-$(gmp-version).tar.lz \
grep-$(grep-version).tar.xz \
- gzip-$(gzip-version).tar.gz \
+ gzip-$(gzip-version).tar.lz \
isl-$(isl-version).tar.bz2 \
libbsd-$(libbsd-version).tar.xz \
libiconv-$(libiconv-version).tar.gz \
libtool-$(libtool-version).tar.xz \
- lzip-$(lzip-version).tar.gz \
+ libunistring-$(libunistring-version).tar.xz \
+ libxml2-$(libxml2-version).tar.gz \
m4-$(m4-version).tar.gz \
- make-$(make-version).tar.gz \
metastore-$(metastore-version).tar.gz \
mpfr-$(mpfr-version).tar.xz \
mpc-$(mpc-version).tar.gz \
@@ -161,102 +180,108 @@ $(tarballs): $(tdir)/%: | $(lockdir)
# the first character of the version to be a digit: packages such
# as `foo' and `foo-3' will not be distinguished, but `foo' and
# `foo2' will be distinguished.
- n=$$(echo $* | sed -e's/-[0-9]/ /' -e's/\./ /g' \
- | awk '{print $$1}' ); \
- \
+ @n=$$(echo $* | sed -e's/-[0-9]/ /' -e's/\./ /g' \
+ | awk '{print $$1}' )
+
mergenames=1; \
- if [ $$n = bash ]; then c=$(bash-checksum); w=http://akhlaghi.org/maneage-software; \
- elif [ $$n = binutils ]; then c=$(binutils-checksum); w=http://ftp.gnu.org/gnu/binutils; \
- elif [ $$n = bzip2 ]; then c=$(bzip2-checksum); w=http://akhlaghi.org/maneage-software; \
- elif [ $$n = cert ]; then c=$(cert-checksum); w=http://akhlaghi.org/maneage-software; \
- elif [ $$n = coreutils ]; then c=$(coreutils-checksum); w=http://ftp.gnu.org/gnu/coreutils;\
- elif [ $$n = curl ]; then c=$(curl-checksum); w=https://curl.haxx.se/download; \
- elif [ $$n = diffutils ]; then c=$(diffutils-checksum); w=http://ftp.gnu.org/gnu/diffutils;\
- elif [ $$n = file ]; then c=$(file-checksum); w=ftp://ftp.astron.com/pub/file; \
- elif [ $$n = findutils ]; then c=$(findutils-checksum); w=http://ftp.gnu.org/gnu/findutils; \
- elif [ $$n = gawk ]; then c=$(gawk-checksum); w=http://ftp.gnu.org/gnu/gawk; \
- elif [ $$n = gcc ]; then c=$(gcc-checksum); w=http://ftp.gnu.org/gnu/gcc/gcc-$(gcc-version); \
- elif [ $$n = git ]; then c=$(git-checksum); w=http://mirrors.edge.kernel.org/pub/software/scm/git; \
- elif [ $$n = gmp ]; then c=$(gmp-checksum); w=https://gmplib.org/download/gmp; \
- elif [ $$n = grep ]; then c=$(grep-checksum); w=http://ftp.gnu.org/gnu/grep; \
- elif [ $$n = gzip ]; then c=$(gzip-checksum); w=http://ftp.gnu.org/gnu/gzip; \
- elif [ $$n = isl ]; then c=$(isl-checksum); w=ftp://gcc.gnu.org/pub/gcc/infrastructure; \
- elif [ $$n = libbsd ]; then c=$(libbsd-checksum); w=http://libbsd.freedesktop.org/releases; \
- elif [ $$n = libiconv ]; then c=$(libiconv-checksum); w=https://ftp.gnu.org/pub/gnu/libiconv; \
- elif [ $$n = libtool ]; then c=$(libtool-checksum); w=http://ftp.gnu.org/gnu/libtool; \
- elif [ $$n = lzip ]; then c=$(lzip-checksum); w=http://download.savannah.gnu.org/releases/lzip; \
- elif [ $$n = m4 ]; then \
- mergenames=0; \
- c=$(m4-checksum); \
- w=http://akhlaghi.org/maneage-software/m4-1.4.18-patched.tar.gz; \
- 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/maneage-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;\
- elif [ $$n = ncurses ]; then c=$(ncurses-checksum); w=http://ftp.gnu.org/gnu/ncurses; \
- elif [ $$n = openssl ]; then c=$(openssl-checksum); w=http://www.openssl.org/source; \
- elif [ $$n = patchelf ]; then c=$(patchelf-checksum); w=http://nixos.org/releases/patchelf/patchelf-$(patchelf-version); \
- elif [ $$n = perl ]; then \
- c=$(perl-checksum); \
- v=$$(echo $(perl-version) | sed -e's/\./ /g' | awk '{printf("%d.0", $$1)}'); \
- w=https://www.cpan.org/src/$$v; \
- elif [ $$n = pkg-config ]; then c=$(pkgconfig-checksum); w=http://pkg-config.freedesktop.org/releases; \
- elif [ $$n = readline ]; then c=$(readline-checksum); w=http://ftp.gnu.org/gnu/readline; \
- elif [ $$n = sed ]; then c=$(sed-checksum); w=http://ftp.gnu.org/gnu/sed; \
- elif [ $$n = tar ]; then c=$(tar-checksum); w=http://ftp.gnu.org/gnu/tar; \
- elif [ $$n = texinfo ]; then c=$(texinfo-checksum); w=http://ftp.gnu.org/gnu/texinfo; \
- elif [ $$n = unzip ]; then \
- c=$(unzip-checksum); \
- mergenames=0; v=$$(echo $(unzip-version) | sed -e's/\.//'); \
- w=ftp://ftp.info-zip.org/pub/infozip/src/unzip$$v.tgz; \
- elif [ $$n = wget ]; then c=$(wget-checksum); w=http://ftp.gnu.org/gnu/wget; \
- elif [ $$n = which ]; then c=$(which-checksum); w=http://ftp.gnu.org/gnu/which; \
- elif [ $$n = xz ]; then c=$(xz-checksum); w=http://tukaani.org/xz; \
- elif [ $$n = zip ]; then \
- c=$(zip-checksum); \
- mergenames=0; v=$$(echo $(zip-version) | sed -e's/\.//'); \
- w=ftp://ftp.info-zip.org/pub/infozip/src/zip$$v.tgz; \
- elif [ $$n = zlib ]; then c=$(zlib-checksum); w=http://www.zlib.net; \
- else \
- echo; echo; echo; \
- echo "'$$n' not recognized as a software tarball name to download."; \
- echo; echo; echo; \
- exit 1; \
- fi; \
- \
- \
- if [ -f $(DEPENDENCIES-DIR)/$* ]; then \
- cp $(DEPENDENCIES-DIR)/$* "$@.unchecked"; \
- else \
- if [ $$mergenames = 1 ]; then tarballurl=$$w/"$*"; \
- else tarballurl=$$w; \
- fi; \
- \
- echo "Downloading $$tarballurl"; \
- if [ -f $(ibdir)/wget ]; then \
- downloader="wget --no-use-server-timestamps -O"; \
- else \
- downloader="$(DOWNLOADER)"; \
- fi; \
- \
- touch $(lockdir)/download; \
+ if [ $$n = bash ]; then c=$(bash-checksum); w=http://akhlaghi.org/maneage-software
+ elif [ $$n = binutils ]; then c=$(binutils-checksum); w=http://ftp.gnu.org/gnu/binutils
+ elif [ $$n = bzip2 ]; then c=$(bzip2-checksum); w=http://akhlaghi.org/maneage-software
+ elif [ $$n = cert ]; then c=$(cert-checksum); w=http://akhlaghi.org/maneage-software
+ elif [ $$n = coreutils ]; then c=$(coreutils-checksum); w=http://ftp.gnu.org/gnu/coreutils
+ elif [ $$n = curl ]; then c=$(curl-checksum); w=https://curl.haxx.se/download
+ elif [ $$n = diffutils ]; then c=$(diffutils-checksum); w=http://ftp.gnu.org/gnu/diffutils
+ elif [ $$n = file ]; then c=$(file-checksum); w=ftp://ftp.astron.com/pub/file
+ elif [ $$n = findutils ]; then c=$(findutils-checksum); w=http://ftp.gnu.org/gnu/findutils
+ elif [ $$n = gawk ]; then c=$(gawk-checksum); w=http://ftp.gnu.org/gnu/gawk
+ elif [ $$n = gcc ]; then c=$(gcc-checksum); w=http://ftp.gnu.org/gnu/gcc/gcc-$(gcc-version)
+ elif [ $$n = gettext ]; then c=$(gettext-checksum); w=https://ftp.gnu.org/gnu/gettext
+ elif [ $$n = git ]; then c=$(git-checksum); w=http://mirrors.edge.kernel.org/pub/software/scm/git
+ elif [ $$n = gmp ]; then c=$(gmp-checksum); w=https://gmplib.org/download/gmp
+ elif [ $$n = grep ]; then c=$(grep-checksum); w=http://ftp.gnu.org/gnu/grep
+ elif [ $$n = gzip ]; then c=$(gzip-checksum); w=http://akhlaghi.org/src
+ elif [ $$n = isl ]; then c=$(isl-checksum); w=ftp://gcc.gnu.org/pub/gcc/infrastructure
+ elif [ $$n = libbsd ]; then c=$(libbsd-checksum); w=http://libbsd.freedesktop.org/releases
+ elif [ $$n = libiconv ]; then c=$(libiconv-checksum); w=https://ftp.gnu.org/pub/gnu/libiconv
+ elif [ $$n = libtool ]; then c=$(libtool-checksum); w=http://ftp.gnu.org/gnu/libtool
+ elif [ $$n = libunistring ]; then c=$(libunistring-checksum); w=http://ftp.gnu.org/gnu/libunistring
+ elif [ $$n = libxml2 ]; then c=$(libxml2-checksum); w=ftp://xmlsoft.org/libxml2
+ elif [ $$n = m4 ]; then
+ mergenames=0
+ c=$(m4-checksum)
+ w=http://akhlaghi.org/maneage-software/m4-1.4.18-patched.tar.gz
+ elif [ $$n = metastore ]; then c=$(metastore-checksum); w=http://akhlaghi.org/maneage-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
+ elif [ $$n = ncurses ]; then c=$(ncurses-checksum); w=http://ftp.gnu.org/gnu/ncurses
+ elif [ $$n = openssl ]; then c=$(openssl-checksum); w=http://www.openssl.org/source
+ elif [ $$n = patchelf ]; then c=$(patchelf-checksum); w=http://nixos.org/releases/patchelf/patchelf-$(patchelf-version)
+ elif [ $$n = perl ]; then
+ c=$(perl-checksum)
+ v=$$(echo $(perl-version) | sed -e's/\./ /g' | awk '{printf("%d.0", $$1)}')
+ w=https://www.cpan.org/src/$$v
+ elif [ $$n = pkg-config ]; then c=$(pkgconfig-checksum); w=http://pkg-config.freedesktop.org/releases
+ elif [ $$n = readline ]; then c=$(readline-checksum); w=http://ftp.gnu.org/gnu/readline
+ elif [ $$n = sed ]; then c=$(sed-checksum); w=http://ftp.gnu.org/gnu/sed
+ elif [ $$n = tar ]; then c=$(tar-checksum); w=http://ftp.gnu.org/gnu/tar
+ elif [ $$n = texinfo ]; then c=$(texinfo-checksum); w=http://ftp.gnu.org/gnu/texinfo
+ elif [ $$n = unzip ]; then
+ c=$(unzip-checksum)
+ mergenames=0; v=$$(echo $(unzip-version) | sed -e's/\.//')
+ w=ftp://ftp.info-zip.org/pub/infozip/src/unzip$$v.tgz
+ elif [ $$n = wget ]; then c=$(wget-checksum); w=http://ftp.gnu.org/gnu/wget
+ elif [ $$n = which ]; then c=$(which-checksum); w=http://ftp.gnu.org/gnu/which
+ elif [ $$n = xz ]; then c=$(xz-checksum); w=http://tukaani.org/xz
+ elif [ $$n = zip ]; then
+ c=$(zip-checksum)
+ mergenames=0; v=$$(echo $(zip-version) | sed -e's/\.//')
+ w=ftp://ftp.info-zip.org/pub/infozip/src/zip$$v.tgz
+ elif [ $$n = zlib ]; then c=$(zlib-checksum); w=http://www.zlib.net
+ else
+ echo; echo; echo
+ echo "'$$n' not recognized as a software tarball name to download."
+ echo; echo; echo
+ exit 1
+ fi
+
+ # Download the raw tarball, using an '.unchecked' suffix to specify
+ # that it is not yet fully checked and usable. But first, since the
+ # download may be interrupted in a previous build and an incomplete
+ # '.unchecked' file may remain, we'll remove any possibly existing
+ # uncheked file.
+ rm -f "$@.unchecked"
+ if [ -f $(DEPENDENCIES-DIR)/$* ]; then
+ cp $(DEPENDENCIES-DIR)/$* "$@.unchecked"
+ else
+ if [ $$mergenames = 1 ]; then tarballurl=$$w/"$*"
+ else tarballurl=$$w
+ fi
+
+ echo "Downloading $$tarballurl"
+ if [ -f $(ibdir)/wget ]; then
+ downloader="wget --no-use-server-timestamps -O"
+ else
+ downloader="$(DOWNLOADER)"
+ fi
+
+ touch $(lockdir)/download
$(downloadwrapper) "$$downloader" $(lockdir)/download \
- $$tarballurl "$@.unchecked" "$(backupservers)"; \
- fi; \
- \
- \
- if type sha512sum > /dev/null 2>/dev/null; then \
- checksum=$$(sha512sum "$@.unchecked" | awk '{print $$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;
+ $$tarballurl "$@.unchecked" "$(backupservers)"
+ fi
+
+ # Make sure the file's Checksum is correct.
+ if type sha512sum > /dev/null 2>/dev/null; then
+ checksum=$$(sha512sum "$@.unchecked" | awk '{print $$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
@@ -265,36 +290,39 @@ $(tarballs): $(tdir)/%: | $(lockdir)
# Low-level (not built) programs
# ------------------------------
#
-# For the time being, we aren't building a local C compiler, but we'll use
-# any C compiler that the system already has and just make a symbolic link
-# to it.
+# For the time being, some components of the project on some systems, so we
+# are simply making a symbolic link to the system's files here. We'll do
+# this after building GNU Coreutils to have trustable elements.
#
-# ccache: ccache acts like a wrapper over the C compiler and is made to
-# avoid/speed-up compiling of identical files in a system (it is commonly
-# used on large servers). It actually makes `gcc' or `g++' a symbolic link
-# to itself so it can control them internally. So, for our purpose here, it
-# is very annoying and can cause many complications. We thus remove any
-# part of PATH of that has `ccache' in it before making symbolic links to
-# the programs we are not building ourselves.
+# About ccache: ccache acts like a wrapper over the C compiler and is made
+# to avoid/speed-up compiling of identical files in a system (it is
+# commonly used on large servers). It actually makes `gcc' or `g++' a
+# symbolic link to itself so it can control them internally. So, for our
+# purpose here, it is very annoying and can cause many complications. We
+# thus remove any part of PATH of that has `ccache' in it before making
+# symbolic links to the programs we are not building ourselves.
makelink = origpath="$$PATH"; \
- export PATH=$$(echo $(syspath) \
- | tr : '\n' \
- | grep -v ccache \
- | tr '\n' :); \
- a=$$(which $(1) 2> /dev/null); \
- if [ -e $(ibdir)/$(1) ]; then rm $(ibdir)/$(1); fi; \
- if [ x$$a = x ]; then \
- if [ "x$(strip $(2))" = xmandatory ]; then \
- echo "'$(1)' is necessary for higher-level tools."; \
- echo "Please install it for the configuration to continue."; \
- exit 1; \
- fi; \
- else \
- ln -s $$a $(ibdir)/$(1); \
- fi; \
- export PATH="$$origpath"
+ export PATH=$$(echo $(syspath) \
+ | tr : '\n' \
+ | grep -v ccache \
+ | tr '\n' :); \
+ if type $(1) > /dev/null 2> /dev/null; then \
+ if [ x$(3) = x ]; then \
+ ln -sf $$(which $(1)) $(ibdir)/$(1); \
+ else \
+ ln -sf $$(which $(1)) $(ibdir)/$(3); \
+ fi; \
+ else \
+ if [ "x$(strip $(2))" = xmandatory ]; then \
+ echo "'$(1)' is necessary for higher-level tools."; \
+ echo "Please install it for the configuration to continue."; \
+ exit 1; \
+ fi; \
+ fi; \
+ export PATH="$$origpath"
+
$(ibdir) $(ildir):; mkdir $@
-$(ibidir)/low-level-links: | $(ibdir) $(ildir)
+$(ibidir)/low-level-links: $(ibidir)/coreutils | $(ibdir) $(ildir)
# Not-installed (but necessary in some cases) compilers.
# Clang is necessary for CMake.
@@ -302,6 +330,7 @@ $(ibidir)/low-level-links: | $(ibdir) $(ildir)
$(call makelink,clang++)
# Mac OS specific
+ $(call makelink,mig)
$(call makelink,sysctl)
$(call makelink,sw_vers)
$(call makelink,dsymutil)
@@ -312,17 +341,14 @@ $(ibidir)/low-level-links: | $(ibdir) $(ildir)
# executable name `glibtool'.
$(call makelink,libtool)
- # GNU Gettext (translate messages)
- $(call makelink,msgfmt)
-
# Necessary libraries:
# Libdl (for dynamic loading libraries at runtime)
# POSIX Threads library for multi-threaded programs.
- for l in dl pthread; do \
- rm -f $(ildir)/lib$$l*; \
- if [ -f /usr/lib/lib$$l.a ]; then \
- ln -s /usr/lib/lib$$l.* $(ildir)/; \
- fi; \
+ for l in dl pthread; do
+ rm -f $(ildir)/lib$$l*;
+ if [ -f /usr/lib/lib$$l.a ]; then
+ ln -s /usr/lib/lib$$l.* $(ildir)/
+ fi
done
# We want this to be empty (so it doesn't interefere with the other
@@ -342,59 +368,54 @@ $(ibidir)/low-level-links: | $(ibdir) $(ildir)
# ------------------------------------------
#
# The first set of programs to be built are those that we need to unpack
-# the source code tarballs of each program. First, we'll build the
-# necessary programs, then we'll build GNU Tar.
-$(ibidir)/gzip: | $(tdir)/gzip-$(gzip-version).tar.gz
+# the source code tarballs of each program. We have already installed Lzip
+# before calling 'basic.mk', so it is present and working. Hence we first
+# build the Lzipped tarball of Gzip, then use our own Gzip to unpack the
+# tarballs of the other compression programs. Once all the compression
+# programs/libraries are complete, we build our own GNU Tar and continue
+# with other software.
+$(ibidir)/gzip: $(tdir)/gzip-$(gzip-version).tar.lz
$(call gbuild, gzip-$(gzip-version), static, , V=1) \
&& echo "GNU Gzip $(gzip-version)" > $@
-# GNU Lzip: For a static build, the `-static' flag should be given to
-# LDFLAGS on the command-line (not from the environment).
-ifeq ($(static_build),yes)
-lzipconf="LDFLAGS=-static"
-else
-lzipconf=
-endif
-$(ibidir)/lzip: | $(tdir)/lzip-$(lzip-version).tar.gz
- $(call gbuild, lzip-$(lzip-version), , $(lzipconf)) \
- && echo "Lzip $(lzip-version)" > $@
-
-$(ibidir)/xz: | $(tdir)/xz-$(xz-version).tar.gz
+$(ibidir)/xz: $(ibidir)/gzip \
+ $(tdir)/xz-$(xz-version).tar.gz
$(call gbuild, xz-$(xz-version), static) \
&& echo "XZ Utils $(xz-version)" > $@
-$(ibidir)/bzip2: | $(tdir)/bzip2-$(bzip2-version).tar.gz
+$(ibidir)/bzip2: $(ibidir)/gzip \
+ $(tdir)/bzip2-$(bzip2-version).tar.gz
# Bzip2 doesn't have a `./configure' script, and its Makefile
# doesn't build a shared library. So we can't use the `gbuild'
# function here and we need to take some extra steps (inspired
- # from the "Linux from Scratch" guide for Bzip2):
+ # from the GNU/Linux from Scratch (LFS) guide for Bzip2):
# 1) The `sed' call is for relative installed symbolic links.
# 2) The special Makefile-libbz2_so builds shared libraries.
#
# NOTE: the major version number appears in the final symbolic
# link.
- tdir=bzip2-$(bzip2-version); \
- if [ $(static_build) = yes ]; then \
- makecommand="make LDFLAGS=-static"; \
- makeshared="echo no-shared"; \
- else \
- makecommand="make"; \
- if [ x$(on_mac_os) = xyes ]; then \
- makeshared="echo no-shared"; \
- else \
- makeshared="make -f Makefile-libbz2_so"; \
- fi; \
- fi; \
+ tdir=bzip2-$(bzip2-version)
+ if [ $(static_build) = yes ]; then
+ makecommand="make LDFLAGS=-static"
+ makeshared="echo no-shared"
+ else
+ makecommand="make"
+ if [ x$(on_mac_os) = xyes ]; then
+ makeshared="echo no-shared"
+ else
+ makeshared="make -f Makefile-libbz2_so"
+ fi
+ fi
cd $(ddir) && rm -rf $$tdir \
- && tar xf $(word 1,$(filter $(tdir)/%,$|)) \
+ && tar xf $(word 1,$(filter $(tdir)/%,$^)) \
&& cd $$tdir \
&& sed -e 's@\(ln -s -f \)$$(PREFIX)/bin/@\1@' Makefile \
> Makefile.sed \
&& mv Makefile.sed Makefile \
- && $$makeshared \
+ && $$makeshared CC=cc \
&& cp -a libbz2* $(ildir)/ \
&& make clean \
- && $$makecommand \
+ && $$makecommand CC=cc \
&& make install PREFIX=$(idir) \
&& cd .. \
&& rm -rf $$tdir \
@@ -402,21 +423,23 @@ $(ibidir)/bzip2: | $(tdir)/bzip2-$(bzip2-version).tar.gz
&& ln -fs libbz2.so.1.0 libbz2.so \
&& echo "Bzip2 $(bzip2-version)" > $@
-$(ibidir)/unzip: | $(tdir)/unzip-$(unzip-version).tar.gz
- v=$$(echo $(unzip-version) | sed -e's/\.//'); \
+$(ibidir)/unzip: $(ibidir)/gzip \
+ $(tdir)/unzip-$(unzip-version).tar.gz
+ v=$$(echo $(unzip-version) | sed -e's/\.//')
$(call gbuild, unzip$$v, static,, \
- -f unix/Makefile generic_gcc \
+ -f unix/Makefile generic \
CFLAGS="-DBIG_MEM -DMMAP",,pwd, \
- -f unix/Makefile \
+ -f unix/Makefile generic \
BINDIR=$(ibdir) MANDIR=$(idir)/man/man1 ) \
&& echo "Unzip $(unzip-version)" > $@
-$(ibidir)/zip: | $(tdir)/zip-$(zip-version).tar.gz
- v=$$(echo $(zip-version) | sed -e's/\.//'); \
+$(ibidir)/zip: $(ibidir)/gzip \
+ $(tdir)/zip-$(zip-version).tar.gz
+ v=$$(echo $(zip-version) | sed -e's/\.//')
$(call gbuild, zip$$v, static,, \
- -f unix/Makefile generic_gcc \
+ -f unix/Makefile generic \
CFLAGS="-DBIG_MEM -DMMAP",,pwd, \
- -f unix/Makefile \
+ -f unix/Makefile generic \
BINDIR=$(ibdir) MANDIR=$(idir)/man/man1 ) \
&& echo "Zip $(zip-version)" > $@
@@ -425,7 +448,8 @@ $(ibidir)/zip: | $(tdir)/zip-$(zip-version).tar.gz
#
# Note for a static-only build: Zlib's `./configure' doesn't use Autoconf's
# configure script, it just accepts a direct `--static' option.
-$(ibidir)/zlib: | $(tdir)/zlib-$(zlib-version).tar.gz
+$(ibidir)/zlib: $(ibidir)/gzip \
+ $(tdir)/zlib-$(zlib-version).tar.gz
$(call gbuild, zlib-$(zlib-version)) \
&& echo "Zlib $(zlib-version)" > $@
@@ -435,13 +459,12 @@ $(ibidir)/zlib: | $(tdir)/zlib-$(zlib-version).tar.gz
# Tar to be the last compression-related software (the first-set of
# software to be built).
$(ibidir)/tar: $(ibidir)/xz \
- $(ibidir)/zip \
- $(ibidir)/gzip \
- $(ibidir)/lzip \
+ $(ibidir)/zip \
+ $(ibidir)/gzip \
$(ibidir)/zlib \
$(ibidir)/bzip2 \
- $(ibidir)/unzip \
- | $(tdir)/tar-$(tar-version).tar.gz
+ $(ibidir)/unzip \
+ $(tdir)/tar-$(tar-version).tar.gz
# Since all later programs depend on Tar, the configuration will be
# stuck here, only making Tar. So its more efficient to built it on
# multiple threads (when the user's Make doesn't pass down the
@@ -469,14 +492,8 @@ $(ibidir)/tar: $(ibidir)/xz \
# function (for tilde expansion). The first can be disabled with
# `--disable-load', but unfortunately I don't know any way to fix the
# second. So, we'll have to build it dynamically for now.
-$(ibidir)/make: | $(ibidir)/tar \
- $(tdir)/make-$(make-version).tar.gz
- # See Tar's comments for the `-j' option.
- $(call gbuild, make-$(make-version), , , -j$(numthreads)) \
- && echo "GNU Make $(make-version)" > $@
-
-$(ibidir)/ncurses: | $(ibidir)/make \
- $(tdir)/ncurses-$(ncurses-version).tar.gz
+$(ibidir)/ncurses: $(ibidir)/tar \
+ $(tdir)/ncurses-$(ncurses-version).tar.gz
# Delete the library that will be installed (so we can make sure
# the build process completed afterwards and reset the links).
@@ -507,7 +524,7 @@ $(ibidir)/ncurses: | $(ibidir)/make \
# explicitly mentioning its name correctly (as a value to `-l' at
# link time in their configure scripts).
#
- # This part is taken from the Arch Linux build script[1], then
+ # This part is taken from the Arch GNU/Linux build script[1], then
# extended to Mac thanks to Homebrew's script [2].
#
# [1] https://git.archlinux.org/svntogit/packages.git/tree/trunk/PKGBUILD?h=packages/ncurses
@@ -533,43 +550,43 @@ $(ibidir)/ncurses: | $(ibidir)/make \
#
# 5. A link is made to also be able to include files from the
# `ncurses' headers.
- if [ x$(on_mac_os) = xyes ]; then so="dylib"; else so="so"; fi; \
- if [ -f $(ildir)/libncursesw.$$so ]; then \
- \
+ if [ x$(on_mac_os) = xyes ]; then so="dylib"; else so="so"; fi
+ if [ -f $(ildir)/libncursesw.$$so ]; then
+
sov=$$(ls -l $(ildir)/libncursesw* \
| awk '/^-/{print $$NF}' \
- | sed -e's|'$(ildir)/libncursesw.'||'); \
- \
- cd "$(ildir)"; \
- for lib in ncurses ncurses++ form panel menu; do \
- ln -fs lib$$lib"w".$$sov lib$$lib.$$so; \
- ln -fs $(ildir)/pkgconfig/"$$lib"w.pc pkgconfig/$$lib.pc; \
- done; \
- for lib in tic tinfo; do \
- ln -fs libncursesw.$$sov lib$$lib.$$so; \
- ln -fs libncursesw.$$sov lib$$lib.$$sov; \
- ln -fs $(ildir)/pkgconfig/ncursesw.pc pkgconfig/$$lib.pc; \
- done; \
- ln -fs libncursesw.$$sov libcurses.$$so; \
- ln -fs libncursesw.$$sov libcursesw.$$sov; \
- ln -fs $(ildir)/pkgconfig/ncursesw.pc pkgconfig/curses.pc; \
- ln -fs $(ildir)/pkgconfig/ncursesw.pc pkgconfig/cursesw.pc; \
- \
- ln -fs $(idir)/include/ncursesw $(idir)/include/ncurses; \
- echo "GNU NCURSES $(ncurses-version)" > $@; \
- else \
- exit 1; \
+ | sed -e's|'$(ildir)/libncursesw.'||')
+
+ cd "$(ildir)"
+ for lib in ncurses ncurses++ form panel menu; do
+ ln -fs lib$$lib"w".$$sov lib$$lib.$$so
+ ln -fs $(ildir)/pkgconfig/"$$lib"w.pc pkgconfig/$$lib.pc
+ done
+ for lib in tic tinfo; do
+ ln -fs libncursesw.$$sov lib$$lib.$$so
+ ln -fs libncursesw.$$sov lib$$lib.$$sov
+ ln -fs $(ildir)/pkgconfig/ncursesw.pc pkgconfig/$$lib.pc
+ done
+ ln -fs libncursesw.$$sov libcurses.$$so
+ ln -fs libncursesw.$$sov libcursesw.$$sov
+ ln -fs $(ildir)/pkgconfig/ncursesw.pc pkgconfig/curses.pc
+ ln -fs $(ildir)/pkgconfig/ncursesw.pc pkgconfig/cursesw.pc
+
+ ln -fs $(idir)/include/ncursesw $(idir)/include/ncurses
+ echo "GNU NCURSES $(ncurses-version)" > $@
+ else
+ exit 1
fi
$(ibidir)/readline: $(ibidir)/ncurses \
- | $(tdir)/readline-$(readline-version).tar.gz
+ $(tdir)/readline-$(readline-version).tar.gz
$(call gbuild, readline-$(readline-version), static, \
--with-curses --disable-install-examples, \
SHLIB_LIBS="-lncursesw" -j$(numthreads)) \
&& echo "GNU Readline $(readline-version)" > $@
-$(ibidir)/patchelf: | $(ibidir)/make \
- $(tdir)/patchelf-$(patchelf-version).tar.gz
+$(ibidir)/patchelf: $(ibidir)/tar \
+ $(tdir)/patchelf-$(patchelf-version).tar.gz
$(call gbuild, patchelf-$(patchelf-version)) \
&& echo "PatchELF $(patchelf-version)" > $@
@@ -609,43 +626,38 @@ needpatchelf =
else
needpatchelf = $(ibidir)/patchelf
endif
-$(ibidir)/bash: $(ibidir)/readline \
- | $(needpatchelf) \
- $(tdir)/bash-$(bash-version).tar.lz
+$(ibidir)/bash: $(needpatchelf) \
+ $(ibidir)/gettext \
+ $(ibidir)/readline \
+ $(tdir)/bash-$(bash-version).tar.lz
- # Delete the (possibly) existing Bash executable.
+ # Delete the (possibly) existing Bash executable in the project,
+ # let it use the default shell of the host.
rm -f $(ibdir)/bash
- # Build Bash. Note that we aren't building Bash with
- # `--with-installed-readline'. This is because (as described above)
- # Bash needs the `LD_LIBRARY_PATH' set properly before it is
- # run. Within a recipe, things are fine (we do set
- # `LD_LIBRARY_PATH'). However, Make will also call the shell
- # outside of the recipe (for example in the `foreach' Make
- # function!). In such cases, our new `LD_LIBRARY_PATH' is not set.
- # This will cause a crash in the shell and thus the Makefile,
- # complaining that it can't find `libreadline'. Therefore, even
- # though we build readline below, we won't link Bash with an
- # external readline.
- #
# Bash has many `--enable' features which are already enabled by
# default. As described in the manual, they are mainly useful when
# you disable them all with `--enable-minimal-config' and enable a
# subset using the `--enable' options.
- if [ "x$(static_build)" = xyes ]; then stopt="--enable-static-link";\
- else stopt=""; \
- fi; \
- $(call gbuild, bash-$(bash-version),, \
- --with-installed-readline=$(ildir) $$stopt, \
- -j$(numthreads))
+ if [ "x$(static_build)" = xyes ]; then stopt="--enable-static-link"
+ else stopt=""
+ fi;
+ export CFLAGS="$$CFLAGS \
+ -DDEFAULT_PATH_VALUE='\"$(ibdir)\"' \
+ -DSTANDARD_UTILS_PATH='\"$(ibdir)\"' \
+ -DSYS_BASHRC='\"$(BASH_ENV)\"' "
+ $(call gbuild, bash-$(bash-version),, $$stopt \
+ --with-installed-readline=$(ildir) \
+ --with-curses=yes, \
+ -j$(numthreads))
# Atleast on GNU/Linux systems, Bash doesn't include RPATH by
# default. So, we have to manually include it, currently we are
# only doing this on GNU/Linux systems (using the `patchelf'
# program).
- if [ "x$(needpatchelf)" != x ]; then \
- if [ -f $(ibdir)/bash ]; then \
- $(ibdir)/patchelf --set-rpath $(ildir) $(ibdir)/bash; fi \
+ if [ "x$(needpatchelf)" != x ]; then
+ if [ -f $(ibdir)/bash ]; then
+ $(ibdir)/patchelf --set-rpath $(ildir) $(ibdir)/bash; fi
fi
# To be generic, some systems use the `sh' command to call the
@@ -656,10 +668,10 @@ $(ibidir)/bash: $(ibidir)/readline \
# Just to be sure that the installation step above went well,
# before making the link, we'll see if the file actually exists
# there.
- if [ -f $(ibdir)/bash ]; then \
- ln -fs $(ibdir)/bash $(ibdir)/sh; \
- echo "GNU Bash $(bash-version)" > $@; \
- else \
+ if [ -f $(ibdir)/bash ]; then
+ ln -fs $(ibdir)/bash $(ibdir)/sh
+ echo "GNU Bash $(bash-version)" > $@
+ else
echo "GNU Bash not built!"; exit 1; fi
@@ -676,25 +688,20 @@ perl-conflddlflags =
else
perl-conflddlflags = -Dlddlflags="-shared $$LDFLAGS"
endif
-$(ibidir)/perl: | $(ibidir)/bash \
- $(tdir)/perl-$(perl-version).tar.gz
+$(ibidir)/perl: $(ibidir)/tar \
+ $(tdir)/perl-$(perl-version).tar.gz
major_version=$$(echo $(perl-version) \
| sed -e's/\./ /g' \
- | awk '{printf("%d", $$1)}'); \
+ | awk '{printf("%d", $$1)}')
base_version=$$(echo $(perl-version) \
| sed -e's/\./ /g' \
- | awk '{printf("%d.%d", $$1, $$2)}'); \
+ | awk '{printf("%d.%d", $$1, $$2)}')
cd $(ddir) \
&& rm -rf perl-$(perl-version) \
- && if ! tar xf $(word 1,$(filter $(tdir)/%,$|)); then \
+ && 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 \
@@ -715,8 +722,8 @@ $(ibidir)/perl: | $(ibidir)/bash \
-Dcccdlflags='-fPIC' \
$(perl-conflddlflags) \
-Dldflags="$$LDFLAGS" \
- && make SHELL=$(ibdir)/bash -j$(numthreads) \
- && make SHELL=$(ibdir)/bash install \
+ && make -j$(numthreads) \
+ && make install \
&& cd .. \
&& rm -rf perl-$(perl-version) \
&& cd $$topdir \
@@ -747,12 +754,13 @@ $(ibidir)/perl: | $(ibidir)/bash \
# an error).
#
# Coreutils uses Perl to create man pages!
-$(ibidir)/coreutils: $(ibidir)/openssl \
- | $(ibidir)/perl \
- $(tdir)/coreutils-$(coreutils-version).tar.xz
+$(ibidir)/coreutils: $(ibidir)/bash \
+ $(ibidir)/perl \
+ $(ibidir)/openssl \
+ $(tdir)/coreutils-$(coreutils-version).tar.xz
cd $(ddir) \
&& rm -rf coreutils-$(coreutils-version) \
- && if ! tar xf $(word 1,$(filter $(tdir)/%,$|)); then \
+ && if ! tar xf $(word 1,$(filter $(tdir)/%,$^)); then \
echo; echo "Tar error"; exit 1; \
fi \
&& cd coreutils-$(coreutils-version) \
@@ -794,10 +802,13 @@ $(ibidir)/coreutils: $(ibidir)/openssl \
#openssl-static = no-dso no-dynamic-engine no-shared
#endif
$(idir)/etc:; mkdir $@
-$(ibidir)/openssl: $(tdir)/cert.pem \
- | $(idir)/etc \
- $(ibidir)/make \
- $(tdir)/openssl-$(openssl-version).tar.gz
+# Note: cert.pm has to be AFTER the tarball, otherwise the build script
+# will try to unpack cert.pm and crash (it unpacks the first dependency
+# under `tdir').
+$(ibidir)/openssl: $(ibidir)/tar \
+ $(tdir)/openssl-$(openssl-version).tar.gz \
+ $(tdir)/cert.pem \
+ | $(idir)/etc
# According to OpenSSL's Wiki (link bellow), it can't automatically
# detect Mac OS's structure. It will need some help. So we'll use
# the `on_mac_os' Make variable that we defined in the configure
@@ -853,8 +864,8 @@ $(ibidir)/openssl: $(tdir)/cert.pem \
# them. Note that if it does link with them, the configuration will crash
# when the library is updated/changed by the host, and the whole purpose of
# this project is avoid dependency on the host as much as possible.
-$(ibidir)/curl: | $(ibidir)/coreutils \
- $(tdir)/curl-$(curl-version).tar.gz
+$(ibidir)/curl: $(ibidir)/coreutils \
+ $(tdir)/curl-$(curl-version).tar.gz
$(call gbuild, curl-$(curl-version), , \
LIBS="-pthread" \
--with-zlib=$(ildir) \
@@ -892,8 +903,8 @@ $(ibidir)/curl: | $(ibidir)/coreutils \
# host system (especially a crash when these libraries are updated on the
# host), they are disabled here.
$(ibidir)/wget: $(ibidir)/libiconv \
- | $(ibidir)/coreutils \
- $(tdir)/wget-$(wget-version).tar.lz
+ $(ibidir)/coreutils \
+ $(tdir)/wget-$(wget-version).tar.lz
# We need to explicitly disable `libiconv', because of the
# `pkg-config' and `libiconv' problem.
libs="-pthread"; \
@@ -926,25 +937,25 @@ $(ibidir)/wget: $(ibidir)/libiconv \
# process of the higher-level programs and libraries. Note that during the
# building of those higher-level programs (after this Makefile finishes),
# there is no access to the system's PATH.
-$(ibidir)/diffutils: | $(ibidir)/coreutils \
- $(tdir)/diffutils-$(diffutils-version).tar.xz
+$(ibidir)/diffutils: $(ibidir)/coreutils \
+ $(tdir)/diffutils-$(diffutils-version).tar.xz
$(call gbuild, diffutils-$(diffutils-version), static,,V=1) \
&& echo "GNU Diffutils $(diffutils-version)" > $@
-$(ibidir)/file: | $(ibidir)/coreutils \
- $(tdir)/file-$(file-version).tar.gz
+$(ibidir)/file: $(ibidir)/coreutils \
+ $(tdir)/file-$(file-version).tar.gz
$(call gbuild, file-$(file-version), static,,V=1) \
&& echo "File $(file-version)" > $@
-$(ibidir)/findutils: | $(ibidir)/coreutils \
- $(tdir)/findutils-$(findutils-version).tar.xz
+$(ibidir)/findutils: $(ibidir)/coreutils \
+ $(tdir)/findutils-$(findutils-version).tar.xz
$(call gbuild, findutils-$(findutils-version), static,,V=1) \
&& echo "GNU Findutils $(findutils-version)" > $@
$(ibidir)/gawk: $(ibidir)/gmp \
$(ibidir)/mpfr \
- | $(ibidir)/coreutils \
- $(tdir)/gawk-$(gawk-version).tar.lz
+ $(ibidir)/coreutils \
+ $(tdir)/gawk-$(gawk-version).tar.lz
# AWK doesn't include RPATH by default, so we'll have to manually
# include it using the `patchelf' program (which was a dependency
# of Bash). Just note that AWK produces two executables (for
@@ -963,14 +974,41 @@ $(ibidir)/gawk: $(ibidir)/gmp \
fi \
&& echo "GNU AWK $(gawk-version)" > $@
-$(ibidir)/libiconv: | $(ibidir)/pkg-config \
- $(tdir)/libiconv-$(libiconv-version).tar.gz
+$(ibidir)/libiconv: $(ibidir)/pkg-config \
+ $(tdir)/libiconv-$(libiconv-version).tar.gz
$(call gbuild, libiconv-$(libiconv-version), static) \
&& echo "GNU libiconv $(libiconv-version)" > $@
+$(ibidir)/libunistring: $(ibidir)/libiconv \
+ $(tdir)/libunistring-$(libunistring-version).tar.xz
+ $(call gbuild, libunistring-$(libunistring-version), static,, \
+ -j$(numthreads)) \
+ && echo "GNU libunistring $(libunistring-version)" > $@
+
+$(ibidir)/libxml2: $(ibidir)/tar \
+ $(tdir)/libxml2-$(libxml2-version).tar.gz
+ # The libxml2 tarball also contains Python bindings which are built
+ # and installed to a system directory by default. If you don't need
+ # the Python bindings, the easiest solution is to compile without
+ # Python support: `./configure --without-python'. If you really need
+ # the Python bindings, use `--with-python-install-dir=DIR' instead.
+ $(call gbuild, libxml2-$(libxml2-version), static, \
+ --without-python) \
+ && echo "Libxml2 $(libxml2-version)" > $@
+
+$(ibidir)/gettext: $(ibidir)/m4 \
+ $(ibidir)/libxml2 \
+ $(ibidir)/ncurses \
+ $(ibidir)/libiconv \
+ $(ibidir)/libunistring \
+ $(tdir)/gettext-$(gettext-version).tar.xz
+ $(call gbuild, gettext-$(gettext-version), static, V=1) \
+ && echo "GNU gettext $(gettext-version)" > $@
+
$(ibidir)/git: $(ibidir)/curl \
+ $(ibidir)/gettext \
$(ibidir)/libiconv \
- | $(tdir)/git-$(git-version).tar.xz
+ $(tdir)/git-$(git-version).tar.xz
if [ x$(on_mac_os) = xyes ]; then \
export LDFLAGS="$$LDFLAGS -lcharset"; \
fi; \
@@ -979,29 +1017,29 @@ $(ibidir)/git: $(ibidir)/curl \
--with-iconv=$(idir), V=1) \
&& echo "Git $(git-version)" > $@
-$(ibidir)/gmp: | $(ibidir)/m4 \
- $(ibidir)/coreutils \
- $(tdir)/gmp-$(gmp-version).tar.lz
+$(ibidir)/gmp: $(ibidir)/m4 \
+ $(ibidir)/coreutils \
+ $(tdir)/gmp-$(gmp-version).tar.lz
$(call gbuild, gmp-$(gmp-version), static, \
--enable-cxx --enable-fat, ,make check) \
&& echo "GNU Multiple Precision Arithmetic Library $(gmp-version)" > $@
# On Mac OS, libtool does different things, so to avoid confusion, we'll
# prefix GNU's libtool executables with `glibtool'.
-$(ibidir)/glibtool: | $(ibidir)/m4 \
- $(tdir)/libtool-$(libtool-version).tar.xz
+$(ibidir)/glibtool: $(ibidir)/m4 \
+ $(tdir)/libtool-$(libtool-version).tar.xz
$(call gbuild, libtool-$(libtool-version), static, \
--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
+$(ibidir)/grep: $(ibidir)/coreutils \
+ $(tdir)/grep-$(grep-version).tar.xz
$(call gbuild, grep-$(grep-version), static,,V=1) \
&& echo "GNU Grep $(grep-version)" > $@
-$(ibidir)/libbsd: | $(ibidir)/coreutils \
- $(tdir)/libbsd-$(libbsd-version).tar.xz
+$(ibidir)/libbsd: $(ibidir)/coreutils \
+ $(tdir)/libbsd-$(libbsd-version).tar.xz
$(call gbuild, libbsd-$(libbsd-version), static,,V=1) \
&& echo "Libbsd $(libbsd-version)" > $@
@@ -1010,27 +1048,24 @@ $(ibidir)/libbsd: | $(ibidir)/coreutils \
#
# [1] https://raw.githubusercontent.com/macports/macports-ports/edf0ee1e2cf/devel/m4/files/secure_snprintf.patch
# [2] https://github.com/Homebrew/homebrew-core/blob/master/Formula/m4.rb
-$(ibidir)/m4: | $(ibidir)/sed \
- $(ibidir)/texinfo \
- $(ibidir)/coreutils \
- $(tdir)/m4-$(m4-version).tar.gz
+$(ibidir)/m4: $(ibidir)/texinfo \
+ $(tdir)/m4-$(m4-version).tar.gz
cd $(ddir); \
unpackdir=m4-$(m4-version); \
rm -rf $$unpackdir \
- && if ! tar xf $(word 1,$(filter $(tdir)/%,$|)); then \
+ && if ! tar xf $(word 1,$(filter $(tdir)/%,$^)); then \
echo; echo "Tar error"; exit 1; \
fi \
&& cd $$unpackdir \
&& if [ x$(on_mac_os) = xyes ]; then \
- sed -i -e's|if !(((__GLIBC__ > 2|if !defined(__APPLE__) \&\& !(((__GLIBC__ > 2|' lib/vasnprintf.c; \
+ sed 's|if !(((__GLIBC__ > 2|if !defined(__APPLE__) \&\& !(((__GLIBC__ > 2|' \
+ lib/vasnprintf.c > lib/vasnprintf_edited.c; \
+ mv lib/vasnprintf_edited.c lib/vasnprintf.c; \
fi \
- && sed -i -e's|\#\! /bin/sh|\#\! $(ibdir)/bash|' \
- -e's|\#\!/bin/sh|\#\! $(ibdir)/bash|' \
- configure \
- && ./configure --prefix=$(idir) SHELL=$(ibdir)/bash \
- LDFLAGS="$(LDFLAGS)" CPPFLAGS="$(CPPFLAGS)" \
- && make SHELL=$(ibdir)/bash V=1 -j$(numthreads) \
- && make SHELL=$(ibdir)/bash V=1 install \
+ && ./configure --prefix=$(idir) LDFLAGS="$(LDFLAGS)" \
+ CPPFLAGS="$(CPPFLAGS)" \
+ && make V=1 -j$(numthreads) \
+ && make V=1 install \
&& cd .. \
&& rm -rf $$unpackdir \
&& echo "GNU M4 $(m4-version)" > $@
@@ -1058,11 +1093,11 @@ else
needlibbsd = $(ibidir)/libbsd
endif
$(ibidir)/metastore: $(needlibbsd) \
- | $(ibidir)/sed \
- $(ibidir)/git \
- $(ibidir)/gawk \
- $(ibidir)/coreutils \
- $(tdir)/metastore-$(metastore-version).tar.gz
+ $(ibidir)/sed \
+ $(ibidir)/git \
+ $(ibidir)/gawk \
+ $(ibidir)/coreutils \
+ $(tdir)/metastore-$(metastore-version).tar.gz
# Metastore doesn't have any `./configure' script. So we'll just
# call `pwd' as a place-holder for the `./configure' command.
@@ -1121,12 +1156,12 @@ $(ibidir)/metastore: $(needlibbsd) \
$(ibidir)/mpfr: $(ibidir)/gmp \
- | $(tdir)/mpfr-$(mpfr-version).tar.xz
+ $(tdir)/mpfr-$(mpfr-version).tar.xz
$(call gbuild, mpfr-$(mpfr-version), static, , , make check) \
&& echo "GNU Multiple Precision Floating-Point Reliably $(mpfr-version)" > $@
-$(ibidir)/pkg-config: | $(ibidir)/coreutils \
- $(tdir)/pkg-config-$(pkgconfig-version).tar.gz
+$(ibidir)/pkg-config: $(ibidir)/tar \
+ $(tdir)/pkg-config-$(pkgconfig-version).tar.gz
# An existing `libiconv' can cause a conflict with `pkg-config',
# this is why `libiconv' depends on `pkg-config'. On a clean build,
# `pkg-config' is built first. But when we don't have a clean build
@@ -1147,13 +1182,13 @@ $(ibidir)/pkg-config: | $(ibidir)/coreutils \
--with-pc-path=$(ildir)/pkgconfig, V=1) \
&& echo "pkg-config $(pkgconfig-version)" > $@
-$(ibidir)/sed: | $(ibidir)/coreutils \
- $(tdir)/sed-$(sed-version).tar.xz
+$(ibidir)/sed: $(ibidir)/coreutils \
+ $(tdir)/sed-$(sed-version).tar.xz
$(call gbuild, sed-$(sed-version), static,,V=1) \
&& echo "GNU Sed $(sed-version)" > $@
-$(ibidir)/texinfo: | $(ibidir)/perl \
- $(tdir)/texinfo-$(texinfo-version).tar.xz
+$(ibidir)/texinfo: $(ibidir)/perl \
+ $(tdir)/texinfo-$(texinfo-version).tar.xz
$(call gbuild, texinfo-$(texinfo-version), static) \
&& if [ "x$(needpatchelf)" != x ]; then \
$(ibdir)/patchelf --set-rpath $(ildir) $(ibdir)/info; \
@@ -1161,8 +1196,8 @@ $(ibidir)/texinfo: | $(ibidir)/perl \
fi \
&& echo "GNU Texinfo $(texinfo-version)" > $@
-$(ibidir)/which: | $(ibidir)/coreutils \
- $(tdir)/which-$(which-version).tar.gz
+$(ibidir)/which: $(ibidir)/coreutils \
+ $(tdir)/which-$(which-version).tar.gz
$(call gbuild, which-$(which-version), static) \
&& echo "GNU Which $(which-version)" > $@
@@ -1179,12 +1214,12 @@ $(ibidir)/which: | $(ibidir)/coreutils \
# -------------------------
$(ibidir)/isl: $(ibidir)/gmp \
- | $(tdir)/isl-$(isl-version).tar.bz2
+ $(tdir)/isl-$(isl-version).tar.bz2
$(call gbuild, isl-$(isl-version), static, , V=1) \
&& echo "GNU Integer Set Library $(isl-version)" > $@
$(ibidir)/mpc: $(ibidir)/mpfr \
- | $(tdir)/mpc-$(mpc-version).tar.gz
+ $(tdir)/mpc-$(mpc-version).tar.gz
$(call gbuild, mpc-$(mpc-version), static, , , make check) \
&& echo "GNU Multiple Precision Complex library" > $@
@@ -1218,19 +1253,19 @@ endif
# 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 \
- $(ibidir)/file \
- $(ibidir)/gawk \
- $(ibidir)/which \
- $(ibidir)/glibtool \
- $(binutils-tarball) \
- $(ibidir)/metastore \
- $(ibidir)/findutils \
- $(ibidir)/diffutils \
- $(ibidir)/coreutils \
- $(gcc-prerequisites)
+$(ibidir)/binutils: $(ibidir)/sed \
+ $(ibidir)/wget \
+ $(ibidir)/grep \
+ $(ibidir)/file \
+ $(ibidir)/gawk \
+ $(ibidir)/which \
+ $(ibidir)/glibtool \
+ $(binutils-tarball) \
+ $(ibidir)/metastore \
+ $(ibidir)/findutils \
+ $(ibidir)/diffutils \
+ $(ibidir)/coreutils \
+ $(gcc-prerequisites)
if [ x$(on_mac_os) = xyes ]; then \
$(call makelink,as); \
@@ -1271,8 +1306,8 @@ gcc-tarball =
else
gcc-tarball = $(tdir)/gcc-$(gcc-version).tar.xz
endif
-$(ibidir)/gcc: | $(ibidir)/binutils \
- $(gcc-tarball)
+$(ibidir)/gcc: $(gcc-tarball) \
+ $(ibidir)/binutils
# GCC builds is own libraries in '$(idir)/lib64'. But all other
# libraries are in '$(idir)/lib'. Since this project is only for a
@@ -1280,11 +1315,11 @@ $(ibidir)/gcc: | $(ibidir)/binutils \
# in '$(idir)/lib' by defining the '$(idir)/lib64' as a symbolic
# link to '$(idir)/lib'.
if [ $(host_cc) = 1 ]; then \
- $(call makelink,gcc); \
- $(call makelink,g++,mandatory); \
- $(call makelink,gfortran,mandatory); \
+ $(call makelink,cc); \
+ $(call makelink,cc,,gcc); \
+ $(call makelink,c++,,g++); \
+ $(call makelink,gfortran); \
$(call makelink,strip,mandatory); \
- ln -sf $$(which gcc) $(ibdir)/cc; \
ccinfo=$$(gcc --version | awk 'NR==1'); \
echo "C compiler (""$$ccinfo"")" > $@; \
else \
@@ -1305,7 +1340,7 @@ $(ibidir)/gcc: | $(ibidir)/binutils \
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; \
diff --git a/reproduce/software/make/build-rules.mk b/reproduce/software/make/build-rules.mk
index 8d78ce3..260ded8 100644
--- a/reproduce/software/make/build-rules.mk
+++ b/reproduce/software/make/build-rules.mk
@@ -5,15 +5,18 @@
#
# Copyright (C) 2018-2020 Mohammad Akhlaghi <mohammad@akhlaghi.org>
#
-# This Makefile is part of Maneage. Maneage is free software: you can
-# redistribute it and/or modify it under the terms of the GNU General
-# Public License as published by the Free Software Foundation, either
-# version 3 of the License, or (at your option) any later version.
+# 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 Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
#
-# Maneage is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
-# more details. See <http://www.gnu.org/licenses/>.
+# This Makefile is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this Makefile. If not, see <http://www.gnu.org/licenses/>.
@@ -31,6 +34,31 @@
+# Unpack a tarball in the current directory. The issue is that until we
+# install GNU Tar within Maneage, we have to use the host's Tar
+# implementation and in some cases, they don't recognize '.lz'.
+uncompress = csuffix=$$(echo $$tarball \
+ | sed -e's/\./ /g' \
+ | awk '{print $$NF}'); \
+ if [ x$$csuffix = xlz ]; then \
+ intarrm=1; \
+ intar=$$(echo $$tarball | sed -e's/.lz//'); \
+ lzip -c -d $$tarball > $$intar; \
+ else \
+ intarrm=0; \
+ intar=$$tarball; \
+ fi; \
+ if tar xf $$intar; then \
+ if [ x$$intarrm = x1 ]; then rm $$intar; fi; \
+ else \
+ echo; echo "Tar error"; exit 1; \
+ fi
+
+
+
+
+
+
# GNU Build system
# ----------------
#
@@ -55,13 +83,13 @@ gbuild = if [ x$(static_build) = xyes ] && [ "x$(2)" = xstatic ]; then \
fi; \
check="$(5)"; \
if [ x"$$check" = x ]; then check="echo Skipping-check"; fi; \
- cd $(ddir); rm -rf $(1); \
+ cd $(ddir); \
+ rm -rf $(1); \
if [ x"$$gbuild_tar" = x ]; then \
- tarball=$(word 1,$(filter $(tdir)/%,$|)); \
+ tarball=$(word 1,$(filter $(tdir)/%,$^)); \
else tarball=$$gbuild_tar; \
fi; \
- if ! tar xf $$tarball; then \
- echo; echo "Tar error"; exit 1; fi; \
+ $(call uncompress); \
cd $(1); \
\
if [ x"$(strip $(6))" = x ]; then confscript=./configure; \
@@ -111,10 +139,11 @@ cbuild = if [ x$(static_build) = xyes ] && [ $(2)x = staticx ]; then \
export LDFLAGS="$$LDFLAGS -static"; \
opts="-DBUILD_SHARED_LIBS=OFF"; \
fi; \
- cd $(ddir) \
- && rm -rf $(1) \
- && tar xf $(word 1,$(filter $(tdir)/%,$|)) \
- && cd $(1) \
+ tarball=$(word 1,$(filter $(tdir)/%,$^)); \
+ cd $(ddir); \
+ rm -rf $(1); \
+ $(call uncompress); \
+ cd $(1) \
&& rm -rf project-build \
&& mkdir project-build \
&& cd project-build \
diff --git a/reproduce/software/make/high-level.mk b/reproduce/software/make/high-level.mk
index 4480e19..7cc2d51 100644
--- a/reproduce/software/make/high-level.mk
+++ b/reproduce/software/make/high-level.mk
@@ -11,15 +11,18 @@
# Copyright (C) 2018-2020 Mohammad Akhlaghi <mohammad@akhlaghi.org>
# Copyright (C) 2019-2020 Raul Infante-Sainz <infantesainz@gmail.com>
#
-# This Makefile is part of Maneage. Maneage is free software: you can
-# redistribute it and/or modify it under the terms of the GNU General
-# Public License as published by the Free Software Foundation, either
-# version 3 of the License, or (at your option) any later version.
+# 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 Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
#
-# Maneage is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
-# more details. See <http://www.gnu.org/licenses/>.
+# This Makefile is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this Makefile. If not, see <http://www.gnu.org/licenses/>.
@@ -39,6 +42,7 @@ ibdir = $(BDIR)/software/installed/bin
ildir = $(BDIR)/software/installed/lib
iidir = $(BDIR)/software/installed/include
dtexdir = $(shell pwd)/reproduce/software/bibtex
+patchdir= $(shell pwd)/reproduce/software/patches
itidir = $(BDIR)/software/installed/version-info/tex
ictdir = $(BDIR)/software/installed/version-info/cite
ipydir = $(BDIR)/software/installed/version-info/python
@@ -100,7 +104,8 @@ 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/maneage-software
+backupservers := $(shell awk '!/^#/{printf "%s ", $$1}' \
+ reproduce/software/config/servers-backup.conf)
# Building flags:
#
@@ -180,12 +185,12 @@ tarballs = $(foreach t, apachelog4cxx-$(apachelog4cxx-version).tar.lz \
libnsl-$(libnsl-version).tar.gz \
libpng-$(libpng-version).tar.xz \
libtirpc-$(libtirpc-version).tar.bz2 \
- libxml2-$(libxml2-version).tar.gz \
missfits-$(missfits-version).tar.gz \
netpbm-$(netpbm-version).tar.gz \
openblas-$(openblas-version).tar.gz \
openmpi-$(openmpi-version).tar.gz \
openssh-$(openssh-version).tar.gz \
+ patch-$(patch-version).tar.gz \
pixman-$(pixman-version).tar.gz \
R-$(R-version).tar.gz \
scamp-$(scamp-version).tar.lz \
@@ -196,6 +201,7 @@ tarballs = $(foreach t, apachelog4cxx-$(apachelog4cxx-version).tar.lz \
rpcsvc-proto-$(rpcsvc-proto-version).tar.xz \
tides-$(tides-version).tar.gz \
tiff-$(libtiff-version).tar.gz \
+ valgrind-$(valgrind-version).tar.bz2 \
wcslib-$(wcslib-version).tar.bz2 \
xlsxio-$(xlsxio-version).tar.gz \
yaml-$(yaml-version).tar.gz \
@@ -280,7 +286,6 @@ $(tarballs): $(tdir)/%: | $(lockdir)
c=$(libgit2-checksum)
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 = libxml2 ]; then c=$(libxml2-checksum); w=ftp://xmlsoft.org/libxml2
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/maneage-software
elif [ $$n = openblas ]; then
@@ -293,6 +298,7 @@ $(tarballs): $(tdir)/%: | $(lockdir)
majorver=$$(echo $(openmpi-version) | sed -e 's/\./ /g' | awk '{printf("%d.%d", $$1, $$2)}')
w=https://download.open-mpi.org/release/open-mpi/v$$majorver/$*
elif [ $$n = openssh ]; then c=$(openssh-checksum); w=https://artfiles.org/openbsd/OpenSSH/portable
+ elif [ $$n = patch ]; then c=$(patch-checksum); w=http://ftp.gnu.org/gnu/patch
elif [ $$n = pixman ]; then c=$(pixman-checksum); w=https://www.cairographics.org/releases
elif [ $$n = R ]; then c=$(R-checksum);
majver=$$(echo $(R-version) | sed -e's/\./ /g' | awk '{print $$1}')
@@ -308,6 +314,7 @@ $(tarballs): $(tdir)/%: | $(lockdir)
elif [ $$n = swig ]; then c=$(swig-checksum); w=https://sourceforge.net/projects/swig/files/swig/swig-$(swig-version)
elif [ $$n = tides ]; then c=$(tides-checksum); w=http://akhlaghi.org/maneage-software
elif [ $$n = tiff ]; then c=$(libtiff-checksum); w=https://download.osgeo.org/libtiff
+ elif [ $$n = valgrind ]; then c=$(valgrind-checksum); w=https://sourceware.org/pub/valgrind
elif [ $$n = wcslib ]; then c=$(wcslib-checksum); w=ftp://ftp.atnf.csiro.au/pub/software/wcslib
elif [ $$n = xlsxio ]; then
mergenames=0
@@ -329,6 +336,7 @@ $(tarballs): $(tdir)/%: | $(lockdir)
# 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.
+ rm -f "$@.unchecked"
if [ -f $(DEPENDENCIES-DIR)/$* ]; then
cp $(DEPENDENCIES-DIR)/$* "$@.unchecked"
else
@@ -401,14 +409,14 @@ $(tarballs): $(tdir)/%: | $(lockdir)
# build it because it will complain about the version of libtool, so until
# the version 0.11.0 of log4cxx, we'll have to run `autogen.sh' on the
# unpacked source also.
-$(ibidir)/apachelog4cxx: | $(ibidir)/automake \
- $(tdir)/apachelog4cxx-$(apachelog4cxx-version).tar.lz
+$(ibidir)/apachelog4cxx: $(ibidir)/automake \
+ $(tdir)/apachelog4cxx-$(apachelog4cxx-version).tar.lz
pdir=apachelog4cxx-$(apachelog4cxx-version)
rm -rf $(ddir)/$$pdir
topdir=$(pwd)
cd $(ddir)
- tar xf $(word 1,$(filter $(tdir)/%,$|))
+ tar xf $(word 1,$(filter $(tdir)/%,$^))
cd $$pdir
./autogen.sh \
&& ./configure SHELL=$(ibdir)/bash --prefix=$(idir) \
@@ -419,12 +427,12 @@ $(ibidir)/apachelog4cxx: | $(ibidir)/automake \
&& cd $$topdir \
&& echo "Apache log4cxx $(apachelog4cxx-version)" > $@
-$(ibidir)/apr: | $(tdir)/apr-$(apr-version).tar.gz
+$(ibidir)/apr: $(tdir)/apr-$(apr-version).tar.gz
$(call gbuild, apr-$(apr-version), ,--disable-static) \
&& echo "Apache Portable Runtime $(apr-version)" > $@
$(ibidir)/apr-util: $(ibidir)/apr \
- | $(tdir)/apr-util-$(apr-util-version).tar.gz
+ $(tdir)/apr-util-$(apr-util-version).tar.gz
$(call gbuild, apr-util-$(apr-util-version), , \
--disable-static \
--with-apr=$(idir) \
@@ -432,8 +440,8 @@ $(ibidir)/apr-util: $(ibidir)/apr \
--with-crypto ) \
&& echo "Apache Portable Runtime Utility $(apr-util-version)" > $@
-$(ibidir)/atlas: | $(tdir)/atlas-$(atlas-version).tar.bz2 \
- $(tdir)/lapack-$(lapack-version).tar.gz
+$(ibidir)/atlas: $(tdir)/atlas-$(atlas-version).tar.bz2 \
+ $(tdir)/lapack-$(lapack-version).tar.gz
# Get the operating system specific features (how to get
# CPU frequency and the library suffixes). To make the steps
@@ -514,12 +522,12 @@ $(ibidir)/atlas: | $(tdir)/atlas-$(atlas-version).tar.bz2 \
# Boost doesn't use the standard GNU Build System.
$(ibidir)/boost: $(ibidir)/openmpi \
- | $(ibidir)/python \
- $(tdir)/boost-$(boost-version).tar.gz
+ $(ibidir)/python \
+ $(tdir)/boost-$(boost-version).tar.gz
vstr=$$(echo $(boost-version) | sed -e's/\./_/g')
rm -rf $(ddir)/boost_$$vstr
topdir=$(pwd); cd $(ddir);
- tar xf $(word 1,$(filter $(tdir)/%,$|)) \
+ tar xf $(word 1,$(filter $(tdir)/%,$^)) \
&& cd boost_$$vstr \
&& ./bootstrap.sh --prefix=$(idir) --with-libraries=all \
--with-python=python3 \
@@ -531,13 +539,13 @@ $(ibidir)/boost: $(ibidir)/openmpi \
&& echo "Boost $(boost-version)" > $@
$(ibidir)/cfitsio: $(ibidir)/curl \
- | $(tdir)/cfitsio-$(cfitsio-version).tar.gz
+ $(tdir)/cfitsio-$(cfitsio-version).tar.gz
# CFITSIO hard-codes '@rpath' inside the shared library on
# Mac systems. So we need to change it to our library
# installation path. It doesn't affect GNU/Linux, so we'll
# just do it in any case to keep things clean.
- topdir=$(pwd); cd $(ddir); tar xf $(word 1,$(filter $(tdir)/%,$|))
+ topdir=$(pwd); cd $(ddir); tar xf $(word 1,$(filter $(tdir)/%,$^))
customtar=cfitsio-$(cfitsio-version)-custom.tar.gz
cd cfitsio-$(cfitsio-version)
sed configure -e's|@rpath|$(ildir)|g' > configure_tmp
@@ -560,7 +568,7 @@ $(ibidir)/cfitsio: $(ibidir)/curl \
$(ibidir)/cairo: $(ibidir)/freetype \
$(ibidir)/libpng \
$(ibidir)/pixman \
- | $(tdir)/cairo-$(cairo-version).tar.xz
+ $(tdir)/cairo-$(cairo-version).tar.xz
$(call gbuild, cairo-$(cairo-version), static, \
--with-x=no, -j$(numthreads) V=1) \
&& echo "Cairo $(cairo-version)" > $@
@@ -568,20 +576,20 @@ $(ibidir)/cairo: $(ibidir)/freetype \
# 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
+$(ibidir)/eigen: $(tdir)/eigen-$(eigen-version).tar.gz
rm -rf $(ddir)/eigen-eigen-*
- topdir=$(pwd); cd $(ddir); tar xf $(word 1,$(filter $(tdir)/%,$|))
+ topdir=$(pwd); cd $(ddir); tar xf $(word 1,$(filter $(tdir)/%,$^))
cd eigen-eigen-*
cp -r Eigen $(iidir)/eigen3 \
&& cd $$topdir \
&& rm -rf $(ddir)/eigen-eigen-* \
&& echo "Eigen $(eigen-version)" > $@
-$(ibidir)/expat: | $(tdir)/expat-$(expat-version).tar.lz
+$(ibidir)/expat: $(tdir)/expat-$(expat-version).tar.lz
$(call gbuild, expat-$(expat-version), static) \
&& echo "Expat $(expat-version)" > $@
-$(ibidir)/fftw: | $(tdir)/fftw-$(fftw-version).tar.gz
+$(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
# add the `--enable-float' option. We will build this first, then
@@ -596,16 +604,16 @@ $(ibidir)/fftw: | $(tdir)/fftw-$(fftw-version).tar.gz
# Freetype is necessary to install matplotlib
$(ibidir)/freetype: $(ibidir)/libpng \
- | $(tdir)/freetype-$(freetype-version).tar.gz
+ $(tdir)/freetype-$(freetype-version).tar.gz
$(call gbuild, freetype-$(freetype-version), static) \
&& echo "FreeType $(freetype-version)" > $@
-$(ibidir)/gsl: | $(tdir)/gsl-$(gsl-version).tar.gz
+$(ibidir)/gsl: $(tdir)/gsl-$(gsl-version).tar.gz
$(call gbuild, gsl-$(gsl-version), static) \
&& echo "GNU Scientific Library $(gsl-version)" > $@
$(ibidir)/hdf5: $(ibidir)/openmpi \
- | $(tdir)/hdf5-$(hdf5-version).tar.gz
+ $(tdir)/hdf5-$(hdf5-version).tar.gz
export CC=mpicc; \
export FC=mpif90; \
$(call gbuild, hdf5-$(hdf5-version), static, \
@@ -629,10 +637,10 @@ else
healpix-python-dep = $(ipydir)/matplotlib $(ipydir)/astropy
endif
$(ibidir)/healpix: $(ibidir)/cfitsio \
+ $(ibidir)/autoconf \
+ $(ibidir)/automake \
$(healpix-python-dep) \
- | $(ibidir)/autoconf \
- $(ibidir)/automake \
- $(tdir)/healpix-$(healpix-version).tar.gz
+ $(tdir)/healpix-$(healpix-version).tar.gz
if [ x"$(healpix-python-dep)" = x ]; then
pycommand1="echo no-healpy-because-no-other-python"
pycommand2="echo no-healpy-because-no-other-python"
@@ -642,7 +650,7 @@ $(ibidir)/healpix: $(ibidir)/cfitsio \
fi
rm -rf $(ddir)/Healpix_$(healpix-version)
topdir=$(pwd); cd $(ddir);
- tar xf $(word 1,$(filter $(tdir)/%,$|))
+ tar xf $(word 1,$(filter $(tdir)/%,$^))
&& cd Healpix_$(healpix-version)/src/C/autotools/ \
&& autoreconf --install \
&& ./configure --prefix=$(idir) \
@@ -661,51 +669,40 @@ $(ibidir)/healpix: $(ibidir)/cfitsio \
&& cp $(dtexdir)/healpix.tex $(ictdir)/ \
&& echo "HEALPix $(healpix-version) \citep{healpix}" > $@
-$(ibidir)/libjpeg: | $(tdir)/jpegsrc.$(libjpeg-version).tar.gz
+$(ibidir)/libjpeg: $(tdir)/jpegsrc.$(libjpeg-version).tar.gz
$(call gbuild, jpeg-9b, static,,V=1) \
&& echo "Libjpeg $(libjpeg-version)" > $@
$(ibidir)/libnsl: $(ibidir)/libtirpc \
$(ibidir)/rpcsvc-proto \
- | $(tdir)/libnsl-$(libnsl-version).tar.gz
+ $(tdir)/libnsl-$(libnsl-version).tar.gz
$(call gbuild, libnsl-$(libnsl-version), static, \
--sysconfdir=$(idir)/etc) \
&& echo "Libnsl $(libnsl-version)" > $@
-$(ibidir)/libpng: | $(tdir)/libpng-$(libpng-version).tar.xz
+$(ibidir)/libpng: $(tdir)/libpng-$(libpng-version).tar.xz
$(call gbuild, libpng-$(libpng-version), static) \
&& echo "Libpng $(libpng-version)" > $@
$(ibidir)/libtiff: $(ibidir)/libjpeg \
- | $(tdir)/tiff-$(libtiff-version).tar.gz
+ $(tdir)/tiff-$(libtiff-version).tar.gz
$(call gbuild, tiff-$(libtiff-version), static, \
--disable-jbig \
--disable-webp \
--disable-zstd) \
&& echo "Libtiff $(libtiff-version)" > $@
-$(ibidir)/libtirpc: | $(tdir)/libtirpc-$(libtirpc-version).tar.bz2
+$(ibidir)/libtirpc: $(tdir)/libtirpc-$(libtirpc-version).tar.bz2
$(call gbuild, libtirpc-$(libtirpc-version), static, \
--disable-gssapi, V=1) \
echo "libtirpc $(libtirpc-version)" > $@
-$(ibidir)/libxml2: | $(tdir)/libxml2-$(libxml2-version).tar.gz
- # The libxml2 tarball also contains Python bindings which are built and
- # installed to a system directory by default. If you don't need the Python
- # bindings, the easiest solution is to compile without Python support:
- # ./configure --without-python
- # If you really need the Python bindings, try the
- # --with-python-install-dir=DIR option
- $(call gbuild, libxml2-$(libxml2-version), static, \
- --without-python) \
- && echo "Libxml2 $(libxml2-version)" > $@
-
-$(ibidir)/openblas: | $(tdir)/openblas-$(openblas-version).tar.gz
+$(ibidir)/openblas: $(tdir)/openblas-$(openblas-version).tar.gz
if [ x$(on_mac_os) = xyes ]; then \
export CC=clang; \
fi; \
cd $(ddir) \
- && tar xf $(word 1,$(filter $(tdir)/%,$|)) \
+ && tar xf $(word 1,$(filter $(tdir)/%,$^)) \
&& cd OpenBLAS-$(openblas-version) \
&& make \
&& make PREFIX=$(idir) install \
@@ -713,7 +710,7 @@ $(ibidir)/openblas: | $(tdir)/openblas-$(openblas-version).tar.gz
&& rm -rf OpenBLAS-$(openblas-version) \
&& echo "OpenBLAS $(openblas-version)" > $@
-$(ibidir)/openmpi: | $(tdir)/openmpi-$(openmpi-version).tar.gz
+$(ibidir)/openmpi: $(tdir)/openmpi-$(openmpi-version).tar.gz
$(call gbuild, openmpi-$(openmpi-version), static, , \
-j$(numthreads) V=1) \
&& echo "Open MPI $(openmpi-version)" > $@
@@ -723,7 +720,7 @@ $(ibidir)/openmpi: | $(tdir)/openmpi-$(openmpi-version).tar.gz
# within the project because of all the security issues it may cause. Only
# enable/build it in a project with caution, and if there is no other
# solution (for example to disable SSH in a program that may ask for it.
-$(ibidir)/openssh: | $(tdir)/openssh-$(openssh-version).tar.gz
+$(ibidir)/openssh: $(tdir)/openssh-$(openssh-version).tar.gz
$(call gbuild, openssh-$(openssh-version), static, \
--with-privsep-path=$(ibdir)/.ssh_privsep \
--with-privsep-user=nobody \
@@ -732,22 +729,49 @@ $(ibidir)/openssh: | $(tdir)/openssh-$(openssh-version).tar.gz
, -j$(numthreads) V=1) \
&& echo "OpenSSH $(openssh-version)" > $@
-$(ibidir)/pixman: | $(tdir)/pixman-$(pixman-version).tar.gz
+$(ibidir)/pixman: $(tdir)/pixman-$(pixman-version).tar.gz
$(call gbuild, pixman-$(pixman-version), static, , \
-j$(numthreads) V=1) \
&& echo "Pixman $(pixman-version)" > $@
-$(ibidir)/rpcsvc-proto: | $(tdir)/rpcsvc-proto-$(rpcsvc-proto-version).tar.xz
+$(ibidir)/rpcsvc-proto: $(tdir)/rpcsvc-proto-$(rpcsvc-proto-version).tar.xz
$(call gbuild, rpcsvc-proto-$(rpcsvc-proto-version), static) \
&& echo "rpcsvc $(rpcsvc-proto-version)" > $@
-$(ibidir)/tides: | $(tdir)/tides-$(tides-version).tar.gz
+$(ibidir)/tides: $(tdir)/tides-$(tides-version).tar.gz
$(call gbuild, tides-$(tides-version), static,\
--with-gmp=$(idir) --with-mpfr=$(idir)) \
&& cp $(dtexdir)/tides.tex $(ictdir)/ \
&& echo "TIDES $(tides-version) \citep{tides}" > $@
-$(ibidir)/yaml: | $(tdir)/yaml-$(yaml-version).tar.gz
+$(ibidir)/valgrind: $(ibidir)/patch \
+ $(ibidir)/autoconf \
+ $(ibidir)/automake \
+ $(tdir)/valgrind-$(valgrind-version).tar.bz2
+ # For valgrind-3.15.0, see
+ # https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=946329 for a
+ # report on an MPI-related compile bug and the two patches
+ # below. These two patches and `automake` should allow valgrind to
+ # compile with gcc-9.2.0.
+ cd $(ddir) \
+ && tar -x -f $(word 1,$(filter $(tdir)/%,$^)) \
+ && valgrinddir=valgrind-$(valgrind-version) \
+ && cd $${valgrinddir} \
+ && printf "valgrindir=$${valgrinddir} ; pwd = %s .\n" $$($(ibdir)/pwd) \
+ && if [ "x$(valgrind-version)" = "x3.15.0" ]; then \
+ patch --verbose -p1 < $(patchdir)/valgrind-3.15.0-mpi-fix1.patch; \
+ patch --verbose -p1 < $(patchdir)/valgrind-3.15.0-mpi-fix2.patch; \
+ fi \
+ && autoreconf \
+ && ./configure --prefix=$(idir) \
+ && make -j$(numthreads) \
+ && if ! make check -j$(numthreads); then \
+ echo; echo "Valgrind's 'make check' failed!"; echo; \
+ fi \
+ && make install \
+ && echo "Valgrind $(valgrind-version)" > $@
+
+$(ibidir)/yaml: $(tdir)/yaml-$(yaml-version).tar.gz
$(call gbuild, yaml-$(yaml-version), static) \
&& echo "LibYAML $(yaml-version)" > $@
@@ -777,8 +801,8 @@ $(ibidir)/yaml: | $(tdir)/yaml-$(yaml-version).tar.gz
# that it uses if it can't find libiconv on macOS. So, to fix this problem
# it is necessary to use the option `-DUSE_ICONV=OFF` in the configure step.
$(ibidir)/libgit2: $(ibidir)/curl \
- | $(ibidir)/cmake \
- $(tdir)/libgit2-$(libgit2-version).tar.gz
+ $(ibidir)/cmake \
+ $(tdir)/libgit2-$(libgit2-version).tar.gz
$(call cbuild, libgit2-$(libgit2-version), static, \
-DUSE_SSH=OFF -DBUILD_CLAR=OFF \
-DTHREADSAFE=ON -DUSE_ICONV=OFF ) \
@@ -789,12 +813,18 @@ $(ibidir)/libgit2: $(ibidir)/curl \
&& echo "Libgit2 $(libgit2-version)" > $@
$(ibidir)/wcslib: $(ibidir)/cfitsio \
- | $(tdir)/wcslib-$(wcslib-version).tar.bz2
+ $(tdir)/wcslib-$(wcslib-version).tar.bz2
+ # If Fortran isn't present, don't build WCSLIB with it.
+ if type gfortran &> /dev/null; then fortranopt="";
+ else fortranopt="--disable-fortran"
+ fi
+
+ # Build WCSLIB.
$(call gbuild, wcslib-$(wcslib-version), , \
LIBS="-pthread -lcurl -lm" \
--with-cfitsiolib=$(ildir) \
--with-cfitsioinc=$(idir)/include \
- --without-pgplot) \
+ --without-pgplot $$fortranopt) \
&& if [ x$(on_mac_os) = xyes ]; then \
install_name_tool -id $(ildir)/libwcs.6.4.dylib \
$(ildir)/libwcs.6.4.dylib; \
@@ -825,14 +855,14 @@ $(ibidir)/astrometrynet: $(ibidir)/gsl \
$(ibidir)/wcslib \
$(ibidir)/cfitsio \
$(ibidir)/libjpeg \
- | $(tdir)/astrometry.net-$(astrometrynet-version).tar.gz
+ $(tdir)/astrometry.net-$(astrometrynet-version).tar.gz
# 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 $(word 1,$(filter $(tdir)/%,$|)); then \
+ && if ! tar xf $(word 1,$(filter $(tdir)/%,$^)); then \
echo; echo "Tar error"; exit 1; \
fi \
&& cd astrometry.net-$(astrometrynet-version) \
@@ -848,17 +878,17 @@ $(ibidir)/astrometrynet: $(ibidir)/gsl \
&& cp $(dtexdir)/astrometrynet.tex $(ictdir)/ \
&& echo "Astrometry.net $(astrometrynet-version) \citep{astrometrynet}" > $@
-$(ibidir)/autoconf: | $(tdir)/autoconf-$(autoconf-version).tar.lz
+$(ibidir)/autoconf: $(tdir)/autoconf-$(autoconf-version).tar.lz
$(call gbuild, autoconf-$(autoconf-version), static, ,V=1) \
&& echo "GNU Autoconf $(autoconf-version)" > $@
-$(ibidir)/automake: | $(ibidir)/autoconf \
- $(tdir)/automake-$(automake-version).tar.gz
+$(ibidir)/automake: $(ibidir)/autoconf \
+ $(tdir)/automake-$(automake-version).tar.gz
$(call gbuild, automake-$(automake-version), static, ,V=1) \
&& echo "GNU Automake $(automake-version)" > $@
-$(ibidir)/bison: | $(ibidir)/help2man \
- $(tdir)/bison-$(bison-version).tar.xz
+$(ibidir)/bison: $(ibidir)/help2man \
+ $(tdir)/bison-$(bison-version).tar.xz
$(call gbuild, bison-$(bison-version), static, ,V=1) \
&& echo "GNU Bison $(bison-version)" > $@
@@ -869,9 +899,9 @@ $(ibidir)/bison: | $(ibidir)/help2man \
# programs are scripts and we need to touch them before installing.
# Otherwise this software will be re-built each time the configure step is
# invoked.
-$(ibidir)/cdsclient: | $(tdir)/cdsclient-$(cdsclient-version).tar.gz
+$(ibidir)/cdsclient: $(tdir)/cdsclient-$(cdsclient-version).tar.gz
cd $(ddir) \
- && tar xf $(word 1,$(filter $(tdir)/%,$|)) \
+ && tar xf $(word 1,$(filter $(tdir)/%,$^)) \
&& cd cdsclient-$(cdsclient-version) \
&& touch * \
&& ./configure --prefix=$(idir) \
@@ -883,7 +913,7 @@ $(ibidir)/cdsclient: | $(tdir)/cdsclient-$(cdsclient-version).tar.gz
# CMake can be built with its custom `./bootstrap' script.
$(ibidir)/cmake: $(ibidir)/curl \
- | $(tdir)/cmake-$(cmake-version).tar.gz
+ $(tdir)/cmake-$(cmake-version).tar.gz
# After searching in `bootstrap', I couldn't find `LIBS', only
# `LDFLAGS'. So the extra libraries are being added to `LDFLAGS',
# not `LIBS'.
@@ -896,7 +926,7 @@ $(ibidir)/cmake: $(ibidir)/curl \
fi; \
cd $(ddir) \
&& rm -rf cmake-$(cmake-version) \
- && tar xf $(word 1,$(filter $(tdir)/%,$|)) \
+ && tar xf $(word 1,$(filter $(tdir)/%,$^)) \
&& cd cmake-$(cmake-version) \
&& ./bootstrap --prefix=$(idir) --system-curl --system-zlib \
--system-bzip2 --system-liblzma --no-qt-gui \
@@ -908,18 +938,18 @@ $(ibidir)/cmake: $(ibidir)/curl \
&& echo "CMake $(cmake-version)" > $@
$(ibidir)/flex: $(ibidir)/bison \
- | $(tdir)/flex-$(flex-version).tar.gz
+ $(tdir)/flex-$(flex-version).tar.gz
$(call gbuild, flex-$(flex-version), static, ,V=1) \
&& echo "Flex $(flex-version)" > $@
-$(ibidir)/gdb: | $(ibidir)/python \
- $(tdir)/gdb-$(gdb-version).tar.gz
+$(ibidir)/gdb: $(ibidir)/python \
+ $(tdir)/gdb-$(gdb-version).tar.gz
$(call gbuild, gdb-$(gdb-version),,,V=1) \
&& echo "GNU Project Debugger (GDB) $(gdb-version)" > $@
$(ibidir)/ghostscript: $(ibidir)/libpng \
$(ibidir)/libtiff \
- | $(tdir)/ghostscript-$(ghostscript-version).tar.gz
+ $(tdir)/ghostscript-$(ghostscript-version).tar.gz
# 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 .
@@ -965,7 +995,7 @@ $(ibidir)/gnuastro: $(ibidir)/gsl \
$(ibidir)/libtiff \
$(ibidir)/libgit2 \
$(ibidir)/ghostscript \
- | $(tdir)/gnuastro-$(gnuastro-version).tar.lz
+ $(tdir)/gnuastro-$(gnuastro-version).tar.lz
ifeq ($(static_build),yes)
staticopts="--enable-static=yes --enable-shared=no";
endif
@@ -974,14 +1004,14 @@ endif
&& cp $(dtexdir)/gnuastro.tex $(ictdir)/ \
&& echo "GNU Astronomy Utilities $(gnuastro-version) \citep{gnuastro}" > $@
-$(ibidir)/help2man: | $(tdir)/help2man-$(help2man-version).tar.xz
+$(ibidir)/help2man: $(tdir)/help2man-$(help2man-version).tar.xz
$(call gbuild, help2man-$(help2man-version), static, ,V=1) \
&& echo "Help2man $(Help2man-version)" > $@
$(ibidir)/imagemagick: $(ibidir)/zlib \
$(ibidir)/libjpeg \
$(ibidir)/libtiff \
- | $(tdir)/imagemagick-$(imagemagick-version).tar.xz
+ $(tdir)/imagemagick-$(imagemagick-version).tar.xz
$(call gbuild, ImageMagick-$(imagemagick-version), static, \
--without-x --disable-openmp, V=1 -j$(numthreads)) \
&& echo "ImageMagick $(imagemagick-version)" > $@
@@ -999,11 +1029,11 @@ $(ibidir)/imfit: $(ibidir)/gsl \
$(ibidir)/fftw \
$(ibidir)/scons \
$(ibidir)/cfitsio \
- | $(tdir)/imfit-$(imfit-version).tar.gz
+ $(tdir)/imfit-$(imfit-version).tar.gz
cd $(ddir) \
&& unpackdir=imfit-$(imfit-version) \
&& rm -rf $$unpackdir \
- && if ! tar xf $(word 1,$(filter $(tdir)/%,$|)); then \
+ && if ! tar xf $(word 1,$(filter $(tdir)/%,$^)); then \
echo; echo "Tar error"; exit 1; \
fi \
&& cd $$unpackdir \
@@ -1037,17 +1067,17 @@ $(ibidir)/imfit: $(ibidir)/gsl \
# 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.
+# minizip were taken from Arch GNU/Linux.
#
# 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
+ $(tdir)/zlib-$(zlib-version).tar.gz
cd $(ddir) \
&& unpackdir=minizip-$(minizip-version) \
&& rm -rf $$unpackdir \
&& mkdir $$unpackdir \
- && if ! tar xf $(word 1,$(filter $(tdir)/%,$|)) \
+ && if ! tar xf $(word 1,$(filter $(tdir)/%,$^)) \
-C$$unpackdir --strip-components=1; then \
echo; echo "Tar error"; exit 1; \
fi \
@@ -1070,7 +1100,7 @@ $(ibidir)/minizip: $(ibidir)/automake \
&& rm -rf $$unpackdir \
&& echo "Minizip $(minizip-version)" > $@
-$(ibidir)/missfits: | $(tdir)/missfits-$(missfits-version).tar.gz
+$(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}" > $@
@@ -1086,7 +1116,7 @@ $(ibidir)/netpbm: $(ibidir)/unzip \
$(ibidir)/libjpeg \
$(ibidir)/libtiff \
$(ibidir)/libxml2 \
- | $(tdir)/netpbm-$(netpbm-version).tar.gz
+ $(tdir)/netpbm-$(netpbm-version).tar.gz
if [ x$(on_mac_os) = xyes ]; then \
answers='\n\n$(ildir)\n\n\n\n\n\n$(ildir)/include\n\n$(ildir)/include\n\n$(ildir)/include\nnone\n\n'; \
else \
@@ -1095,7 +1125,7 @@ $(ibidir)/netpbm: $(ibidir)/unzip \
cd $(ddir) \
&& unpackdir=netpbm-$(netpbm-version) \
&& rm -rf $$unpackdir \
- && if ! tar xf $(word 1,$(filter $(tdir)/%,$|)); then \
+ && if ! tar xf $(word 1,$(filter $(tdir)/%,$^)); then \
echo; echo "Tar error"; exit 1; \
fi \
&& cd $$unpackdir \
@@ -1109,11 +1139,15 @@ $(ibidir)/netpbm: $(ibidir)/unzip \
&& rm -rf $$unpackdir \
&& echo "Netpbm $(netpbm-version)" > $@
+$(ibidir)/patch: $(tdir)/patch-$(patch-version).tar.gz
+ $(call gbuild, patch-$(patch-version), static, ,V=1) \
+ && echo "GNU Patch $(patch-version)" > $@
+
# R programming language
$(ibidir)/R: $(ibidir)/libpng \
$(ibidir)/libjpeg \
$(ibidir)/libtiff \
- | $(tdir)/R-$(R-version).tar.gz
+ $(tdir)/R-$(R-version).tar.gz
export R_SHELL=$(SHELL); \
$(call gbuild, R-$(R-version), static, \
--without-x --with-readline \
@@ -1128,9 +1162,11 @@ $(ibidir)/R: $(ibidir)/libpng \
$(ibidir)/scamp: $(ibidir)/fftw \
$(ibidir)/openblas \
$(ibidir)/cdsclient \
- | $(tdir)/scamp-$(scamp-version).tar.lz
+ $(tdir)/scamp-$(scamp-version).tar.lz
$(call gbuild, scamp-$(scamp-version), static, \
- --enable-threads --enable-openblas \
+ --enable-threads \
+ --enable-openblas \
+ --enable-plplot=no \
--with-fftw-libdir=$(idir) \
--with-fftw-incdir=$(idir)/include \
--with-openblas-libdir=$(ildir) \
@@ -1140,12 +1176,12 @@ $(ibidir)/scamp: $(ibidir)/fftw \
# Since `scons' doesn't use the traditional GNU installation with
# `configure' and `make' it is installed manually using `python'.
-$(ibidir)/scons: | $(ibidir)/python \
- $(tdir)/scons-$(scons-version).tar.gz
+$(ibidir)/scons: $(ibidir)/python \
+ $(tdir)/scons-$(scons-version).tar.gz
cd $(ddir) \
&& unpackdir=scons-$(scons-version) \
&& rm -rf $$unpackdir \
- && if ! tar xf $(word 1,$(filter $(tdir)/%,$|)); then \
+ && if ! tar xf $(word 1,$(filter $(tdir)/%,$^)); then \
echo; echo "Tar error"; exit 1; \
fi \
&& cd $$unpackdir \
@@ -1158,7 +1194,7 @@ $(ibidir)/scons: | $(ibidir)/python \
# the configuration step.
$(ibidir)/sextractor: $(ibidir)/fftw \
$(ibidir)/openblas \
- | $(tdir)/sextractor-$(sextractor-version).tar.lz
+ $(tdir)/sextractor-$(sextractor-version).tar.lz
$(call gbuild, sextractor-$(sextractor-version), static, \
--enable-threads --enable-openblas \
--with-openblas-libdir=$(ildir) \
@@ -1168,13 +1204,13 @@ $(ibidir)/sextractor: $(ibidir)/fftw \
&& echo "SExtractor $(sextractor-version) \citep{sextractor}" > $@
$(ibidir)/swarp: $(ibidir)/fftw \
- | $(tdir)/swarp-$(swarp-version).tar.gz
+ $(tdir)/swarp-$(swarp-version).tar.gz
$(call gbuild, swarp-$(swarp-version), static, \
--enable-threads) \
&& cp $(dtexdir)/swarp.tex $(ictdir)/ \
&& echo "SWarp $(swarp-version) \citep{swarp}" > $@
-$(ibidir)/swig: | $(tdir)/swig-$(swig-version).tar.gz
+$(ibidir)/swig: $(tdir)/swig-$(swig-version).tar.gz
# Option --without-pcre was a suggestion once the configure step
# was tried and it failed. It was not recommended but it works!
# pcr is a dependency of swig
@@ -1184,7 +1220,7 @@ $(ibidir)/swig: | $(tdir)/swig-$(swig-version).tar.gz
$(ibidir)/xlsxio: $(ibidir)/cmake \
$(ibidir)/expat \
$(ibidir)/minizip \
- | $(tdir)/xlsxio-$(xlsxio-version).tar.gz
+ $(tdir)/xlsxio-$(xlsxio-version).tar.gz
if [ x$(on_mac_os) = xyes ]; then \
export CC=clang; \
export CXX=clang++; \
@@ -1220,7 +1256,6 @@ $(ibidir)/xlsxio: $(ibidir)/cmake \
-
# 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
@@ -1228,18 +1263,7 @@ $(ibidir)/xlsxio: $(ibidir)/cmake \
# the final PDF). So we'll make a simple ASCII file called
# `texlive-ready-tlmgr' and use its contents to mark if we can use it or
# not.
-# TeX tarball are updated yearly, and because of that, it may crash when trying
-# to re-configure the project. As an example: an already present TeX tarball of
-# year 2019 and try to re-configure the project when the official version is of
-# the year 2020. In that case the installation will do the following:
#
-# - Install the 2019 (but the official version is 2020!), so it will complain
-# about that, and the error will be saved into a log file.
-# - Check if the error mesage correspond to this problem.
-# - If yes, it will move the old tarball, and download and install the new one.
-# - If not, it will complain about not being able to install it (for any other
-# reason).
-
# TeX Live mirror
# ---------------
#
@@ -1252,7 +1276,7 @@ tlmirror=http://mirrors.rit.edu/CTAN/systems/texlive/tlnet
# The core TeX Live system.
$(itidir)/texlive-ready-tlmgr: reproduce/software/config/texlive.conf \
- | $(tdir)/install-tl-unx.tar.gz
+ $(tdir)/install-tl-unx.tar.gz
# Unpack, enter the directory, and install based on the given
# configuration (prerequisite of this rule).
@@ -1268,11 +1292,33 @@ $(itidir)/texlive-ready-tlmgr: reproduce/software/config/texlive.conf \
# TeX Live's installation may fail due to any reason. But TeX Live
# is optional (only necessary for building the final PDF). So we
# don't want the configure script to fail if it can't run.
- # Possible error messages will be saved into `log.tx'. After that, this
- # file will be checked to see if the error during the installation is
- # due to the different version of the current tarball while it expects
- # to have a newer version.
- if ./install-tl --profile=texlive.conf -repository $(tlmirror) 2> log.txt; then
+ # Possible error messages will be saved into `log.txt' and if it
+ # fails, 'log.txt' will be checked to see if the error is due to
+ # the different version of the current tarball and the TeXLive
+ # server or something else.
+ #
+ # The problem with versions is this: each installer tarball (that
+ # is downloaded and a user may backup) is for a specific version of
+ # TeXLive (specified by year, usually around April). So if a user
+ # has an old tarball, but the CTAN server has been updated, the
+ # script will fail with a message like this:
+ #
+ # =============================================================
+ # ./install-tl: The TeX Live versions of the local installation
+ # and the repository being accessed are not compatible:
+ # local: 2019
+ # repository: 2020
+ # Perhaps you need to use a different CTAN mirror?
+ # (For more, see the output of install-tl --help, especially the
+ # -repository option. Online via https://tug.org/texlive/doc.)
+ # =============================================================
+ #
+ # To address this problem, when this happens, we simply download a
+ # the most recent tarball, and if it succeeds, we will build
+ # TeXLive using that. The old tarball will be preserved, but will
+ # have an '-OLD' suffix after it.
+ if ./install-tl --profile=texlive.conf -repository \
+ $(tlmirror) 2> log.txt; then
# Put a symbolic link of the TeX Live executables in `ibdir' to
# avoid all the complexities of its sub-directories and additions
@@ -1282,31 +1328,38 @@ $(itidir)/texlive-ready-tlmgr: reproduce/software/config/texlive.conf \
# Register that the build was successful.
echo "TeX Live is ready." > $@
+ # The build failed!
else
- # Print on the command line the error messages during the installation
+ # Print on the command line the error messages during the
+ # installation.
cat log.txt
- # Look for words `repository:' and `local:' in `log.txt'
- version_check=$$(grep -w 'repository:\|local:' log.txt)
-
- # If these words exists, then there is a conflict with tarball
- # versions. So it is necessary to move the old tarball and download
- # the new one to install it.
- if [ x"$$version_check" != x ]; then
+ # Look for words `repository:' and `local:' in `log.txt' and make
+ # sure that two lines are returned. Note that we need to check
+ # for two lines because one of them may exist, but another may
+ # not (in this case, its not a version conflict scenario).
+ version_check=$$(grep -w 'repository:\|local:' log.txt | wc -l)
+
+ # If these words exists and two lines are found, there is a
+ # conflict with the main TeXLive version in the tarball and on
+ # the server. So it is necessary to move the old tarball and
+ # download the new one to install it.
+ if [ x"$$version_check" = x2 ]; then
+ # Go back to the top project directory, don't remove the
+ # tarball, just rename it.
cd $$topdir
-
- # Don't remove the tarball, just rename it
mv $(tdir)/install-tl-unx.tar.gz $(tdir)/install-tl-unx-OLD.tar.gz
- # Download using the script specially defined for this job.
- tarballurl=http://mirror.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz
+ # Download using the script specially defined for this job. If
+ # the download of new tarball success, install it (same lines
+ # than above). If not, record the fail into the target.
+ url=http://mirror.ctan.org/systems/texlive/tlnet
+ tarballurl=$$url/install-tl-unx.tar.gz
touch $(lockdir)/download
downloader="wget --no-use-server-timestamps -O"
if $(downloadwrapper) "$$downloader" $(lockdir)/download \
$$tarballurl "$(tdir)/install-tl-unx.tar.gz" \
- "$(backupservers)"; then
- # If the download of new tarball success, install it (same lines
- # than above). If not, record the fail into the target.
+ "$(backupservers)"; then
cd $(ddir)
rm -rf install-tl-*
tar xf $(tdir)/install-tl-unx.tar.gz
@@ -1314,15 +1367,18 @@ $(itidir)/texlive-ready-tlmgr: reproduce/software/config/texlive.conf \
sed -e's|@installdir[@]|$(idir)|g' \
$$topdir/reproduce/software/config/texlive.conf \
> texlive.conf
- if ./install-tl --profile=texlive.conf -repository $(tlmirror); then
+ if ./install-tl --profile=texlive.conf -repository \
+ $(tlmirror); then
ln -fs $(idir)/texlive/maneage/bin/*/* $(ibdir)/
echo "TeX Live is ready." > $@
else
- echo "NOT!" > $@
+ echo "NOT!" > $@ # Building failed.
fi
else
- echo "NOT!" > $@
+ echo "NOT!" > $@ # Download failed.
fi
+ else
+ echo "NOT!" > $@ # Error was not version.
fi
fi
@@ -1381,7 +1437,9 @@ $(itidir)/texlive: reproduce/software/config/texlive-packages.conf \
ln -fs $(idir)/texlive/maneage/bin/*/* $(ibdir)/
# Get all the necessary versions.
- texlive=$$(pdflatex --version | awk 'NR==1' | sed 's/.*(\(.*\))/\1/' \
+ texlive=$$(pdflatex --version \
+ | awk 'NR==1' \
+ | sed 's/.*(\(.*\))/\1/' \
| awk '{print $$NF}');
# Package names and versions. Note that all TeXLive packages
diff --git a/reproduce/software/make/python.mk b/reproduce/software/make/python.mk
index f378650..eef8279 100644
--- a/reproduce/software/make/python.mk
+++ b/reproduce/software/make/python.mk
@@ -11,15 +11,18 @@
# Copyright (C) 2019-2020 Raul Infante-Sainz <infantesainz@gmail.com>
# Copyright (C) 2019-2020 Mohammad Akhlaghi <mohammad@akhlaghi.org>
#
-# This Makefile is part of Maneage. Maneage is free software: you can
-# redistribute it and/or modify it under the terms of the GNU General
-# Public License as published by the Free Software Foundation, either
-# version 3 of the License, or (at your option) any later version.
+# 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 Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
#
-# Maneage is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
-# more details. See <http://www.gnu.org/licenses/>.
+# This Makefile is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this Makefile. If not, see <http://www.gnu.org/licenses/>.
@@ -247,6 +250,7 @@ $(pytarballs): $(tdir)/%:
# 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.
+ rm -f "$@.unchecked"
if [ -f $(DEPENDENCIES-DIR)/$* ]; then
cp $(DEPENDENCIES-DIR)/$* "$@.unchecked"
else
@@ -283,7 +287,7 @@ $(pytarballs): $(tdir)/%:
#
# While this Makefile is for Python programs, in some cases, we need
# certain programs (like Python itself), or libraries for the modules.
-$(ibidir)/libffi: | $(tdir)/libffi-$(libffi-version).tar.gz
+$(ibidir)/libffi: $(tdir)/libffi-$(libffi-version).tar.gz
# On some Fedora systems, libffi installs in `lib64', not
# `lib'. This will cause problems when building setuptools
@@ -299,7 +303,7 @@ $(ibidir)/libffi: | $(tdir)/libffi-$(libffi-version).tar.gz
&& echo "Libffi $(libffi-version)" > $@
$(ibidir)/python: $(ibidir)/libffi \
- | $(tdir)/python-$(python-version).tar.gz
+ $(tdir)/python-$(python-version).tar.gz
# On Mac systems, the build complains about `clang' specific
# features, so we can't use our own GCC build here.
if [ x$(on_mac_os) = xyes ]; then \
@@ -339,7 +343,7 @@ $(ibidir)/python: $(ibidir)/libffi \
# pyhook_before: optional steps before running `python setup.py build'
# pyhook_after: optional steps after running `python setup.py install'
pybuild = cd $(ddir); rm -rf $(2); \
- if ! $(1) $(word 1,$(filter $(tdir)/%,$|)); then \
+ if ! $(1) $(word 1,$(filter $(tdir)/%,$^)); then \
echo; echo "Tar error"; exit 1; \
fi; \
cd $(2); \
@@ -365,19 +369,19 @@ pybuild = cd $(ddir); rm -rf $(2); \
#
# All the necessary Python modules go here.
$(ipydir)/asn1crypto: $(ipydir)/setuptools \
- | $(tdir)/asn1crypto-$(asn1crypto-version).tar.gz
+ $(tdir)/asn1crypto-$(asn1crypto-version).tar.gz
$(call pybuild, tar xf, asn1crypto-$(asn1crypto-version), , \
Asn1crypto $(asn1crypto-version))
$(ipydir)/asteval: $(ipydir)/numpy \
- | $(tdir)/asteval-$(asteval-version).tar.gz
+ $(tdir)/asteval-$(asteval-version).tar.gz
$(call pybuild, tar xf, asteval-$(asteval-version), , \
ASTEVAL $(asteval-version))
$(ipydir)/astroquery: $(ipydir)/astropy \
$(ipydir)/keyring \
$(ipydir)/requests \
- | $(tdir)/astroquery-$(astroquery-version).tar.gz
+ $(tdir)/astroquery-$(astroquery-version).tar.gz
$(call pybuild, tar xf, astroquery-$(astroquery-version), ,\
Astroquery $(astroquery-version))
@@ -388,7 +392,7 @@ $(ipydir)/astropy: $(ipydir)/h5py \
$(ipydir)/pyyaml \
$(ipydir)/html5lib \
$(ipydir)/beautifulsoup4 \
- | $(tdir)/astropy-$(astropy-version).tar.gz
+ $(tdir)/astropy-$(astropy-version).tar.gz
# Currently, when the Expat library is already built in a project
# (for example as a dependency of another program), Astropy's
# internal building of Expat will conflict with the project's. So
@@ -405,28 +409,28 @@ $(ipydir)/astropy: $(ipydir)/h5py \
&& echo "Astropy $(astropy-version) \citep{astropy2013,astropy2018}" > $@
$(ipydir)/beautifulsoup4: $(ipydir)/soupsieve \
- | $(tdir)/beautifulsoup4-$(beautifulsoup4-version).tar.gz
+ $(tdir)/beautifulsoup4-$(beautifulsoup4-version).tar.gz
$(call pybuild, tar xf, beautifulsoup4-$(beautifulsoup4-version), ,\
BeautifulSoup $(beautifulsoup4-version))
$(ipydir)/certifi: $(ipydir)/setuptools \
- | $(tdir)/certifi-$(certifi-version).tar.gz
+ $(tdir)/certifi-$(certifi-version).tar.gz
$(call pybuild, tar xf, certifi-$(certifi-version), ,\
Certifi $(certifi-version))
$(ipydir)/cffi: $(ibidir)/libffi \
$(ipydir)/pycparser \
- | $(tdir)/cffi-$(cffi-version).tar.gz
+ $(tdir)/cffi-$(cffi-version).tar.gz
$(call pybuild, tar xf, cffi-$(cffi-version), ,\
cffi $(cffi-version))
$(ipydir)/chardet: $(ipydir)/setuptools \
- | $(tdir)/chardet-$(chardet-version).tar.gz
+ $(tdir)/chardet-$(chardet-version).tar.gz
$(call pybuild, tar xf, chardet-$(chardet-version), ,\
Chardet $(chardet-version))
$(ipydir)/corner: $(ipydir)/matplotlib \
- | $(tdir)/corner-$(corner-version).tar.gz
+ $(tdir)/corner-$(corner-version).tar.gz
$(call pybuild, tar xf, corner-$(corner-version), ,\
Corner $(corner-version)) \
&& cp $(dtexdir)/corner.tex $(ictdir)/ \
@@ -434,50 +438,50 @@ $(ipydir)/corner: $(ipydir)/matplotlib \
$(ipydir)/cryptography: $(ipydir)/cffi \
$(ipydir)/asn1crypto \
- | $(tdir)/cryptography-$(cryptography-version).tar.gz
+ $(tdir)/cryptography-$(cryptography-version).tar.gz
$(call pybuild, tar xf, cryptography-$(cryptography-version), ,\
Cryptography $(cryptography-version))
$(ipydir)/cycler: $(ipydir)/six \
- | $(tdir)/cycler-$(cycler-version).tar.gz
+ $(tdir)/cycler-$(cycler-version).tar.gz
$(call pybuild, tar xf, cycler-$(cycler-version), ,\
Cycler $(cycler-version))
$(ipydir)/cython: $(ipydir)/setuptools \
- | $(tdir)/cython-$(cython-version).tar.gz
+ $(tdir)/cython-$(cython-version).tar.gz
$(call pybuild, tar xf, Cython-$(cython-version)) \
&& cp $(dtexdir)/cython.tex $(ictdir)/ \
&& echo "Cython $(cython-version) \citep{cython2011}" > $@
$(ipydir)/esutil: $(ipydir)/numpy \
- | $(tdir)/esutil-$(esutil-version).tar.gz
+ $(tdir)/esutil-$(esutil-version).tar.gz
$(call pybuild, tar xf, esutil-$(esutil-version), ,\
esutil $(esutil-version))
$(ipydir)/eigency: $(ibidir)/eigen \
- | $(tdir)/eigency-$(eigency-version).tar.gz
+ $(tdir)/eigency-$(eigency-version).tar.gz
$(call pybuild, tar xf, eigency-$(eigency-version), ,\
eigency $(eigency-version))
$(ipydir)/emcee: $(ipydir)/numpy \
$(ipydir)/setuptools_scm \
- | $(tdir)/emcee-$(emcee-version).tar.gz
+ $(tdir)/emcee-$(emcee-version).tar.gz
$(call pybuild, tar xf, emcee-$(emcee-version), ,\
emcee $(emcee-version))
$(ipydir)/entrypoints: $(ipydir)/setuptools \
- | $(tdir)/entrypoints-$(entrypoints-version).tar.gz
+ $(tdir)/entrypoints-$(entrypoints-version).tar.gz
$(call pybuild, tar xf, entrypoints-$(entrypoints-version), ,\
EntryPoints $(entrypoints-version))
$(ipydir)/flake8: $(ipydir)/pyflakes \
$(ipydir)/pycodestyle \
- | $(tdir)/flake8-$(flake8-version).tar.gz
+ $(tdir)/flake8-$(flake8-version).tar.gz
$(call pybuild, tar xf, flake8-$(flake8-version), ,\
Flake8 $(flake8-version))
$(ipydir)/future: $(ipydir)/setuptools \
- | $(tdir)/future-$(future-version).tar.gz
+ $(tdir)/future-$(future-version).tar.gz
$(call pybuild, tar xf, future-$(future-version), ,\
Future $(future-version))
@@ -486,7 +490,7 @@ $(ipydir)/galsim: $(ipydir)/future \
$(ipydir)/eigency \
$(ipydir)/pybind11 \
$(ipydir)/lsstdesccoord \
- | $(tdir)/galsim-$(galsim-version).tar.gz
+ $(tdir)/galsim-$(galsim-version).tar.gz
$(call pybuild, tar xf, GalSim-$(galsim-version)) \
&& cp $(dtexdir)/galsim.tex $(ictdir)/ \
&& echo "Galsim $(galsim-version) \citep{galsim}" > $@
@@ -497,7 +501,7 @@ $(ipydir)/h5py: $(ipydir)/six \
$(ipydir)/cython \
$(ipydir)/mpi4py \
$(ipydir)/pypkgconfig \
- | $(tdir)/h5py-$(h5py-version).tar.gz
+ $(tdir)/h5py-$(h5py-version).tar.gz
export HDF5_MPI=ON; \
export HDF5_DIR=$(ildir); \
$(call pybuild, tar xf, h5py-$(h5py-version), ,\
@@ -515,29 +519,29 @@ $(ipydir)/healpy: $(ibidir)/healpix
$(ipydir)/html5lib: $(ipydir)/six \
$(ipydir)/webencodings \
- | $(tdir)/html5lib-$(html5lib-version).tar.gz
+ $(tdir)/html5lib-$(html5lib-version).tar.gz
$(call pybuild, tar xf, html5lib-$(html5lib-version), ,\
HTML5lib $(html5lib-version))
$(ipydir)/idna: $(ipydir)/setuptools \
- | $(tdir)/idna-$(idna-version).tar.gz
+ $(tdir)/idna-$(idna-version).tar.gz
$(call pybuild, tar xf, idna-$(idna-version), ,\
idna $(idna-version))
$(ipydir)/jeepney: $(ipydir)/setuptools \
- | $(tdir)/jeepney-$(jeepney-version).tar.gz
+ $(tdir)/jeepney-$(jeepney-version).tar.gz
$(call pybuild, tar xf, jeepney-$(jeepney-version), ,\
Jeepney $(jeepney-version))
$(ipydir)/keyring: $(ipydir)/entrypoints \
$(ipydir)/secretstorage \
$(ipydir)/setuptools_scm \
- | $(tdir)/keyring-$(keyring-version).tar.gz
+ $(tdir)/keyring-$(keyring-version).tar.gz
$(call pybuild, tar xf, keyring-$(keyring-version), ,\
Keyring $(keyring-version))
$(ipydir)/kiwisolver: $(ipydir)/setuptools \
- | $(tdir)/kiwisolver-$(kiwisolver-version).tar.gz
+ $(tdir)/kiwisolver-$(kiwisolver-version).tar.gz
$(call pybuild, tar xf, kiwisolver-$(kiwisolver-version), ,\
Kiwisolver $(kiwisolver-version))
@@ -548,12 +552,12 @@ $(ipydir)/lmfit: $(ipydir)/six \
$(ipydir)/asteval \
$(ipydir)/matplotlib \
$(ipydir)/uncertainties \
- | $(tdir)/lmfit-$(lmfit-version).tar.gz
+ $(tdir)/lmfit-$(lmfit-version).tar.gz
$(call pybuild, tar xf, lmfit-$(lmfit-version), ,\
LMFIT $(lmfit-version))
$(ipydir)/lsstdesccoord: $(ipydir)/setuptools \
- | $(tdir)/lsstdesccoord-$(lsstdesccoord-version).tar.gz
+ $(tdir)/lsstdesccoord-$(lsstdesccoord-version).tar.gz
$(call pybuild, tar xf, LSSTDESC.Coord-$(lsstdesccoord-version), ,\
LSSTDESC.Coord $(lsstdesccoord-version))
@@ -566,7 +570,7 @@ $(ipydir)/matplotlib: $(ipydir)/numpy \
$(ibidir)/ghostscript \
$(ibidir)/imagemagick \
$(ipydir)/python-dateutil \
- | $(tdir)/matplotlib-$(matplotlib-version).tar.gz
+ $(tdir)/matplotlib-$(matplotlib-version).tar.gz
# On Mac systems, the build complains about `clang' specific
# features, so we can't use our own GCC build here.
if [ x$(on_mac_os) = xyes ]; then \
@@ -579,20 +583,20 @@ $(ipydir)/matplotlib: $(ipydir)/numpy \
$(ipydir)/mpi4py: $(ibidir)/openmpi \
$(ipydir)/setuptools \
- | $(tdir)/mpi4py-$(mpi4py-version).tar.gz
+ $(tdir)/mpi4py-$(mpi4py-version).tar.gz
$(call pybuild, tar xf, mpi4py-$(mpi4py-version)) \
&& cp $(dtexdir)/mpi4py.tex $(ictdir)/ \
&& echo "mpi4py $(mpi4py-version) \citep{mpi4py2011}" > $@
$(ipydir)/mpmath: $(ipydir)/setuptools \
- | $(tdir)/mpmath-$(mpmath-version).tar.gz
+ $(tdir)/mpmath-$(mpmath-version).tar.gz
$(call pybuild, tar xf, mpmath-$(mpmath-version), ,\
mpmath $(mpmath-version))
$(ipydir)/numpy: $(ibidir)/unzip \
$(ibidir)/openblas \
$(ipydir)/setuptools \
- | $(tdir)/numpy-$(numpy-version).zip
+ $(tdir)/numpy-$(numpy-version).zip
if [ x$(on_mac_os) = xyes ]; then \
export LDFLAGS="$(LDFLAGS) -undefined dynamic_lookup -bundle"; \
else \
@@ -606,24 +610,24 @@ $(ipydir)/numpy: $(ibidir)/unzip \
&& echo "Numpy $(numpy-version) \citep{numpy2011}" > $@
$(ipydir)/pexpect: $(ipydir)/setuptools \
- | $(tdir)/pexpect-$(pexpect-version).tar.gz
+ $(tdir)/pexpect-$(pexpect-version).tar.gz
$(call pybuild, tar xf, pexpect-$(pexpect-version), ,\
Pexpect $(pexpect-version))
$(ibidir)/pip3: $(ipydir)/setuptools \
- | $(tdir)/pip-$(pip-version).tar.gz
+ $(tdir)/pip-$(pip-version).tar.gz
$(call pybuild, tar xf, pip-$(pip-version), ,\
PiP $(pip-version))
$(ipydir)/pycodestyle: $(ipydir)/setuptools \
- | $(tdir)/pycodestyle-$(pycodestyle-version).tar.gz
+ $(tdir)/pycodestyle-$(pycodestyle-version).tar.gz
$(call pybuild, tar xf, pycodestyle-$(pycodestyle-version), ,\
pycodestyle $(pycodestyle-version))
$(ipydir)/pybind11: $(ibidir)/eigen \
$(ibidir)/boost \
$(ipydir)/setuptools \
- | $(tdir)/pybind11-$(pybind11-version).tar.gz
+ $(tdir)/pybind11-$(pybind11-version).tar.gz
pyhook_after() {
cp -r include/pybind11 $(iidir)/python$(python-major-version)m/
}
@@ -631,34 +635,34 @@ $(ipydir)/pybind11: $(ibidir)/eigen \
pybind11 $(pybind11-version))
$(ipydir)/pycparser: $(ipydir)/setuptools \
- | $(tdir)/pycparser-$(pycparser-version).tar.gz
+ $(tdir)/pycparser-$(pycparser-version).tar.gz
$(call pybuild, tar xf, pycparser-$(pycparser-version), ,\
pycparser $(pycparser-version))
$(ipydir)/pyflakes: $(ipydir)/setuptools \
- | $(tdir)/pyflakes-$(pyflakes-version).tar.gz
+ $(tdir)/pyflakes-$(pyflakes-version).tar.gz
$(call pybuild, tar xf, pyflakes-$(pyflakes-version), ,\
pyflakes $(pyflakes-version))
$(ipydir)/pyparsing: $(ipydir)/setuptools \
- | $(tdir)/pyparsing-$(pyparsing-version).tar.gz
+ $(tdir)/pyparsing-$(pyparsing-version).tar.gz
$(call pybuild, tar xf, pyparsing-$(pyparsing-version), ,\
PyParsing $(pyparsing-version))
$(ipydir)/pypkgconfig: $(ipydir)/setuptools \
- | $(tdir)/pkgconfig-$(pypkgconfig-version).tar.gz
+ $(tdir)/pkgconfig-$(pypkgconfig-version).tar.gz
$(call pybuild, tar xf, pkgconfig-$(pypkgconfig-version), ,
pkgconfig $(pypkgconfig-version))
$(ipydir)/python-dateutil: $(ipydir)/six \
$(ipydir)/setuptools_scm \
- | $(tdir)/python-dateutil-$(python-dateutil-version).tar.gz
+ $(tdir)/python-dateutil-$(python-dateutil-version).tar.gz
$(call pybuild, tar xf, python-dateutil-$(python-dateutil-version), ,\
python-dateutil $(python-dateutil-version))
$(ipydir)/pyyaml: $(ibidir)/yaml \
$(ipydir)/cython \
- | $(tdir)/pyyaml-$(pyyaml-version).tar.gz
+ $(tdir)/pyyaml-$(pyyaml-version).tar.gz
$(call pybuild, tar xf, PyYAML-$(pyyaml-version), ,\
PyYAML $(pyyaml-version))
@@ -667,12 +671,12 @@ $(ipydir)/requests: $(ipydir)/idna \
$(ipydir)/certifi \
$(ipydir)/chardet \
$(ipydir)/urllib3 \
- | $(tdir)/requests-$(requests-version).tar.gz
+ $(tdir)/requests-$(requests-version).tar.gz
$(call pybuild, tar xf, requests-$(requests-version), ,\
Requests $(requests-version))
$(ipydir)/scipy: $(ipydir)/numpy \
- | $(tdir)/scipy-$(scipy-version).tar.gz
+ $(tdir)/scipy-$(scipy-version).tar.gz
if [ x$(on_mac_os) = xyes ]; then \
export LDFLAGS="$(LDFLAGS) -undefined dynamic_lookup -bundle"; \
else \
@@ -685,56 +689,56 @@ $(ipydir)/scipy: $(ipydir)/numpy \
$(ipydir)/secretstorage: $(ipydir)/jeepney \
$(ipydir)/cryptography \
- | $(tdir)/secretstorage-$(secretstorage-version).tar.gz
+ $(tdir)/secretstorage-$(secretstorage-version).tar.gz
$(call pybuild, tar xf, SecretStorage-$(secretstorage-version), ,\
SecretStorage $(secretstorage-version))
$(ipydir)/setuptools: $(ibidir)/unzip \
$(ibidir)/python \
- | $(tdir)/setuptools-$(setuptools-version).zip
+ $(tdir)/setuptools-$(setuptools-version).zip
$(call pybuild, unzip, setuptools-$(setuptools-version), ,\
Setuptools $(setuptools-version))
$(ipydir)/setuptools_scm: $(ipydir)/setuptools \
- | $(tdir)/setuptools_scm-$(setuptools_scm-version).tar.gz
+ $(tdir)/setuptools_scm-$(setuptools_scm-version).tar.gz
$(call pybuild, tar xf, setuptools_scm-$(setuptools_scm-version), ,\
Setuptools-scm $(setuptools_scm-version))
$(ipydir)/sip_tpv: $(ipydir)/sympy \
$(ipydir)/astropy \
- | $(tdir)/sip_tpv-$(sip_tpv-version).tar.gz
+ $(tdir)/sip_tpv-$(sip_tpv-version).tar.gz
$(call pybuild, tar xf, sip_tpv-$(sip_tpv-version), ,) \
&& cp $(dtexdir)/sip_tpv.tex $(ictdir)/ \
- && echo "sip\_tpv $(sip_tpv-version) \citep{sip-tpv}" > $@
+ && echo "sip_tpv $(sip_tpv-version) \citep{sip-tpv}" > $@
$(ipydir)/six: $(ipydir)/setuptools \
- | $(tdir)/six-$(six-version).tar.gz
+ $(tdir)/six-$(six-version).tar.gz
$(call pybuild, tar xf, six-$(six-version), ,\
Six $(six-version))
$(ipydir)/soupsieve: $(ipydir)/setuptools \
- | $(tdir)/soupsieve-$(soupsieve-version).tar.gz
+ $(tdir)/soupsieve-$(soupsieve-version).tar.gz
$(call pybuild, tar xf, soupsieve-$(soupsieve-version), ,\
SoupSieve $(soupsieve-version))
$(ipydir)/sympy: $(ipydir)/mpmath \
- | $(tdir)/sympy-$(sympy-version).tar.gz
+ $(tdir)/sympy-$(sympy-version).tar.gz
$(call pybuild, tar xf, sympy-$(sympy-version), ,) \
&& cp $(dtexdir)/sympy.tex $(ictdir)/ \
&& echo "SymPy $(sympy-version) \citep{sympy}" > $@
$(ipydir)/uncertainties: $(ipydir)/numpy \
- | $(tdir)/uncertainties-$(uncertainties-version).tar.gz
+ $(tdir)/uncertainties-$(uncertainties-version).tar.gz
$(call pybuild, tar xf, uncertainties-$(uncertainties-version), ,\
uncertainties $(uncertainties-version))
$(ipydir)/urllib3: $(ipydir)/setuptools \
- | $(tdir)/urllib3-$(urllib3-version).tar.gz
+ $(tdir)/urllib3-$(urllib3-version).tar.gz
$(call pybuild, tar xf, urllib3-$(urllib3-version), ,\
Urllib3 $(urllib3-version))
$(ipydir)/webencodings: $(ipydir)/setuptools \
- | $(tdir)/webencodings-$(webencodings-version).tar.gz
+ $(tdir)/webencodings-$(webencodings-version).tar.gz
$(call pybuild, tar xf, webencodings-$(webencodings-version), ,\
Webencodings $(webencodings-version))