aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.file-metadatabin9050 -> 9198 bytes
-rw-r--r--README-hacking.md50
-rw-r--r--README.md11
-rwxr-xr-xproject62
-rw-r--r--reproduce/analysis/config/INPUTS.conf37
-rw-r--r--reproduce/analysis/make/download.mk2
-rw-r--r--reproduce/analysis/make/initialize.mk65
-rw-r--r--reproduce/analysis/make/paper.mk8
-rw-r--r--reproduce/analysis/make/verify.mk4
-rw-r--r--reproduce/software/config/checksums.conf80
-rw-r--r--reproduce/software/config/urls.conf31
-rw-r--r--reproduce/software/config/versions.conf85
-rw-r--r--reproduce/software/make/basic.mk138
-rw-r--r--reproduce/software/make/build-rules.mk29
-rw-r--r--reproduce/software/make/high-level.mk63
-rw-r--r--reproduce/software/make/python.mk7
-rw-r--r--reproduce/software/make/xorg.mk1
-rwxr-xr-xreproduce/software/shell/configure.sh314
-rwxr-xr-xreproduce/software/shell/pre-make-build.sh14
-rw-r--r--tex/src/references.tex12
20 files changed, 641 insertions, 372 deletions
diff --git a/.file-metadata b/.file-metadata
index dfcf2ed..1d594ed 100644
--- a/.file-metadata
+++ b/.file-metadata
Binary files differ
diff --git a/README-hacking.md b/README-hacking.md
index 554ba6b..a598373 100644
--- a/README-hacking.md
+++ b/README-hacking.md
@@ -173,10 +173,21 @@ Published works using Maneage
-----------------------------
The list below shows some of the works that have already been published
-with (earlier versions of) Maneage. Previously it was simply called
-"Reproducible paper template". Note that Maneage is evolving, so some
-details may be different in them. The more recent ones can be used as a
-good working example.
+with (earlier versions of) Maneage, and some that have been recently
+submitted for peer review. The previous version of Maneage was called
+"Reproducible paper template", with a separate git tree. Maneage is
+evolving rapidly, so some details will differ between the different
+versions. The more recent papers will tend to be the most useful as good
+working examples.
+
+ - Roukema ([2020](https://arxiv.org/abs/2007.11779),
+ arXiv:2007.11779): The live version of the controlled source is [at
+ Codeberg](https://codeberg.org/boud/subpoisson); the main input
+ dataset, a software snapshot, the software tarballs, the project
+ outputs and editing history are available at
+ [zenodo.3951152](https://zenodo.org/record/3951152); and the
+ archived git history is also available at
+ [swh:1:dir:fcc9d6b111e319e51af88502fe6b233dc78d5166](https://archive.softwareheritage.org/swh:1:dir:fcc9d6b111e319e51af88502fe6b233dc78d5166).
- Akhlaghi et al. ([2020](https://arxiv.org/abs/2006.03018),
arXiv:2006.03018): The project's version controlled source is [on
@@ -678,7 +689,7 @@ First custom commit
$ ./project make
```
- 7. **Ingore changes in some Maneage files**: One of the main advantages of
+ 7. **Ignore changes in some Maneage files**: One of the main advantages of
Maneage is that you can later update your infra-structure by merging
your `master` branch with the `maneage` branch. This is good for many
low-level features that you will likely never modify yourself. But it
@@ -929,23 +940,29 @@ future.
- **Reserve a DOI for your dataset**: There are multiple data servers that
give this functionality, one of the most well known and (currently!)
well-funded is [Zenodo](https://zenodo.org) so we'll focus on it
- here. Ofcourse, you can use any other service that provides a similar
+ here. Of course, you can use any other service that provides a similar
functionality. Once you complete these steps, you can start using/citing
your dataset's DOI in the source of your project to finalize the rest of
- the points. Note that with Zenodo, you can even use the given identifier
+ the points. With Zenodo, you can even use the given identifier
for things like downloading.
- * *Start new upload*: After you log-in to Zenodo, you can start a new
+ * *Start new upload*: After you log in to Zenodo, you can start a new
upload by clicking on the "New Upload button".
* *Reserve DOI*: Under the "Basic information" --> "Digital Object
Identifier", click on the "Reserve DOI" button.
- * *Fill basic info*: You need to atleast fill the "required fields"
- (marked with a red star).
+ * *Fill basic info*: You need to at least fill in the "required fields"
+ (marked with a red star). You will always be able to change any
+ metadata (even after you "Publish"), so don't worry too much about
+ values in the fields, at this phase, its just important that they
+ are not empty.
- * *Save your upload*: You should now be able to press the "Save" button
- (at the top or bottom of the page) to finalize this step.
+ * *Save your project but do not yet publish*: Press the "Save" button
+ (at the top or bottom of the page). Do not yet press "Publish"
+ though, since that would make the project public, and freeze the DOI
+ with any possible file you may have uploaded already. We will get to
+ the publication phase in the next steps.
- **Request archival on SoftwareHeritage**: [Software
Heritage](https://archive.softwareheritage.org/save/) is an online
@@ -1170,6 +1187,15 @@ future.
are public). If not, you can mention that everything is ready for such a
submission after acceptance.
+ - **Future versions**: Both Zenodo and arXiv allow uploading new versions
+ after your first publication. So it is recommended to put more recent
+ versions of your published projects later (for example after applying
+ the changes suggested by the referee). In Zenodo (unlike arXiv), you
+ only need to publish a new version if the uploaded files have
+ changed. You can always update the project's metadata with no effect on
+ the DOI (so you don't need to upload a new version if you just want to
+ update the metadata).
+
diff --git a/README.md b/README.md
index a12770c..748a791 100644
--- a/README.md
+++ b/README.md
@@ -322,7 +322,11 @@ MB), not the full TeXLive collection!
5. **Configure the project:** With this line, the Docker image will
configure the project (build all its necessary software). This will
- usually take about an hour on an 8-core system.
+ usually take about an hour on an 8-core system. You can also optionally
+ avoid putting this step (and the next) in the `Dockerfile` and simply
+ execute them in the Docker image in interactive mode (as explained in
+ the sub-section below, in this case don't forget to preserve the build
+ container after you are done).
```shell
# Configure project (build full software environment).
@@ -404,6 +408,11 @@ docker commit XXXXXXX NEW-IMAGE-NAME
```
+
+
+
+
+
### Copyright information
This file and `.file-metadata` (a binary file, used by Metastore to store
diff --git a/project b/project
index b6f17bb..f696f26 100755
--- a/project
+++ b/project
@@ -71,6 +71,7 @@ print_help() {
# Print the output.
cat <<EOF
Usage: $scriptname configure [OPTIONS]
+ $scriptname shell [OPTIONS]
$scriptname make [OPTIONS]
Top-level script to manage the reproducible project. The high-level
@@ -151,7 +152,7 @@ func_operation_set() {
if [ x$operation = x ]; then
operation=$1
else
- echo "Only one operation ('configure' or 'make') may be given."
+ echo "Only one operation ('configure', 'make' or 'shell') may be given."
exit 1
fi
}
@@ -247,11 +248,62 @@ being built.
EOF
- # Run the infinite loop.
+ # Run the infinite loop. To be able to find the last built programs, we
+ # need to put all the Python programs and high-level program into one
+ # directory.
+ checkdir=.local/version-info/.for-check-config
while true; do
+
+ # Make sure the '.build' directory has already been created.
echo;
- echo "$(date) [[press CTRL-C to stop]]";
- ls $coloropt .build/software/build-tmp || junk=1;
+ echo "========================"
+ if [ -d .build ]; then
+ echo "$(date) [[press CTRL-C to stop]]";
+ echo "--- Currently being built:"
+ if [ -d .build/software/build-tmp ]; then
+ ls $coloropt .build/software/build-tmp || junk=1;
+ fi
+
+ # Make the temporary directory, delete its contents, then put new
+ # links of all built software.
+ if ! [ -d $checkdir ]; then mkdir $checkdir; fi
+ rm -f $checkdir/*
+
+ # Check if any programs exist in the given directory yet.
+ printresults=0
+ check=$(ls .local/version-info/python/)
+ if ! [ "x$check" = x ]; then
+ printresults=1
+ ln -s .local/version-info/python/* $checkdir/
+ fi
+ check=$(ls .local/version-info/proglib/)
+ if ! [ "x$check" = x ]; then
+ printresults=1
+ ln -s $(pwd)/.local/version-info/proglib/* $checkdir/
+ fi
+
+ # If something was actually found, then print them.
+ if [ $printresults = 1 ]; then
+ echo "--- Last 5 packages that were built:"
+
+ # Then sort all the links based on the most recent dates of the
+ # files they link to (with '-L').
+ ls -Llt $checkdir \
+ | awk '/^-/ && c++<5 {printf "[at %s] %s\n", $(NF-1), $NF}'
+ fi
+ else
+ cat <<EOF
+The connection to the build directory (.build) is not yet created.
+
+If you have just ran './project configure', it should be created and will
+be used in a few seconds to report the build status of various software.
+If not, please run './project configure' (in another terminal) and you will
+see the results shortly afterwards.
+EOF
+ fi
+ echo "========================"
+
+ # Wait for the next round of checks.
sleep 1;
done
exit 0
@@ -480,7 +532,7 @@ case $operation in
No operation defined!
Please run with '--help' for more information.
-(TIP: available operations are: 'configure' or 'make').
+(TIP: available operations are: 'configure', 'make', or 'shell').
EOF
exit 1
diff --git a/reproduce/analysis/config/INPUTS.conf b/reproduce/analysis/config/INPUTS.conf
index ee52abb..7d8bb50 100644
--- a/reproduce/analysis/config/INPUTS.conf
+++ b/reproduce/analysis/config/INPUTS.conf
@@ -5,30 +5,34 @@
#
# Necessary variables for each input dataset are listed below. Its good
# that all the variables of each file have the same base-name (in the
-# example below 'WFPC2') with descriptive suffixes, also put a short
-# comment above each group of variables for each dataset, shortly
-# explaining what it is.
+# example below 'DEMO') with descriptive suffixes, also put a short comment
+# above each group of variables for each dataset, shortly explaining what
+# it is.
#
-# 1) Local file name ('WFPC2IMAGE' below): this is the name of the dataset
+# 1) Local file name ('DEMO-DATA' below): this is the name of the dataset
# on the local system (in 'INDIR', given at configuration time). It is
# recommended that it be the same name as the online version of the
-# file like the case here (note how this variable is used in 'WFPC2URL'
+# file like the case here (note how this variable is used in 'DEMO-URL'
# for the dataset's full URL). However, this is not always possible, so
# the local and server filenames may be different. Ultimately, the file
# name is irrelevant, we check the integrity with the checksum.
#
-# 2) The MD5 checksum of the file ('WFPC2MD5' below): this is very
+# 2) The MD5 checksum of the file ('DEMO-MD5' below): this is very
# important for an automatic verification of the file. You can
-# calculate it by running 'md5sum' on your desired file.
+# calculate it by running 'md5sum' on your desired file. You can also
+# use any other checksum tool that you prefer, just be sure to correct
+# the respective command in 'reproduce/analysis/make/download.mk'.
#
-# 3) The human-readable size of the file ('WFPC2SIZE' below): this is an
-# optional feature which you can use for in the script that is loaded
-# at configure time ('reproduce/software/shell/configure.sh'). When
-# asking for the input-data directory, you can print some basic
-# information of the files for users to get a better feeling of the
-# volume. See that script for an example using this demo dataset.
+# 3) The human-readable size of the file ('DEMO-SIZE' below): this is an
+# optional variable, mainly to help a reader of your project get a
+# sense of the volume they need to download if they don't already have
+# the dataset. So it is highly recommended to add it (future readers of
+# your project's source will appreciate it!). You can get it from the
+# output of 'ls -lh' command on the file. Optionally you can use it in
+# messages during the configuration phase (when Maneage asks for the
+# input data directory), along with other info about the file(s).
#
-# 4) The full dataset URL ('WFPC2URL' below): this is the full URL
+# 4) The full dataset URL ('DEMO-URL' below): this is the full URL
# (including the file-name) that can be used to download the dataset
# when necessary. Also, see the description above on local filename.
#
@@ -39,6 +43,11 @@
# this notice are preserved. This file is offered as-is, without any
# warranty.
+
+
+
+
+# Dataset used in this analysis and its checksum for integrity checking.
MK20DATA = menke20.xlsx
MK20MD5 = 8e4eee64791f351fec58680126d558a0
MK20SIZE = 1.9MB
diff --git a/reproduce/analysis/make/download.mk b/reproduce/analysis/make/download.mk
index d5f8cef..fb3f21e 100644
--- a/reproduce/analysis/make/download.mk
+++ b/reproduce/analysis/make/download.mk
@@ -84,9 +84,11 @@ $(inputdatasets): $(indir)/%: | $(indir) $(lockdir)
sum=$$(md5sum $$unchecked | awk '{print $$1}')
if [ $$sum = $$mdf ]; then
mv $$unchecked $@
+ echo "Integrity confirmed, using $@ in this project."
else
echo; echo;
echo "Wrong MD5 checksum for input file '$$localname':"
+ echo " File location: $$unchecked"; \
echo " Expected MD5 checksum: $$mdf"; \
echo " Calculated MD5 checksum: $$sum"; \
echo; exit 1
diff --git a/reproduce/analysis/make/initialize.mk b/reproduce/analysis/make/initialize.mk
index 6b25f02..fbd110f 100644
--- a/reproduce/analysis/make/initialize.mk
+++ b/reproduce/analysis/make/initialize.mk
@@ -302,27 +302,47 @@ $(project-package-contents): paper.pdf | $(texdir)
sed -e's|\\newcommand{\\makepdf}{}|%\\newcommand{\\makepdf}{}|' \
paper.tex > $$dir/paper.tex
- # Build the top-level directories.
- mkdir $$dir/reproduce $$dir/tex $$dir/tex/tikz $$dir/tex/build
-
- # Copy all the necessary `reproduce' and `tex' contents.
+ # Copy ONLY the version-controlled files in 'reproduce' and
+ # 'tex/src'. This is important because files like 'LOCAL.conf' (in
+ # 'reproduce/software/config') should not be archived, they contain
+ # information about the host computer and are irrelevant for
+ # others. Also some project authors may have temporary files here
+ # that are not under version control and thus shouldn't be archived
+ # (although this is bad practice, but that is up to the user).
+ #
+ # To keep the sub-directory structure, we are packaging the files
+ # with Tar, piping it, and unpacking it in the archive
+ # directory. So afterwards we need to come back to the current
+ # directory.
+ tar -c -f - $$(git ls-files reproduce tex/src) \
+ | (cd $$dir ; tar -x -f -)
+ cd $(curdir)
+
+ # Build the other two subdirectories of 'tex/' that we need in the
+ # archive (in the actual project, these are symbolic links to the
+ # build directory).
+ mkdir $$dir/tex/tikz $$dir/tex/build
+
+ # Copy the 'tex/build' directory into the archive (excluding the
+ # temporary archive directory that we are now copying to). We will
+ # be using Bash's extended globbing ('extglob') for excluding this
+ # directory.
shopt -s extglob
- cp -r tex/src $$dir/tex/src
- cp -r tex/img $$dir/tex/img
- cp tex/tikz/*.eps $$dir/tex/tikz
- cp -r reproduce/* $$dir/reproduce
+ cp -r tex/img $$dir/tex/img
+ cp tex/tikz/*.eps $$dir/tex/tikz
cp -r tex/build/!($(project-package-name)) $$dir/tex/build
- # Clean up un-necessary/local files: 1) the $(texdir)/build*
- # directories (when building in a group structure, there will be
- # `build-user1', `build-user2' and etc), are just temporary LaTeX
- # build files and don't have any relevant/hand-written files in
- # them. 2) The `LOCAL.conf' and `gnuastro-local.conf' files just
- # have this machine's local settings and are irrelevant for anyone
- # else.
+ # Clean up the $(texdir)/build* directories in the archive (when
+ # building in a group structure, there will be `build-user1',
+ # `build-user2' and etc). These are just temporary LaTeX build
+ # files and don't have any relevant/hand-written files in them.
rm -rf $$dir/tex/build/build*
- rm $$dir/reproduce/software/config/LOCAL.conf
- rm $$dir/reproduce/analysis/config/gnuastro/gnuastro-local.conf
+
+ # If the project has any PDFs in its 'tex/tikz' directory (TiKZ or
+ # PGFPlots was used to generate them), copy them too.
+ if ls tex/tikz/*.pdf &> /dev/null; then
+ cp tex/tikz/*.pdf $$dir/tex/tikz
+ fi
# When submitting to places like arXiv, they will just run LaTeX
# once and won't run `biber'. So we need to also keep the `.bbl'
@@ -474,3 +494,14 @@ $(mtexdir)/initialize.tex: | $(mtexdir)
# Zenodo identifier (necessary for download link):
v=$$(echo $(metadata-doi-zenodo) | sed -e's/\./ /g' | awk '{print $$NF}')
echo "\newcommand{\projectzenodoid}{$$v}" >> $@
+
+ # Calculate the latest Maneage commit used to build this
+ # project:
+ # - The '--dirty' option (used in 'project-commit-hash') isn't
+ # applicable to "commit-ishes" (direct quote from Git's error
+ # message!).
+ # - The project may not have the 'maneage' branch (for example
+ # after cloning from a fork that didn't include it!). In this
+ # case, we'll just return the string a clear string.
+ v=$$(git describe --always --long maneage) || v=maneage-ref-missing
+ echo "\newcommand{\maneageversion}{$$v}" >> $@
diff --git a/reproduce/analysis/make/paper.mk b/reproduce/analysis/make/paper.mk
index 90d71c1..2c08847 100644
--- a/reproduce/analysis/make/paper.mk
+++ b/reproduce/analysis/make/paper.mk
@@ -115,7 +115,13 @@ $(texbdir)/paper.bbl: tex/src/references.tex $(mtexdir)/dependencies-bib.tex \
export TEXINPUTS=$$p:
cd $(texbdir);
- # Note: the option '-shell-escape' is "normally disallowed for
+ # Delete any possibly existing target (a '.bbl' file) to avoid
+ # complications with LaTeX being run before the command that
+ # generates it. Otherwise users will have to manually delete
+ # it. It will be built anyway once this rule is done.
+ rm -f $@
+
+ # The pdflatex option '-shell-escape' is "normally disallowed for
# security reasons" according to the `info pdflatex' manual, but
# is enabled here in order to allow the use of PGFPlots. If you
# do not use PGFPlots, then you should remove the `-shell-escape'
diff --git a/reproduce/analysis/make/verify.mk b/reproduce/analysis/make/verify.mk
index dd224d6..fe828dd 100644
--- a/reproduce/analysis/make/verify.mk
+++ b/reproduce/analysis/make/verify.mk
@@ -22,7 +22,7 @@
# Verification functions
# ----------------------
#
-# These functions are used by the final rule in this Makefil
+# These functions are used by the final rule in this Makefile
verify-print-error-start = \
echo; \
echo "VERIFICATION ERROR"; \
@@ -87,7 +87,7 @@ verify-txt-no-comments-no-space = \
# -------------------------------------------
#
# This is the FINAL analysis step (before going onto the paper. Please use
-# this step to veryify the contents of the figures/tables used in the paper
+# this step to verify the contents of the figures/tables used in the paper
# and the LaTeX macros generated from all your processing. It should depend
# on all the LaTeX macro files that are generated (their contents will be
# checked), and any files that go into the tables/figures of the paper
diff --git a/reproduce/software/config/checksums.conf b/reproduce/software/config/checksums.conf
index 62af1e1..b516a61 100644
--- a/reproduce/software/config/checksums.conf
+++ b/reproduce/software/config/checksums.conf
@@ -14,26 +14,26 @@
# Basic/low-level programs and libraires (installed in any case)
# --------------------------------------------------------------
-bash-checksum = a93f221fe800908e335584837f63d02a350d9c8b2711f1923e946980b960fb2d4a21e4321f722c70e5faf5554991a6b9ef6722d214a1921f71030896cf134639
-binutils-checksum = a5e1f77e985d7d66e3ec6ed62a51a61c82ed0964a5108a1f318bf717f3f2af4dcd018ec3a66c10d6dc7525bad801b118f468eca07b2502c836895f4091bbeed4
+bash-checksum = e210cd63ce1241636fbb14d1a105c83e9481a0312026f746f76f7115b777707170ddfe1840fb4d3a4093613048e2d1eedf926e843ad15ffc8d66f08525e8b04b
+binutils-checksum = 5ad795fab0803be83b53aa955fd5414c8408b4cf2a66eba2f8688298312934b4b1b0cbe9cf887d86de77f88adf1333d85fc9f6ab4a530e85a09b9b2dbf6aaf3f
bzip2-checksum = 00ace5438cfa0c577e5f578d8a808613187eff5217c35164ffe044fbafdfec9e98f4192c02a7d67e01e5a5ccced630583ad1003c37697219b0f147343a3fdd12
cert-checksum = a81dfa59c70788126a395c576e54cb8f61c1ea34da69b5cd42e2d83ee6426c2a26941360c7302793774ea98ca16846deb6e683144cc7fb6da6ef87b70447e4c8
-coreutils-checksum = ef8941dae845bbf5ae5838bc49e44554a766302930601aada6fa594e8088f0fbad74e481ee392ff89633e68b99e4da3f761fcb5d31ee3b233d540fe2a2d4e1af
-curl-checksum = df8fc6b2cccf100f7479e25cad743964a84066b587da19585b36a788b0041925e33944986d636a451d6bb95a452d5ac6812b2d5fa6631a10e0ac82a2c7821c75
+coreutils-checksum = 1c8f3584efd61b4b02e7ac5db8e103b63cfb2063432caaf1e64cb2dcc56d8c657d1133bbf10bd41468d6a1f31142e6caa81d16ae68fa3e6e84075c253613a145
+curl-checksum = 614f8d67e6ee942cb5e57f2da1a3faaf84ebff549ffe383aaf3751a4de3c8874ff482076afa27a52e910a137dec9b0f6e98265dc7d4ad7c95845b63f39236fd4
dash-checksum = 9d55090115ac04f505d70e6790179331178950f96fe713b33fd698fa8bfa60d4eff1b68cb7b8a2f099d29c587d36034a17dccd6658ba1623ff0a625ac1fb9620
diffutils-checksum = 7b12cf8aea1b9844773748f72272d9c6a38adae9c3c3a8c62048f91fb56c60b76035fa5f51665dceaf2cfbf1d1f4a3efdcc24bf47a5a16ff4350543314b12c9c
-file-checksum = 3ec5e51ffb7a82defa74845a90fbc983f6e169fc116606049bc01ff6e720d340c8abf6eb7a08b9ac1099162a5c02deac3633b07b039d486344c8abd9052ca751
+file-checksum = 9cf1a7b769c56eb6f5b25c66ce85fa1300128396e445b2e53dbbd8951e5da973a7a07c4ef9f7ebd1fe945d47bdaf2cd9ef09bd2be6c217a0bcb907d9449835e6
findutils-checksum = 650a24507f8f4ebff83ad28dd27daa4785b4038dcaadc4fe00823b976e848527074cce3f9ec34065b7f037436d2aa6e9ec099bc05d7472c29864ac2c69de7f2e
flock-checksum = ddb997174c0653bc3d29410a5a16b6290e737aa40fbf4b746e2d1db1e88e5acb08ec11a25c27c8a5a5fbf5a00fcac17abeaa245e7df27bd975ae86364d400b86
-gawk-checksum = 3734740b7406ddfec9e04bb7774e76c6446cba76642a6180266e7b1822de20aab824c29c4e417256d877762ef04ef3f9df855cd4a3ca414a9225323b49d79195
-gcc-checksum = a12dff52af876aee0fd89a8d09cdc455f35ec46845e154023202392adc164848faf8ee881b59b681b696e27c69fd143a214014db4214db62f9891a1c8365c040
-gettext-checksum = 08d20c659004a77e607af17df15f5ce9bd4fc0feca9436aa206b0cbd2516f9f0c98c7ee1faacf7ff429f9b0dd9de219947b300216887a60727602a688acabc82
-git-checksum = 5d92d07b171c5cd6e89a29c1211c73c1c900cd51c74d690aebfb4a3d0e93b541b09b42b6d6a1a82f5c3d953096771f9a8605c63be139f559f58698c1a0eabcfc
-gmp-checksum = 8aea94f867174eacac44f395ceb9212530c208e8de69d0bb53056f52360317230fc84ac177fd3ffc9fdb19a07c7549305dcc34c83c34821ccfab9dc63a16e67e
-grep-checksum = e4805dbddf7cd0f0faf412557d408509650c1ccf703bc450f10a3f727c690dbfaa1235aa81939a0e4b7ac6190f88c15ea1fcc562b343d4b4c7550f967aeb15db
+gawk-checksum = 682fadd3630d51d13d19443a9a93d4cba1bd6802dd078f1366f17f39d3fa5800f47037b103d742be9254475fdc251d90626f95a2e04b5ace117cfaecebca2281
+gcc-checksum = 42ae38928bd2e8183af445da34220964eb690b675b1892bbeb7cd5bb62be499011ec9a93397dba5e2fb681afadfc6f2767d03b9035b44ba9be807187ae6dc65e
+gettext-checksum = f3083af79341bfdc849118333c1598812c12bc225d998181694648187088050160deb4777c252f72a7158e914c2967416489bc6167ef8505664497f2fb94ecbf
+git-checksum = a6159c0a15e3c5f9603157d4010664a6d74e7d65b9fe97a03b36fac12607248ed57980d96565841e88eae343001c167222232737d3af812608c8db011941df1a
+gmp-checksum = 9975e8766e62a1d48c0b6d7bbdd2fccb5b22243819102ca6c8d91f0edd2d3a1cef21c526d647c2159bb29dd2a7dcbd0d621391b2e4b48662cf63a8e6749561cd
+grep-checksum = 0f1506bd19971fbdcb47a111277ca63e8ad045456f096980852fd0a61c860f29f4b369bbaaa5cbce4b0a81718e3e3274d9a078b491f2109baa9a02ce600ee206
gzip-checksum = 753fbcf5eb104bfc8a8eb81b69b8701f757b5158e6333b17438574169a4662642a122e1fdbd920a536edbcb77253d65fa571e4f507dbe72a70fee5eb161d6324
isl-checksum = 85d0b40f4dbf14cb99d17aa07048cdcab2dc3eb527d2fbb1e84c41b2de5f351025370e57448b63b2b8a8cf8a0843a089c3263f9baee1542d5c2e1cb37ed39d94
-libbsd-checksum = 435822b8f2495a5e2705e5ab5c834a4f0f3a177b3e5c46a7c6162924507ca984e957e94a512b5ebd0067ecb413bac458fade357709ef199e9b75edf0315de91c
+libbsd-checksum = b75529785b16c93d31401187f8a58258fbebe565dac071c8311775c913af989f62cd29d5ce2651af3ea6221cffd31cf04826577d3e546ab9ca14340f297777b9
libiconv-checksum = 365dac0b34b4255a0066e8033a8b3db4bdb94b9b57a9dca17ebf2d779139fe935caf51a465d17fd8ae229ec4b926f3f7025264f37243432075e5583925bb77b7
libtool-checksum = a6eef35f3cbccf2c9e2667f44a476ebc80ab888725eb768e91a3a6c33b8c931afc46eb23efaee76c8696d3e4eed74ab1c71157bcb924f38ee912c8a90a6521a4
libunistring-checksum = 01dcab6e05ea4c33572bf96cc0558bcffbfc0e62fc86410cef06c1597a0073d5750525fe2dee4fdb39c9bd704557fcbab864f9645958108a2e07950bc539fe54
@@ -44,20 +44,20 @@ make-checksum = ddf0fdcb9ee1b182ef294c5da70c1275288c99bef60e63a25c0abed2ddd44aba
metastore-checksum = b2a5fdde9de5ddc1e6c368d5da1b2e97e4fdbaa138a7be281ccb40a81dd4a9bb1849d36b2d5d3f01205079bace60441f82a7002097ff3a7037340a35b0f1574a
mpc-checksum = 72d657958b07c7812dc9c7cbae093118ce0e454c68a585bfb0e2fa559f1bf7c5f49b93906f580ab3f1073e5b595d23c6494d4d76b765d16dde857a18dd239628
mpfr-checksum = d583555d08863bf36c89b289ae26bae353d9a31f08ee3894520992d2c26e5683c4c9c193d7ad139632f71c0a476d85ea76182702a98bf08dde7b6f65a54f8b88
-ncurses-checksum = e308af43f8b7e01e98a55f4f6c4ee4d1c39ce09d95399fa555b3f0cdf5fd0db0f4c4d820b4af78a63f6cf6d8627587114a40af48cfc066134b600520808a77ee
+ncurses-checksum = 4c1333dcc30e858e8a9525d4b9aefb60000cfc727bc4a1062bace06ffc4639ad9f6e54f6bdda0e3a0e5ea14de995f96b52b3327d9ec633608792c99a1e8d840d
openssl-checksum = 1523985ba90f38aa91aa6c2d57652f4e243cb2a095ce6336bf34b39b5a9b5b876804299a6825c758b65990e57948da532cca761aa12b10958c97478d04dd6d34
patchelf-checksum = 39745662651cf0a9915685b2767a611ceab4286f8fa57eace342b3f44248431616e8563d4ac6709c97d8534229c73c05470239e462b7e74b36bf629a876dfbad
-perl-checksum = b0db58699dfbe1bab10a7b0472cc377ed215668c89d13c7ca693e6b75ab6a6593a9cf137adbd6096063ee8200d83b389e745bb96b7c6bf4cf4588ac587a446ae
+perl-checksum = b00f3482f6961be043349a09445227e99472a8ae804919bfa0641de5bbd683249deb607f3b5c6c44ccfcf916408eac125132f9660191d574de0a9d1f17892bc1
pkgconfig-checksum = 4861ec6428fead416f5cbbbb0bbad10b9152967e481d4b0ff2eb396a9f297f552984c9bb72f6864a37dcd8fca1d9ccceda3ef18d8f121938dbe4fdf2b870fe75
readline-checksum = 41759d27bc3a258fefd7f4ff3277fa6ab9c21abb7b160e1a75aa8eba547bd90b288514e76264bd94fb0172da8a4faa54aab2c07b68a0356918ecf7f1969e866f
-sed-checksum = e0be5db4cdf8226b34aaa9071bc5ae0eafde1c52227cee3512eea7fe2520d6c5cebf15266aa5c4adffbb51bf125c140a15644e28d57759893c12823ea9bbf4fb
+sed-checksum = 7de25d9bc2981c63321c2223f3fbcab61d7b0df4fcf7d4394b72400b91993e1288d8bf53948ed5fffcf5a98c75265726a68ad4fb98e1d571bf768603a108c1c8
tar-checksum = 4be18afeac54aec4af074cf2358cfade5aaebe2041c5075c5764a81114df4d002e90b28f4444bd1430783e7d6bed82abd0440ef5cb244695f2e56a9a41b42fbc
-texinfo-checksum = 96e0764d0808152d3662e65c3287fb0f86ed918912cdc036380637dbadaacd6a489b516543c07b08105686575e8d495a945f73e23ff0909d5a0f12026e4131e0
+texinfo-checksum = da55a0d0a760914386393c5e8e864540265d8550dc576f784781a6d72501918e8afce716ff343e5c2a0ce09cf921bfaf0a48ecb49f6182a7d10e920ae3ea17e7
unzip-checksum = 0694e403ebc57b37218e00ec1a406cae5cc9c5b52b6798e0d4590840b6cdbf9ddc0d9471f67af783e960f8fa2e620394d51384257dca23d06bcd90224a80ce5d
valgrind-checksum = 5695d1355226fb63b0c80809ed43bb077b6eed4d427792d9d7ed944c38b557a84fe3c783517b921e32f161228e10e4625bea0550faa4685872bb4454450cfa7f
wget-checksum = 95fb064f0d79b0a3178a83322f58a85a3a036fb300ed759eb67a538f0bbacdd552f6cbeb60d63b4f0113e8467d923a5ce7ac5570b7a4ce1733b3dfd559bb33b2
which-checksum = d2f04a5c5291f2d7d1226982da7cf999d36cfe24d3f7bda145508efcfb359511251d3c68b860c0ddcedd66b15a0587b648a35ab6d1f173707565305c506dfc61
-xz-checksum = e5bf6eb88365d2dbdc774db49261fb9fae0544ed297891fc20f1ed223f4072cb0357cbd98146ac35b6d29410a12b6739bbd111cd57d4a225bef255ed46988578
+xz-checksum = 7443674247deda2935220fbc4dfc7665e5bb5a260be8ad858c8bd7d7b9f0f868f04ea45e62eb17c0a5e6a2de7c7500ad2d201e2d668c48ca29bd9eea5a73a3ce
zip-checksum = c1c3d62bf1426476c0f9919b568013d6d7b03514912035f09ee283226d94c978791ad2af5310021e96c4c2bf320bfc9d0b8f4045c48e4667e034d98197e1a9b3
zlib-checksum = 73fd3fff4adeccd4894084c15ddac89890cd10ef105dd5e1835e1e9bbb6a49ff229713bd197d203edfa17c2727700fce65a2a235f07568212d820dca88b528ae
@@ -75,26 +75,26 @@ zlib-checksum = 73fd3fff4adeccd4894084c15ddac89890cd10ef105dd5e1835e1e9bbb6a49ff
apachelog4cxx-checksum = aa59ce549c2c5cbeec031361dfce09cdfc3e62ee3bc9ecbc809507b7ec878c14409b98536b7d13c27690809c8e9d5ebafc3589c9fb5e4aecd5cc064943ae7d6b
apr-checksum = daa140c83c7e2c45c3980d9dc81d34fa662bebd050653562c39572d0ddf2eaedb71767c518a59d77f59db9b32e00221ef48b9f72ec3666c4521dd511969f3706
apr-util-checksum = 84da76e9b64da2de0996d4d6f3ab3f23db3724eb6352d218e0e8196bcc0b0a5d4fe791f41b4cc350ce3d04cce3bb3cf8bfb513d777d0cd030928368e6b55a536
-astrometrynet-checksum = 35c268bf0a7068e01323b9bfccdf255c993df83c24b2e6026a00084c4ab87d031f1024205d0ed3aecc7e2a495d4bc0b0e67270d66679020b7cc2e4b2f30f5c4a
+astrometrynet-checksum = 1ee3a3490fb687dc580e660a05ec21dc65972e6c1c97b9a5f648b9e4ac39bbb6b783b351d9b3fd8a4721ce01bb891166c18809f24144f6fc0d436955f0bc435e
atlas-checksum = bf17306f09f2aa973cb776e2c9eacfb2409ad4d95d19802e1c4e0597d0a099fccdb5eaafe273c2682a41e41a3c6fabc8bbba4ce03180cffea40ede5df1d1f56e
autoconf-checksum = c25e834251bfc2befe822614caf1c80d7e1314a83e7173304abc235fd15a958b8db9fbc801e8ad98328dfd6d9dbc425bfbbefec500fa268992ae7bbf4fa5bc35
-automake-checksum = 47b0120a59e3e020529a6ce750297d7de1156fd2be38db5d101e50120f11b40c28741ecd5eacf2790a9e25386713dcf7717339cfa5d7943d0dbf47c417383448
-bison-checksum = 968bbcfd1dffd10fb46ea4b3d49486d31b605f79ca88b8e2aa45fbafdb2fca3e1b0ac38564a9101681c8831cf423ea6a366f55d9497d21c05ddb3c7d66acb042
+automake-checksum = 8bd5b1d698eeb1d969ca0a32184ad46014b3ec334e3b8a0caf0e462ea5e100fe4ccaa7dcc2224c5db6c87e215d594593db0bf4431649186afb821b0a711c1a82
+bison-checksum = 8763e7b08fbcdeea3200fcb8d65a2589a12b17988d088ace58d19ea09e44d32e73a34ab1d6c4a2106e7147149997aaeabaada22b07159a5a0055cf60a9db162b
boost-checksum = 2844dddd3357e76909f2f3d008f686949f8b54aed29e1c650e18becd0b50701a273bb3754f1a4e56c0c056693b27c354c9ba54ddbec92599e192c2f6736fe3be
cairo-checksum = 9eb27c4cf01c0b8b56f2e15e651f6d4e52c99d0005875546405b64f1132aed12fbf84727273f493d84056a13105e065009d89e94a8bfaf2be2649e232b82377f
cdsclient-checksum = 2d7abf0079189b9dd19cb8919061445fd19ea9f7dfd54e8ceee26b743218cf62ab00eba0147abe82d9294223927f04b4cc3328620dfc9184a7049f8d515b29e4
-cfitsio-checksum = c0502699e266928dd25abe57730dc4b357ccc9023789fe745324ae01aa688516aceaf37321ee578f0430111d9718f0fec0dc5b54c07f935529560f00b32ce1e3
-cmake-checksum = f09440681e0c414f5ca669f3aeba6666d09e0642f30a2e12c3199e7fb3da95a7dd17994fc54475c49638c37f0502ea0a2d8da0f9098805f11088ba7b299bf72a
+cfitsio-checksum = 08a13931726b0ee15bd4e2ad6dd4debb8268f3b0bc33adadec5c6a29295dd536bcccb3cc949721c6cebac6f43b6118e5e38332ac0ba8a07a43553416d8debae5
+cmake-checksum = e0591d5fb234f3e7b74d6d2aad44fbf3e19e69547bd428681ba6ad0461d4f3d2a154605808b4733531d2c66f0e91eb39a179ae0d89a37e92a3f20e9cae691468
eigen-checksum = 34cf600914cce719d61511577ef9cd26fbdcb7a6fad1d0ab8396f98b887fac6a5577d3967e84a8f56225cc50de38f3b91f34f447d14312028383e32b34ea1972
expat-checksum = 514ff2ef3c93af0b1715b7a08732db33c13a113c4c72422716a22ee26c09235deed71ec55510cee24c33bcd6b2347602bd71ce70a432d5583fb63765ff9e0e09
fftw-checksum = ab918b742a7c7dcb56390a0a0014f517a6dff9a2e4b4591060deeb2c652bf3c6868aa74559a422a276b853289b4b701bdcbd3d4d8c08943acf29167a7be81a38
flex-checksum = b4ef58d4a1d66b213e2f59df06959decf46d26b253cdc3f51cd26e2e2b505461ef23dafa974dd2005b1f0cafa5a83fe9258baf78004b2fdae6dfc299bc17bfd1
-freetype-checksum = 02f0f4211f9cee5b5e46ebe61190482fca5b41bc26be06fcf0d2d717e9fb119229308398c420eeea476fa2511ca2d52948f1a3242efad30ca82ed0b07cd50e3a
-gdb-checksum = b4161df5adfce3eb51b3b3fc6072b2ef9f612f5e0f95b25bc57382812854836e9d1b24807c68cc8987e37e90112c6d75ffc1de3ea67a9f92858b4ce1af85c479
-ghostscript-checksum = acee64fae78771bffa19b0b2bfaba3c345b420f93ceb4fc9df5fb705f785c8ed720fde2aef53546fac6aca2f7366c64c68a6e373a71999a42dc71aadc9aa782f
+freetype-checksum = cbb1b6bb7f99f6ecb473ce6027ec5f2868af939f793dd7b083b23e9823e18c4bcbac0b92483ebe70804ad7f4ef5bf4ea5c6b476e7f631a3e6a1b3e904a41e1a5
+gdb-checksum = 0ccd3a2a24963c848976848ba890f99a458569ff10da4d2bb6dd4782852662ab2df7fb9b3525dd4fd04f95070cea07e1bae6dbe2969e321cbb4004a033845d1c
+ghostscript-checksum = 32fb2a3d4e81ac9e281202aaed2f7811e80c939cbce3ffef7ec7cf78213e5da8a2f6c13d15f0c6c8fd24566579ba8b69364d4c66f4e4b7851f6df9209d0ff046
ghostscript-fonts-gnu-checksum = 222cb81e6956d9724e746f5f4d5c7b47b04bfd75b889f437f946c29a5bf16b5ed57b7584cf7fb0d8561287ef9f2e1ac53e4d231b6eaf23cba2612b47e8a5f919
ghostscript-fonts-std-checksum = d4fe6b097a3bdd9694dc704a2d986e22d649fbb7ca8302f872dff573525596a3f38246bd6dd166a5970a4fbca8cce6ebfb9a7030806b4662630afdf243438e1f
-gnuastro-checksum = 718b391cc59e8f6b57afc963fb27161ecc9f32b18dcef1cf9c24c88f61d264d8d1154e59a74c36f6ac3a970e1a6f77eee288ec881899beb57e51cc55b56c089b
+gnuastro-checksum = e236814001c1740355cfb1490926c667d14c026c8e93249afb25c1fc934a8ef8c52178276b7ab5cdbeb819117f962a4c7f65df74f0fc35bf512388cbe3b26d39
gperf-checksum = 855ebce5ff36753238a44f14c95be7afdc3990b085960345ca2caf1a2db884f7db74d406ce9eec2f4a52abb8a063d4ed000a36b317c9a353ef4e25e2cca9a3f4
gsl-checksum = 0be8240715f0b86aba2c63d9f12da4dba4719d4e350e9308d279e0dd3b2f0519ea26fd2e38a17f3e8cf43aacbaa2455207a7ca0d6c305f3b8725e8ece2250a74
hdf5-checksum = f828ee9d63533effe1ad358230e5ce7b64c5016e49291d9533575f713cbfba496290fc0151fd9617898bdf36785984ddb38a9207f529d7702d4e23838fe050d8
@@ -104,8 +104,8 @@ imagemagick-checksum = ad4325df57769f9c4edf8ac71370cb9bb19e090e588d47eb0311e3f48
imfit-checksum = 15edd2349232c1c8e611b31d3a46b0700112d274515f54d0a0085bb4bfa6d3d5f8a15cd926516e043a29ce841accf3534ae58dbfb952d858dc9445199c957096
lapack-checksum = 17786cb7306fccdc9b4a242de7f64fc261ebe6a10b6ec55f519deb4cb673cb137e8742aa5698fd2dc52f1cd56d3bd116af3f593a01dcf6770c4dcc86c50b2a7f
libffi-checksum = 980ca30a8d76f963fca722432b1fe5af77d7a4e4d2eac5144fbc5374d4c596609a293440573f4294207e1bdd9fda80ad1e1cafb2ffb543df5a275bc3bd546483
-libidn-checksum = 782260f73b1fd8ebea8a40e2b3a6866c4f67494b2b3df03748daa9c0f842a9578932e746eb4bbf2547fccb1d65d7fc99a7977759dbe58f87f2fdd26d0fe45a09
-libgit2-checksum = 0879c162e2e1dc00eadfbda22cd1f9d3a95b4ec2b653c108983f37c2f695140882de4d50d7cbc04ced247125a4e9fe6df16130e1267891aecdb2411d920db5c6
+libidn-checksum = 0d66e10bf7a8de4b27f692a427d2c8e901b8bed73b0a36268d8f939205df81f6a30f0634fd3b87370d4e81c1327c0b10391fa122a0a5459c32a3541b8a2149ad
+libgit2-checksum = 7c307822b22e3771e5e908b115600310f7901b3250287532c498003b25a5b1e007bfa23592f16ec4d83c1567a9213710526f78cab7c120316e9a8fc74c5e57a9
libjpeg-checksum = 74ea5af3545657d4ac03f8f7933913112cc2d982f0e379d0e5647f1acac21931468e53806297c30ebe180c7bcf84919a0ac20a4195afb03db03060d57904ef6c
libnsl-checksum = a3c8f674357674b7ed4b26c05adde607f39be8d6dc9ff715448e1fcc5fc23d11fbb4ce85a6e493b79bdb0bb450dc3ffb1fb480715779f738d7bc016fae91621d
libpaper-checksum = 3bf6ebb0af89931d2f72ea4a09a7fa958b2facda5f238983ec7bac39652e08614b33f0de3af74a03457b2a4203eee4950bf18a4b726e79aa64093ace6a1fb0bc
@@ -115,13 +115,13 @@ libtirpc-checksum = bcb6b5c062c1301aa1246ec93ae0a5c1d221b8421126d020863517cb814b
missfits-checksum = 32727f5eb30573a1cedacb8900e2536867e4815059eee32e64e3db65be9291b8a91b9f45b2c9f3cf6fc2a8cc448012ea3d502bdd9dee516008e17d5086aee795
netpbm-checksum = 064720f8a9d0a502488e1af4daecdbf3936910996507ca6f311073a0ad842346692a148eb1ddf7b717f7b108f60500246cb4b83f4d3665f5fc285a84ae1d63d6
openblas-checksum = 64a5f983b2f6e02cdb6e0f14433498cc5daa1ccfb49246f7a2dcd38f9982fa608f2abea069fe0e35012af8c1441c43d1f6418eaccd40795f5002fed1c36ce05d
-openmpi-checksum = 760716974cb6b25ad820184622e1ee7926bc6fda87db6b574f76792bc1ca99522e52195866c14b7cb2df5a4981efdaf9f71d2c5533cc0e8e45c2c4b3b74cbacc
+openmpi-checksum = aea02a66dc67820c86172fae80f5aa4c71e918525abbfaf06df8ba6898ff78ec3b0ef9638952b2c1d1a9c878fc0999d6f6d06e840679a68779d6b81f0336eb76
openssh-checksum = e280fa2d56f550efd37c5d2477670326261aa8b94d991f9eb17aad90e0c6c9c939efa90fe87d33260d0f709485cb05c379f0fd1bd44fc0d5190298b6398c9982
patch-checksum = 75d4e1544484da12185418cd4a1571994398140a91ac606fa08dd067004187dad77d1413f0eb3319b3fe4df076714615c98b29df06af052bb65960fa8b0c86bf
pcre-checksum = abac4c4f9df9e61d7d7761a9c50843882611752e1df0842a54318f358c28f5953025eba2d78997d21ee690756b56cc9f1c04a5ed591dd60654cc78ba16d9ecfb
pixman-checksum = 1b0205dbe9d9185c68813ce577a889f3c83e83fbd9955c3a72d411c3b476e6be93fc246b5b6ef4ee17e2bb8eb6fb5559e01dff7feb6a6c4c6314f980e960d690
-python-checksum = c25a72ad792f7c1b4c2f79faebbe9608d04b04b2fe58ab804cb4732cdaa75ea93d175f5e52b38e91cb6ae0559ea6b645d802c8b6a869584e8bb9b5018367ce3d
-R-checksum = 17513e9f4dd27c61c11f7aa45227aeeeefb375bf5d4e193b471724f379a1b2da33e127cbe91aa175cbbbb048b892047e2f610280585c8159242a6c94790b07f9
+python-checksum = 392459354b8438f76670ec2086b4618ee21f615ca4b22e5dbb366273665a470de5047a3f241925a62b60bf3cddde5984a05144a55d0c5ced43342f5b94576952
+R-checksum = b7330613ee9795f54cde3dd9f7509be83d9156fb8577c17179727ee01450db27704249f68bd48e0331e2df09c2d9833d8bb019c4f9ce9ba669df74650ff2e842
rpcsvc-proto-checksum = c3011d7d7ef97a4a751f6921df1a23e1dd8ac50fb0690c759d37010ed7be27968a2130e3b8872cb48d5914216f9d539096a424f1ec38a75f7ed899748151c6f4
scamp-checksum = 35034a367d2cd09dc51e727e0f23ef6234edc0d978fd71cda1e80391d86af160138cb57281f7f7f9047e35b1246a0de6b235414086a62524413ed423f498583f
scons-checksum = 0477038b014674049f12899b64584d44a85283d521b2422561e42020a5ae296a5af005684087c3ff410ed3fcbdcc5ff61998bc429eb29513f2a864138ffc4945
@@ -130,9 +130,9 @@ swarp-checksum = 80f4ade59738df3d4c9b47bda04148b53c6ba995d523fa8d1e02fb5d952b607
swig-checksum = 5eaa2e06d8e4197fd02194051db1e518325dbb074a4c55a91099ad9c55193874f577764afc9029409a41bd520a95154095f26e33ef5add5c102bb2c1d98d33eb
tides-checksum = c3360ff0d023b43749ba09a33302ca059f017a157b3ce7cdcf4f1a1578e90d3e7fa420077043adbee6b1ebf94bd698c8d6b279012f36d2a05b4de5351e30e108
util-linux-checksum = c95d26b9037d6b877a247e6aeb58d17aa80f7e1bd6b523a4e0fde559fe07b3d924ece6d373300fefb65d1f206b3f990aeddb3a03605040e72ce6d6ee88591021
-wcslib-checksum = fed47771defb2a93fb50aa2e701c46f8ce35773dd3de91eeaed311b5a0474c096c7f9be6996fe95f82faa30b1d5c0aba892bca5da80bc32b15919dfaf551aeb7
+wcslib-checksum = 8c98c4b575056e2d966b77a4bc951256d02ecee3a11847e140fd38d93afd0f76b3e906d590c952dc9fc58ceeb1ba062b19d8e1e676ee0032f5b7ed13a9dfa892
xlsxio-checksum = 22870fda7bd4eefd5fea2a9ad7530c9049135129d9b69805091777e6b54b2fc6c3f0e69c6954f36bce54eebbfeccaf637cce9e271a593221a4296d6632470a6c
-yaml-checksum = 13d2197135946204323dbfccafa0ac7b3d05437e920545a56f46811fd7319c01419a58083090ce85fccd4d6901a620ceb9f1190078cc0830bc0ce769bb024f51
+yaml-checksum = dadd7d8e0d88b5ebab005e5d521d56d541580198aa497370966b98c904586e642a1cd4f3881094eb57624f218d50db77417bbfd0ffdce50340f011e35e8c4c02
zlib-checksum = 73fd3fff4adeccd4894084c15ddac89890cd10ef105dd5e1835e1e9bbb6a49ff229713bd197d203edfa17c2727700fce65a2a235f07568212d820dca88b528ae
# Xorg related packages
@@ -170,7 +170,7 @@ chardet-checksum = 61a03b23447a2bfe52ceed4dd1b9afdb5784da1933a623776883ee9f297e3
corner-checksum = ebd625ab1e4591b4c21d25ec706c35d37f560b727e1e0d6a79948c4a112ee6f21d3ca30162901a27715074e1345f3bdee1a0345c63e5fec24113e495fb094127
cryptography-checksum = f14319e24d9dca52e74548cada5b78a6235f089ef875dbff4799e862f94da8b087f1b6e03e84dcef9fc7d7693c4a349c5f0cd54b8535806da777420ce8757d39
cycler-checksum = b7d2ba19861ffaf4dea0444bfe68b5a6264a022d7b3f02c9ff5e5859e3901de12a90f8dc7469e995e09c418515b3df55dbf05a0cfe5368d40790a2c878a74819
-cython-checksum = bb8095b438a7d2567b8b831628fbb32c02299c866e41113da62fb5a5d4982dc0df947a9f723a82c52086806435d8f3518e78a803166149d476f81e042a12494e
+cython-checksum = 6216e63996e83b887cdcee6cd912d42e7da853640336b9190f5115d687848a902ee5a8edd6bfaef645c066b89e17dcd80ca1387688eb80a527ec23a0a4636e8f
eigency-checksum = 1e7cdfc43071da5edba30a0d32cd655442b516f15c166b049a195d151dec8c20a2177ad69bed3bba4788a668fa25a4c551ef4990717ff98d5b2f407bffb214c8
emcee-checksum = dd60aace8879525fd3fe42b747d82170b24b2ed21f538f9186ba96b9d04c084812e3303f5d2e04119dabd2f9d3286d510b4d4a5324c71dd24b1c7e5f0a9a0ac6
entrypoints-checksum = aa1274362d3a4b00266103319ca51aa266605b4999c89a9d0673eb61bfae9e646cb0ec6b86c95544493f6fe048385a2c7641d64adca8f45815546fb1e663c858
@@ -178,7 +178,7 @@ esutil-checksum = c1cf8e7912b16dc675fdc7195ecc2bbffcd156c1257b2df45afdf09cc487c4
flake8-checksum = a25076bb7f978ca23af0f2016b30bf5fe4680371b4c0939361a6f8c496f3c846cf98ecadee35fc2dedd588116c8cd982529972dd2411ab139621912b69132a1e
future-checksum = c70565a660cf87c5e7e994bae0d4eb0b2b8b607ecb5ce65521c027bf0a39ce5699f0578413bd3c7edd5d01aeb1617de48dcea098a9e9021d8487a73007573030
galsim-checksum = 11ecbfb9628cf85a4c25024c6f3a34bbdadf522f64e4e93e6428b545c65a48906a05eb7774d0faaacf52a48dddfd599bfc7cc7252ca854a18c3930f116533a3c
-h5py-checksum = 73b1f59e3e2b3eceebf7b97e49bd8f5199afafd7ef29917af05ff8415c2f2129a5c59db9658944370c9bcf8fc04ab26948ee27fc6fd948a22d19cace1ce8c853
+h5py-checksum = c49b04f7dcddf03f36d4f063d79ecbe544e0b1daee432d4a76cfa83dac3a1f2cb144f40a74fb85ea17cb5b778f57f709969ea5d1a2afc5bdd5aecbc9d732898d
healpy-checksum = installed-with-healpix
html5lib-checksum = 35939b4450893864da04e735ee5e0addacf1dd34bae6a6909c76572abf6bfded446a78a713dfde91c1485ba45867d7abeb6a45cf0545c16ea968707be7de5dd2
idna-checksum = 8ca5cfe6350c51250bafdac7c6e4ddd54c4a5d6bf7acbcef896760a759868c8e9df1fdf550121d8512fa3eb316dcf031ec6058e03b4f66eadee21b63e2187d33
@@ -187,13 +187,13 @@ keyring-checksum = 3863f2cd89131d7e927e55691b4eb4b7c2599af189525293d0948aef5215e
kiwisolver-checksum = 80ed3d7429a2ed4944aa09766bebac2709a3a0e0a184ff414f04bf3c7ec3034ea7d0f70dff319922b870dedaf13d64fc87eff86a82e720ec93a2510885ad738d
lmfit-checksum = 8435328fd8baf92b424299c341aafb995dc45245e17b1774e9eaabdd994dd6ec3b2e70f7506d67b587631cebd2dc584fcd1a9902286925a61e2135b7e11ece21
lsstdesccoord-checksum = a66b8b702cd8122f0c8aee05abe0fc0c6299f8bdb99b151f54bd7ad7430d6bc9f843f7294a7f08f3ce9f8606ea0ced0796a63b79cc8a53ae73068b691e2e6871
-matplotlib-checksum = d44729028b91523c7ed2659e7ce7e9c2022ff322c3804e1ca16c9f64038f21d63ebf74a4da4239605cfb9c65729bf519360ac7f2a25dc70daa6fdcfa9c610c31
-mpi4py-checksum = 0a18332fd45e8e80b8dab0761fbaa30444a0d55776af7a2333be17ade827e92d04ac5bb8619ce26937142f344f75de0e5ef6dcb7502f33389716aa9482ddf5ab
+matplotlib-checksum = 2ffd9e79e300a37092ab4b5a7156c2f57e408975818abd413c74477ad622030c7636695467aab821c9996564cddec57e26ba6a8004f6639070964fcb7a510a75
+mpi4py-checksum = 041768f753c8188b2560fe92711861780f0d77eda3281433520c98bb1e9b4da6a89c364f2d1c4623868ffbbcfde34ef556198b1bef6fc1c4a9c19cd5e71b546c
mpmath-checksum = 58c69a801f65d73cc0eeb0d2c79277ed638568c656e7213d06ab4709c218aac908b2752377139010bed0e91bbfff01d129c60835ff0a928ba1185aded6de7c0a
-numpy-checksum = 3f7691de2b3c5423b9bf55f51ba961bf9931b13c59da80f406a1b50fcf1aa4174db948eb7e450c851c98eb7406f8b7da373df48fb07b0e577638360affad40ee
+numpy-checksum = ddc5f5e262d6f7f6e1a8879165860427baa237b6aad5b09d5b943a36bb0d5922424aac4c0e32a2cc3e14087bf6eb671988b6ff6df0d9ab8c89724e093220eead
pexpect-checksum = 4cea4229332c1f3de26dfcad596877665b3c02e91d51ca3c45c1f9b44462adb7c82abc7b76eb09a73822c2d1ccc9d812574cf79bf6bc8fb0b7d2f1093962cc3f
pip-checksum = c6e13da3a57462371d32982c80575c5181592f5c6a8e70d60ec879e689442f4ad468e7aef97eb58c9da50a5a770385aa35e701eefd713a8e9fafeb12e11d956b
-pybind11-checksum = 97b6ffb38dbda8021e8265c2052df65785d532dbcd94a2b711306f806eab1a9e2aaf31ea466f13eb5784856ac69e0f4c1dc6d742aa70e5a10ce9ce338e5e9d84
+pybind11-checksum = a863b92a03a23395ba67f6e4916c479ba800060e89a6d80e586533a23603df111b5cba9fd03b3ed500956169edfd8cb1b32a0bc05c42f928740beeea5bd63352
pycodestyle-checksum = 84e751a7d00048393b02ca743de5d71d1641e948ee1b4daebbdf2d07e0cd8f087ca4e81f826061114b40ef41920bbcd680c9f479e7cc1a159a70188425717208
pycparser-checksum = 7f830e1c9066ee2d297a55e2bf6db4bf6447b6d9da0145d11a88c3bb98505755fb7986eafa6e06ae0b7680838f5e5d6a6d188245ca5ad45c2a727587bac93ab5
pyflakes-checksum = 7ebf5843b38146305c1063e070480fea8ec3b47fa1be546b1fafaeb242a688a5a001f978e7257fd71d5905b9a338b466ef17c7330725191587e9c40ba632c3f8
@@ -202,7 +202,7 @@ pypkgconfig-checksum = 1fd9aa973bd20a8fab864722598f1d19b94c23c7f2b522556b3182b19
python-dateutil-checksum = ec7da86203572582f883a4686acf8a732a2de4f396d809057eb51b2c60dbca5623a7fa90c2c0618c281a2282c60841739bd837731a51cc876f4ff369297f2f81
pyyaml-checksum = 8f27f92bdfa310a99dd6d83947332cc033fa18f0011998bb585ad5c4340a2da20d8c20bfdb53beaae15651198d1240c986818379b0a05b230f74d1f30f53e7fd
requests-checksum = 385e1d80993a21c09e7c4682500ca8c24155962ba41ecd8e73612722b2ff6618b736e827fc48ad1683b0d2bc7a420cfe680f5107860aca52656ef777f1d60104
-scipy-checksum = 672915da782f5a439a3920ad1a200937b8415aeb4f1db2451cf0b5a90ba6e18c69e17e9ff8433f6a7760bbef2434d7b0f6447319faec9bb96fa6841794bfa538
+scipy-checksum = 45463df30a0f6270d9f4cf52235f31607904a6ae1375e12600e7f1ab2d27b1dc25a6211b49dceb71506be22c756890adaf9f81d9e6be7455def86c9caf0dc923
secretstorage-checksum = 295e0f75c772edf153480730dc20051f06e60e040a18f169620cb4aaa37b8c1a254a496464d3794a38cf49fa884a7b561fe364816f0d12a5b2622c77259f03cf
setuptools-checksum = 1bed75e7173ea0399f078c96cf5c1818dada7a4b86a93e61ff72da6a25694e321b9047e024617aa775b71a25fe8cb0848323902e1fb9c8c8a1f39434f0de6434
setuptools_scm-checksum = 196d4785a1802875d89b9e54ae788e791a9c5cb685109784059955b691242984e42b96d77075116790935f56be82259bc2588d95d65ecbb101261d76daddb83c
diff --git a/reproduce/software/config/urls.conf b/reproduce/software/config/urls.conf
index 945537d..34c4d89 100644
--- a/reproduce/software/config/urls.conf
+++ b/reproduce/software/config/urls.conf
@@ -16,8 +16,8 @@
# Basic/low-level programs and libraires (installed in any case)
-# --------------------------------------------------------------
-#bash-url = http://akhlaghi.org/maneage-software
+# -------------------------------------------------------------
+#bash-url = http://akhlaghi.org/src
#binutils-url = http://ftp.gnu.org/gnu/binutils
#bzip2-url = http://akhlaghi.org/maneage-software
#cert-url = http://akhlaghi.org/maneage-software
@@ -86,7 +86,7 @@
#cairo-url = https://www.cairographics.org/releases
#cdsclient-url = http://cdsarc.u-strasbg.fr/ftp/pub/sw
#cfitsio-url = https://heasarc.gsfc.nasa.gov/FTP/software/fitsio/c
-#cmake-url = $(shell majv=$$(echo $(cmake-version) | sed -e's/\./ /' | awk '{printf("%d.%d", $$1, $$2)}'); echo https://cmake.org/files/v$$majv/cmake-$(cmake-version).tar.gz)
+#cmake-url = $(shell majv=$$(echo $(cmake-version) | sed -e's/\./ /' | awk '{printf("%d.%d", $$1, $$2)}'); echo https://cmake.org/files/v$$majv)
#eigen-url = http://bitbucket.org/eigen/eigen/get/$(eigen-version).tar.gz
#expat-url = $(shell vstr=$$(echo $(expat-version) | sed -e's/\./_/g'); echo https://github.com/libexpat/libexpat/releases/download/R_$$vstr/expat-$(expat-version).tar.lz)
#fftw-url = ftp://ftp.fftw.org/pub/fftw
@@ -94,22 +94,23 @@
#freetype-url = https://download.savannah.gnu.org/releases/freetype
#gdb-url = http://ftp.gnu.org/gnu/gdb
#ghostscript-url = $(shell v=$$(echo $(ghostscript-version) | sed -e's/\.//'); echo https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs$$v)
-#gs-fonts-std-url = https://downloads.sourceforge.net/gs-fonts
-#gs-fonts-gnu-url = https://downloads.sourceforge.net/gs-fonts
#gnuastro-url = http://ftp.gnu.org/gnu/gnuastro
+#gperf-url = http://ftp.gnu.org/pub/gnu/gperf
+#gs-fonts-gnu-url = https://downloads.sourceforge.net/gs-fonts
+#gs-fonts-std-url = https://downloads.sourceforge.net/gs-fonts
#gsl-url = http://ftp.gnu.org/gnu/gsl
#hdf5-url = $(shell majorver=$$(echo $(hdf5-version) | sed -e 's/\./ /g' | awk '{printf("%d.%d", $$1, $$2)}'); echo https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-$$majorver/hdf5-$(hdf5-version)/src)
#healpix-url = http://akhlaghi.org/maneage-software
#help2man-url = http://ftp.gnu.org/gnu/help2man
+#ibpaper-url=http://ftp.debian.org/debian/pool/main/libp/libpaper/
#imagemagick-url = http://akhlaghi.org/maneage-software
#imfit-url = http://www.mpe.mpg.de/~erwin/resources/imfit
#lapack-url = http://www.netlib.org/lapack
#libffi-url = ftp://sourceware.org/pub/libffi
+#libgit2-url = http://akhlaghi.org/src
#libidn-url = https://ftp.gnu.org/gnu/libidn
-#libgit2-url = https://github.com/libgit2/libgit2/archive
#libjpeg-url = http://ijg.org/files
#libnsl-url = http://akhlaghi.org/maneage-software
-#ibpaper-url=http://ftp.debian.org/debian/pool/main/libp/libpaper/
#libpng-url = https://download.sourceforge.net/libpng
#libtiff-url = https://download.osgeo.org/libtiff
#libtirpc-url = https://downloads.sourceforge.net/libtirpc
@@ -121,7 +122,7 @@
#openssh-url = https://artfiles.org/openbsd/OpenSSH/portable
#patch-url = http://ftp.gnu.org/gnu/patch
#pixman-url = https://www.cairographics.org/releases
-#python-url = https://www.python.org/ftp/python/$(python-version)
+#python-url = http://akhlaghi.org/src
#R-url = $(shell majver=$$(echo $(R-version) | sed -e's/\./ /g' | awk '{print $$1}'); echo https://cran.r-project.org/src/base/R-$$majver)
#rpcsvc-proto-url = https://github.com/thkukuk/rpcsvc-proto/releases/download
#scamp-url = http://akhlaghi.org/maneage-software
@@ -138,16 +139,16 @@
# Xorg packages
# -------------
-#util-macros-url = https://www.x.org/pub/individual/util
-#xorgproto-url = https://xorg.freedesktop.org/archive/individual/proto
+#fontconfig-url = https://www.freedesktop.org/software/fontconfig/release
+#libpthread-stubs-url = https://xcb.freedesktop.org/dist
+#libx11-url = https://www.x.org/pub/individual/lib
#libxau-url = https://www.x.org/pub/individual/lib
#libxdmcp-url = https://www.x.org/pub/individual/lib
+#libxext-url = https://www.x.org/pub/individual/lib
+#util-macros-url = https://www.x.org/pub/individual/util
#xcb-proto-url = https://xorg.freedesktop.org/archive/individual/proto
-#fontconfig-url = https://www.freedesktop.org/software/fontconfig/release
+#xorgproto-url = https://xorg.freedesktop.org/archive/individual/proto
#xtrans-url = https://www.x.org/pub/individual/lib
-#libx11-url = https://www.x.org/pub/individual/lib
-#libxext-url = https://www.x.org/pub/individual/lib
-#libpthread-stubs-url = https://xcb.freedesktop.org/dist
@@ -167,7 +168,7 @@
# files" menu, you can download the source '.zip' file. For version 1.18.5,
# (with full filename of 'numpy-1.18.5.zip') the link will be like this.
#
-# numpy-url = https://files.pythonhosted.org/packages/01/1b/d3ddcabd5817be02df0e6ee20d64f77ff6d0d97f83b77f65e98c8a651981/numpy-1.18.5.zip
+# numpy-url = https://files.pythonhosted.org/packages/01/1b/d3ddcabd5817be02df0e6ee20d64f77ff6d0d97f83b77f65e98c8a651981
#
# Hence, if the version changes, the checksum, and its two top host
# directories also change. This is why we aren't putting any URL here by
diff --git a/reproduce/software/config/versions.conf b/reproduce/software/config/versions.conf
index 7998345..0a9e21e 100644
--- a/reproduce/software/config/versions.conf
+++ b/reproduce/software/config/versions.conf
@@ -16,24 +16,24 @@
# --------------------------------------------------------------
#
# CLASS:BASIC (important identifier, don't modify this line)
-bash-version = 5.0.11
-binutils-version = 2.32
-coreutils-version = 8.31
-curl-version = 7.65.3
+bash-version = 5.0.18
+binutils-version = 2.35
+coreutils-version = 8.32
+curl-version = 7.71.1
dash-version = 0.5.10.2
diffutils-version = 3.7
-file-version = 5.36
+file-version = 5.39
findutils-version = 4.7.0
flock-version = 0.2.3
-gawk-version = 5.0.1
-gcc-version = 9.2.0
-gettext-version = 0.20.2
-git-version = 2.26.2
-gmp-version = 6.1.2
-grep-version = 3.3
+gawk-version = 5.1.0
+gcc-version = 10.2.0
+gettext-version = 0.21
+git-version = 2.28.0
+gmp-version = 6.2.0
+grep-version = 3.4
gzip-version = 1.10
isl-version = 0.18
-libbsd-version = 0.9.1
+libbsd-version = 0.10.0
libiconv-version = 1.16
libtool-version = 2.4.6
libunistring-version = 0.9.10
@@ -44,18 +44,18 @@ make-version = 4.3
metastore-version = 1.1.2-23-fa9170b
mpc-version = 1.1.0
mpfr-version = 4.0.2
-ncurses-version = 6.1
+ncurses-version = 6.2
patchelf-version = 0.10
-perl-version = 5.30.0
+perl-version = 5.32.0
pkgconfig-version = 0.29.2
readline-version = 8.0
-sed-version = 4.7
+sed-version = 4.8
tar-version = 1.32
-texinfo-version = 6.6
+texinfo-version = 6.7
unzip-version = 6.0
wget-version = 1.20.3
which-version = 2.21
-xz-version = 5.2.4
+xz-version = 5.2.5
zip-version = 3.0
zlib-version = 1.2.11
@@ -83,35 +83,34 @@ bzip2-version = 1.0.6
apachelog4cxx-version = 0.10.0-603-014954db
apr-version = 1.7.0
apr-util-version = 1.6.1
-astrometrynet-version = 0.77
+astrometrynet-version = 0.80
atlas-version = 3.10.3
autoconf-version = 2.69.200-babc
-automake-version = 1.16.1
-bison-version = 3.6
+automake-version = 1.16.2
+bison-version = 3.7
boost-version = 1.73.0
cairo-version = 1.16.0
cdsclient-version = 3.84
-cfitsio-version = 3.47
-cmake-version = 3.17.0
+cfitsio-version = 3.48
+cmake-version = 3.18.1
eigen-version = 3.3.7
expat-version = 2.2.9
fftw-version = 3.3.8
flex-version = 2.6.4-91-ga631f5d
-freetype-version = 2.9
-gdb-version = 8.3
-ghostscript-version = 9.50
+freetype-version = 2.10.2
+gdb-version = 9.2
+ghostscript-version = 9.52
ghostscript-fonts-gnu-version = 6.0
ghostscript-fonts-std-version = 8.11
-gnuastro-version = 0.11
+gnuastro-version = 0.12
gperf-version = 3.1
gsl-version = 2.6
-hdf5-version = 1.10.5
healpix-version = 3.50
help2man-version = 1.47.11
imagemagick-version = 7.0.8-67
imfit-version = 1.6.1
libffi-version = 3.2.1
-libidn-version = 1.35
+libidn-version = 1.36
libjpeg-version = v9b
libnsl-version = 1.2.0-4a062cf
libpaper-version = 1.1.28
@@ -120,13 +119,13 @@ libtiff-version = 4.0.10
libtirpc-version = 1.2.6
missfits-version = 2.8.0
openblas-version = 0.3.10
-openmpi-version = 4.0.1
+openmpi-version = 4.0.4
openssh-version = 8.0p1
patch-version = 2.7.6
pcre-version = 8.44
pixman-version = 0.38.0
-python-version = 3.7.4
-R-version = 3.6.2
+python-version = 3.8.5
+R-version = 4.0.2
rpcsvc-proto-version = 1.4
scamp-version = 2.6.7
scons-version = 3.0.5
@@ -136,7 +135,7 @@ swig-version = 3.0.12
tides-version = 2.0
util-linux-version = 2.35
xlsxio-version = 0.2.21
-yaml-version = 0.2.2
+yaml-version = 0.2.5
# Xorg packages
util-macros-version = 1.19.2
@@ -157,8 +156,8 @@ libpthread-stubs-version = 0.4
# Version-dependent build
# -----------------------
lapack-version = 3.8.0
-libgit2-version = 0.28.2
-wcslib-version = 6.4
+libgit2-version = 1.0.1
+wcslib-version = 7.3
# Netpbm's questions in the configure steps maybe change with different or
# new versions.
@@ -177,6 +176,9 @@ openssl-version = 1.1.1a
# any future release.
valgrind-version = 3.15.0
+# Be careful with updateing hdf5 because h5py 2.10.0 doesn't work with
+# version 1.12.0.
+hdf5-version = 1.10.5
@@ -202,7 +204,7 @@ chardet-version = 3.0.4
corner-version = 2.0.1
cryptography-version = 2.6.1
cycler-version = 0.10.0
-cython-version = 0.29.6
+cython-version = 0.29.21
eigency-version = 1.77
emcee-version = 3.0.1
entrypoints-version = 0.3
@@ -210,7 +212,7 @@ esutil-version = 0.6.4
flake8-version = 3.7.8
future-version = 0.18.1
galsim-version = 2.2.1
-h5py-version = 2.9.0
+h5py-version = 2.10.0
html5lib-version = 1.0.1
idna-version = 2.8
jeepney-version = 0.4
@@ -218,22 +220,22 @@ keyring-version = 18.0.0
kiwisolver-version = 1.0.1
lmfit-version = 0.9.14
lsstdesccoord-version = 1.2.0
-matplotlib-version = 3.1.1
-mpi4py-version = 3.0.2
+matplotlib-version = 3.3.0
+mpi4py-version = 3.0.3
mpmath-version = 1.1.0
-numpy-version = 1.17.2
+numpy-version = 1.19.1
pexpect-version = 4.7.0
pip-version = 19.0.2
pycodestyle-version = 2.5.0
pycparser-version = 2.19
pyflakes-version = 2.1.1
-pybind11-version = 2.4.3
+pybind11-version = 2.5.0
pyparsing-version = 2.3.1
pypkgconfig-version = 1.5.1
python-dateutil-version = 2.8.0
pyyaml-version = 5.1
requests-version = 2.21.0
-scipy-version = 1.3.1
+scipy-version = 1.5.2
secretstorage-version = 3.1.1
setuptools-version = 41.6.0
setuptools_scm-version = 3.3.3
@@ -249,3 +251,4 @@ webencodings-version = 0.5.1
#
# Healpy: When any Python module is requested, healpix will also build its
# Python module Healpy.
+healpy-version = xxxxx
diff --git a/reproduce/software/make/basic.mk b/reproduce/software/make/basic.mk
index 453eddb..0b672d8 100644
--- a/reproduce/software/make/basic.mk
+++ b/reproduce/software/make/basic.mk
@@ -130,9 +130,17 @@ backupservers = $(filter-out $(topbackupserver),$(backupservers_all))
# Low-level (not built) programs
# ------------------------------
#
-# 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.
+# For the time being, some components of the project aren't being built on
+# some systems (primarily on proprietary operating systems). So we are
+# simply making a symbolic link to the system's programs/libraries in the
+# build directory.
+#
+# The logical position of this rule is irrelevant in this Makefile (because
+# programs being built here have full access to the system's PATH
+# already). This is done for the high-level programs installed in
+# 'high-level.mk', 'xorg.mk' or 'python.mk'. So this step is done after
+# building our own GNU Grep (which is the highest-level program used in
+# 'makelink') to have trustable elements.
#
# 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
@@ -142,19 +150,25 @@ backupservers = $(filter-out $(topbackupserver),$(backupservers_all))
# thus remove any part of PATH of that has `ccache' in it before making
# symbolic links to the programs we are not building ourselves.
#
-# We'll need the system's PATH for making links to low-level programs we
-# won't be building ourselves.
+# The double quotations after the starting 'export PATH' are necessary in
+# case the user's PATH has space-characters in it.
+#
+# We use 'realpath' here (part of GNU Coreutils which is already installed
+# by the time we use 'makelink') to avoid linking to a link (on the
+# host). 'realpath' will follow a link (and possibly other links in the
+# middle) to an actual file and return its address. When the location isn't
+# a link, it will just return it.
syspath := $(PATH)
makelink = origpath="$$PATH"; \
- export PATH=$$(echo $(syspath) \
- | tr : '\n' \
- | grep -v ccache \
- | tr '\n' :); \
+ 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); \
+ ln -sf "$$(realpath $$(which $(1)))" $(ibdir)/$(1); \
else \
- ln -sf $$(which $(1)) $(ibdir)/$(3); \
+ ln -sf "$$(realpath $$(which $(1)))" $(ibdir)/$(3); \
fi; \
else \
if [ "x$(strip $(2))" = xmandatory ]; then \
@@ -166,13 +180,12 @@ makelink = origpath="$$PATH"; \
export PATH="$$origpath"
$(ibdir) $(ildir):; mkdir $@
-$(ibidir)/low-level-links: $(ibidir)/coreutils-$(coreutils-version) \
+$(ibidir)/low-level-links: $(ibidir)/grep-$(grep-version) \
| $(ibdir) $(ildir)
- # Not-installed (but necessary in some cases) compilers.
- # Clang is necessary for CMake.
- $(call makelink,clang)
- $(call makelink,clang++)
+ # Hardware specific
+ $(call makelink,lp) # For printing, necessary for R.
+ $(call makelink,lpr) # For printing, necessary for R.
# Mac OS specific
$(call makelink,mig)
@@ -913,7 +926,7 @@ $(ibidir)/gettext-$(gettext-version): \
$(ibidir)/ncurses-$(ncurses-version) \
$(ibidir)/libiconv-$(libiconv-version) \
$(ibidir)/libunistring-$(libunistring-version)
- tarball=gettext-$(gettext-version).tar.xz
+ tarball=gettext-$(gettext-version).tar.lz
$(call import-source, $(gettext-url), $(gettext-checksum))
$(call gbuild, gettext-$(gettext-version), static,, \
V=1 -j$(numthreads))
@@ -950,7 +963,7 @@ $(ibidir)/libtool-$(libtool-version): $(ibidir)/m4-$(m4-version)
$(call import-source, $(libtool-url), $(libtool-checksum))
$(call gbuild, libtool-$(libtool-version), static, \
--program-prefix=g, V=1 -j$(numthreads))
- ln -s $(ibdir)/glibtoolize $(ibdir)/libtoolize
+ ln -sf $(ibdir)/glibtoolize $(ibdir)/libtoolize
echo "GNU Libtool $(libtool-version)" > $@
$(ibidir)/grep-$(grep-version): $(ibidir)/coreutils-$(coreutils-version)
@@ -1202,6 +1215,7 @@ $(ibidir)/binutils-$(binutils-version): \
$(call makelink,ld)
$(call makelink,nm)
$(call makelink,ps)
+ $(call makelink,strip)
$(call makelink,ranlib)
echo "" > $@
else
@@ -1211,14 +1225,15 @@ $(ibidir)/binutils-$(binutils-version): \
--with-lib-path=$(sys_library_path), \
-j$(numthreads) )
- # The `ld' linker of Binutils needs several `*crt*.o' file to
- # run. On some systems these object files aren't installed in
- # standard places. We defined `LIBRARY_PATH' and that fixed the
- # problem for many systems. However, some software (for example
- # ImageMagick) over-write `LIBRARY_PATH', therefore there is no
- # other way than to put a link to these necessary files in our
- # local build directory. IMPORTANT NOTE: later, when we build the
- # GNU C Library in the project, we should remove this step.
+ # The `ld' linker of Binutils needs several `*crt*.o' files from
+ # the host's GNU C Library to run. On some systems these object
+ # files aren't installed in standard places. We defined
+ # `LIBRARY_PATH' and that fixed the problem for many
+ # systems. However, some software (for example ImageMagick)
+ # over-write `LIBRARY_PATH', therefore there is no other way than
+ # to put a link to these necessary files in our local build
+ # directory. IMPORTANT NOTE: later, when we build the GNU C
+ # Library in the project, we should remove this step.
if ! [ x"$(sys_library_path)" = x ]; then
for f in $(sys_library_path)/*crt*.o; do
b=$$($(ibdir)/basename $$f)
@@ -1270,6 +1285,16 @@ $(ibidir)/gcc-$(gcc-version): $(ibidir)/binutils-$(binutils-version)
tarball=gcc-$(gcc-version).tar.xz
$(call import-source, $(gcc-url), $(gcc-checksum))
+ # To avoid any previous build in '.local/bin' causing problems in
+ # this build/links of this GCC, we'll first delete all the possibly
+ # built/existing compilers in this project. Note that GCC also
+ # installs several executables like this 'x86_64-pc-linux-gnu-gcc',
+ # 'x86_64-pc-linux-gnu-gcc-ar' or 'x86_64-pc-linux-gnu-g++'.
+ rm -f $(ibdir)/*g++ $(ibdir)/cpp $(ibdir)/gfortran
+ rm -rf $(ildir)/gcc $(ildir)/libcc* $(ildir)/libgcc*
+ rm -f $(ibdir)/*gcc* $(ibdir)/gcov* $(ibdir)/cc $(ibdir)/c++
+ rm -rf $(ildir)/libgfortran* $(ildir)/libstdc* rm $(idir)/x86_64*
+
# GCC builds is own libraries in '$(idir)/lib64'. But all other
# libraries are in '$(idir)/lib'. Since this project is only for a
# single architecture, we can trick GCC into building its libraries
@@ -1277,34 +1302,52 @@ $(ibidir)/gcc-$(gcc-version): $(ibidir)/binutils-$(binutils-version)
# link to '$(idir)/lib'.
if [ $(host_cc) = 1 ]; then
- # Make sure we don't have any of the program we want to link to
- # in the '.local/bin' directory.
- rm -f $(ibdir)/cc
- rm -f $(ibdir)/c++
- rm -f $(ibdir)/gcc
- rm -f $(ibdir)/cpp
- rm -f $(ibdir)/strip;
- rm -f $(ibdir)/gfortran;
-
- # Put links to the host's tools in '.local/bin'.
- $(call makelink,cc)
- $(call makelink,cpp)
- $(call makelink,cc,,gcc)
+ # Put links to the host's tools in '.local/bin'. Note that some
+ # macOS systems have both a native clang *and* a GNU C Compiler
+ # (note that this is different from the "normal" macOS situation
+ # where 'gcc' actually points to clang, here we mean when 'gcc'
+ # is actually the GNU C Compiler).
+ #
+ # In such cases, the GCC isn't complete and using it will cause
+ # problems when building high-level tools (for example openBLAS,
+ # rpcsvc-proto, CMake, xlsxio, Python or Matplotlib among
+ # others). To avoid such situations macOSs are configured like
+ # this: we'll simply set 'gcc' to point to 'clang' and won't set
+ # 'gcc' to point to the system's 'gcc'.
+ #
+ # Also, note that LLVM's clang doesn't have a C Pre-Processor. So
+ # we will only put a link to the host's 'cpp' if the system is
+ # not macOS. On macOS systems that have a real GCC installed,
+ # having GNU CPP in the project build directory is known to cause
+ # problems with 'libX11'.
$(call makelink,gfortran)
- $(call makelink,c++,,g++)
- $(call makelink,strip,mandatory)
+ if [ x$(on_mac_os) = xyes ]; then
+ $(call makelink,clang)
+ $(call makelink,clang++)
+ $(call makelink,clang,,gcc)
+ $(call makelink,clang++,,g++)
+ else
+ $(call makelink,cpp)
+ $(call makelink,gcc)
+ $(call makelink,g++)
+ fi
+
+ # We also want to have the two 'cc' and 'c++' in the build
+ # directory that point to the selected compiler. With the checks
+ # above, 'gcc' and 'g++' will point to the proper compiler, so
+ # we'll use them to define 'cc' and 'c++'.
+ $(call makelink,gcc,,cc)
+ $(call makelink,g++,,c++)
+
+ # Get the first line of the compiler's '--version' output and put
+ # that into the target (so we know want compiler was used).
ccinfo=$$(gcc --version | awk 'NR==1')
echo "C compiler (""$$ccinfo"")" > $@
else
- # We are building GCC, so to avoid any previous build in
- # '.local/bin', we'll delete all the files that GCC builds from
- # there.
+ # Mark the current directory.
current_dir=$$(pwd)
- rm -f $(ibdir)/gcc* $(ibdir)/g++ $(ibdir)/gfortran $(ibdir)/gcov*
- rm -rf $(ildir)/gcc $(ildir)/libcc* $(ildir)/libgcc*
- rm -rf $(ildir)/libgfortran* $(ildir)/libstdc* rm $(idir)/x86_64*
# We don't want '.local/lib' and '.local/lib64' to be separate.
ln -fs $(ildir) $(idir)/lib64
@@ -1398,6 +1441,7 @@ $(ibidir)/gcc-$(gcc-version): $(ibidir)/binutils-$(binutils-version)
# Set 'cc' to point to 'gcc'.
ln -sf $(ibdir)/gcc $(ibdir)/cc
+ ln -sf $(ibdir)/g++ $(ibdir)/c++
# Write the final target.
echo "GNU Compiler Collection (GCC) $(gcc-version)" > $@
diff --git a/reproduce/software/make/build-rules.mk b/reproduce/software/make/build-rules.mk
index 7471e5b..d50c301 100644
--- a/reproduce/software/make/build-rules.mk
+++ b/reproduce/software/make/build-rules.mk
@@ -44,7 +44,12 @@ import-source = final=$(tdir)/$$tarball; \
unchecked="$$final.unchecked"; \
rm -f "$$unchecked"; \
if [ -f $(DEPENDENCIES-DIR)/$$tarball ]; then \
- cp $(DEPENDENCIES-DIR)/$$tarball "$$unchecked"; \
+ if type realpath > /dev/null 2> /dev/null; then \
+ ln -sf "$$(realpath $(DEPENDENCIES-DIR)/$$tarball)" \
+ "$$unchecked"; \
+ else \
+ cp $(DEPENDENCIES-DIR)/$$tarball "$$unchecked"; \
+ fi; \
else \
if [ x"$$url" = x ]; then \
bservers="$(backupservers)"; \
@@ -70,7 +75,7 @@ import-source = final=$(tdir)/$$tarball; \
if [ x"$$checksum" = x"$$exp_checksum" ]; then \
mv "$$unchecked" "$$final"; \
else \
- echo "ERROR: Non-matching checksum for '$$tarball'."; \
+ echo "ERROR: Non-matching checksum: $$tarball"; \
echo "Checksum should be: $$exp_checksum"; \
echo "Checksum is: $$checksum"; \
exit 1; \
@@ -170,11 +175,21 @@ gbuild = if [ x$(static_build) = xyes ] && [ "x$(2)" = xstatic ]; then \
\
echo; echo "Using '$$confscript' to configure:"; echo; \
echo "$$confscript $(3) $$configop"; echo; \
- $$confscript $(3) $$configop; \
- make "$$shellop" $(4); \
- $$check; \
- make "$$shellop" install $(7); \
- cd ..; \
+ if [ x$$configure_in_different_directory = x1 ]; then \
+ mkdir build; \
+ cd build; \
+ ../$$confscript $(3) $$configop; \
+ make "$$shellop" $(4); \
+ $$check; \
+ make "$$shellop" install $(7); \
+ cd ../..; \
+ else \
+ $$confscript $(3) $$configop; \
+ make "$$shellop" $(4); \
+ $$check; \
+ make "$$shellop" install $(7); \
+ cd ..; \
+ fi; \
rm -rf $(1)
diff --git a/reproduce/software/make/high-level.mk b/reproduce/software/make/high-level.mk
index cf104e6..9f434bc 100644
--- a/reproduce/software/make/high-level.mk
+++ b/reproduce/software/make/high-level.mk
@@ -52,6 +52,7 @@ ildir = $(BDIR)/software/installed/lib
ibidir = $(BDIR)/software/installed/version-info/proglib
# Basic directories (specific to this Makefile).
+il64dir = $(BDIR)/software/installed/lib64
iidir = $(BDIR)/software/installed/include
shsrcdir = $(shell pwd)/reproduce/software/shell
dtexdir = $(shell pwd)/reproduce/software/bibtex
@@ -555,7 +556,7 @@ $(ibidir)/libidn-$(libidn-version):
$(call import-source, $(libidn-url), $(libidn-checksum))
$(call gbuild, libidn-$(libidn-version), static, \
--disable-doc, -j$(numthreads) V=1)
- echo "Libjpeg $(libjpeg-version)" > $@
+ echo "Libidn $(libidn-version)" > $@
$(ibidir)/libjpeg-$(libjpeg-version):
tarball=jpegsrc.$(libjpeg-version).tar.gz
@@ -640,7 +641,10 @@ $(ibidir)/openblas-$(openblas-version):
$(ibidir)/openmpi-$(openmpi-version):
tarball=openmpi-$(openmpi-version).tar.gz
$(call import-source, $(openmpi-url), $(openmpi-checksum))
- $(call gbuild, openmpi-$(openmpi-version), static, , \
+ $(call gbuild, openmpi-$(openmpi-version), static, \
+ --with-pmix=internal \
+ --with-hwloc=internal \
+ --without-verbs, \
-j$(numthreads) V=1)
echo "Open MPI $(openmpi-version)" > $@
@@ -759,8 +763,8 @@ $(ibidir)/libgit2-$(libgit2-version): $(ibidir)/cmake-$(cmake-version)
-DUSE_SSH=OFF -DBUILD_CLAR=OFF \
-DTHREADSAFE=ON -DUSE_ICONV=OFF )
if [ x$(on_mac_os) = xyes ]; then
- install_name_tool -id $(ildir)/libgit2.28.dylib \
- $(ildir)/libgit2.28.dylib
+ install_name_tool -id $(ildir)/libgit2.1.0.dylib \
+ $(ildir)/libgit2.1.0.dylib
fi
echo "Libgit2 $(libgit2-version)" > $@
@@ -781,8 +785,8 @@ $(ibidir)/wcslib-$(wcslib-version): $(ibidir)/cfitsio-$(cfitsio-version)
--with-cfitsioinc=$(idir)/include \
--without-pgplot $$fortranopt)
if [ x$(on_mac_os) = xyes ]; then
- install_name_tool -id $(ildir)/libwcs.6.4.dylib \
- $(ildir)/libwcs.6.4.dylib
+ install_name_tool -id $(ildir)/libwcs.7.3.dylib \
+ $(ildir)/libwcs.7.3.dylib
fi
echo "WCSLIB $(wcslib-version)" > $@
@@ -849,7 +853,7 @@ $(ibidir)/automake-$(automake-version): $(ibidir)/autoconf-$(autoconf-version)
echo "GNU Automake $(automake-version)" > $@
$(ibidir)/bison-$(bison-version): $(ibidir)/help2man-$(help2man-version)
- tarball=bison-$(bison-version).tar.xz
+ tarball=bison-$(bison-version).tar.lz
$(call import-source, $(bison-url), $(bison-checksum))
$(call gbuild, bison-$(bison-version), static, ,V=1 -j$(numthreads))
echo "GNU Bison $(bison-version)" > $@
@@ -912,6 +916,7 @@ $(ibidir)/flex-$(flex-version): $(ibidir)/bison-$(bison-version)
$(ibidir)/gdb-$(gdb-version): $(ibidir)/python-$(python-version)
tarball=gdb-$(gdb-version).tar.gz
+ export configure_in_different_directory=1;
$(call import-source, $(gdb-url), $(gdb-checksum))
$(call gbuild, gdb-$(gdb-version),,,V=1 -j$(numthreads))
echo "GNU Project Debugger (GDB) $(gdb-version)" > $@
@@ -1092,10 +1097,17 @@ $(ibidir)/minizip-$(minizip-version): $(ibidir)/automake-$(automake-version)
rm -rf $$unpackdir
echo "Minizip $(minizip-version)" > $@
+# The Astromatic software packages (including missfits, sextractor, swarp
+# and others) need the '-fcommon' flag to compile properly on GCC 10 and
+# after. Previous to GCC 10, it was the default, but from GCC 10, the
+# default is '-fno-common'. This is known by the author (as SExtractor
+# issue 12: https://github.com/astromatic/sextractor/issues/12) and will
+# hopefully be fixed in the future.
$(ibidir)/missfits-$(missfits-version):
tarball=missfits-$(missfits-version).tar.gz
$(call import-source, $(missfits-url), $(missfits-checksum))
- $(call gbuild, missfits-$(missfits-version), static)
+ $(call gbuild, missfits-$(missfits-version), static, \
+ CFLAGS="-fcommon")
cp $(dtexdir)/missfits.tex $(ictdir)/
echo "MissFITS $(missfits-version) \citep{missfits}" > $@
@@ -1159,11 +1171,25 @@ $(ibidir)/R-$(R-version): \
$(ibidir)/libpaper-$(libpaper-version)
tarball=R-$(R-version).tar.gz
$(call import-source, $(R-url), $(R-checksum))
+ cd $(ddir)
+ tar xf $(tdir)/$$tarball
+ cd R-$(R-version)
+ # We need to manually remove the lines with '~autodetect~', they
+ # cause the configure script to crash in version 4.0.2. They are
+ # used in relation to Java, and we don't use Java anyway.
+ sed -i -e '/\~autodetect\~/ s/^/#/g' configure
export R_SHELL=$(SHELL)
- $(call gbuild, R-$(R-version), static, \
- --without-x --with-readline \
- --disable-openmp, -j$(numthreads))
+ ./configure --prefix=$(idir) \
+ --without-x \
+ --with-pcre1 \
+ --disable-java \
+ --with-readline \
+ --disable-openmp
+ make -j$(numthreads)
+ make install
+ cd ..
+ rm -rf R-$(R-version)
echo "R $(R-version)" > $@
# SCAMP documentation says ATLAS is a mandatory prerequisite for using
@@ -1177,7 +1203,10 @@ $(ibidir)/scamp-$(scamp-version): \
$(ibidir)/cdsclient-$(cdsclient-version)
tarball=scamp-$(scamp-version).tar.lz
$(call import-source, $(scamp-url), $(scamp-checksum))
+
+ # See comment above 'missfits' for '-fcommon'.
$(call gbuild, scamp-$(scamp-version), static, \
+ CFLAGS="-fcommon" \
--enable-threads \
--enable-openblas \
--enable-plplot=no \
@@ -1205,13 +1234,20 @@ $(ibidir)/scons-$(scons-version): $(ibidir)/python-$(python-version)
# libraries. But we can override this issue since we have Openblas
# installed, it is just necessary to explicity tell sextractor to use it in
# the configuration step.
+#
+# The '-fcommon' is a necessary C compilation flag for GCC 10 and above. It
+# is necessary for astromatic libraries, otherwise their build will crash.
$(ibidir)/sextractor-$(sextractor-version): \
$(ibidir)/fftw-$(fftw-version) \
$(ibidir)/openblas-$(openblas-version)
tarball=sextractor-$(sextractor-version).tar.lz
$(call import-source, $(sextractor-url), $(sextractor-checksum))
+
+ # See comment above 'missfits' for '-fcommon'.
$(call gbuild, sextractor-$(sextractor-version), static, \
- --enable-threads --enable-openblas \
+ CFLAGS="-fcommon" \
+ --enable-threads \
+ --enable-openblas \
--with-openblas-libdir=$(ildir) \
--with-openblas-incdir=$(idir)/include)
ln -fs $(ibdir)/sex $(ibdir)/sextractor
@@ -1221,7 +1257,10 @@ $(ibidir)/sextractor-$(sextractor-version): \
$(ibidir)/swarp-$(swarp-version): $(ibidir)/fftw-$(fftw-version)
tarball=swarp-$(swarp-version).tar.gz
$(call import-source, $(swarp-url), $(swarp-checksum))
+
+ # See comment above 'missfits' for '-fcommon'.
$(call gbuild, swarp-$(swarp-version), static, \
+ CFLAGS="-fcommon" \
--enable-threads)
cp $(dtexdir)/swarp.tex $(ictdir)/
echo "SWarp $(swarp-version) \citep{swarp}" > $@
diff --git a/reproduce/software/make/python.mk b/reproduce/software/make/python.mk
index ccfbc72..d39208f 100644
--- a/reproduce/software/make/python.mk
+++ b/reproduce/software/make/python.mk
@@ -331,7 +331,7 @@ $(ipydir)/h5py-$(h5py-version): \
# and just ask for `healpy'. To avoid confusion in such cases, we'll just
# set `healpy' to be dependent on `healpix' and not download any tarball
# for it, or write anything in the final target.
-$(ipydir)/healpy-$(healpy-version): $(ibidir)/healpix-$(healpy-version)
+$(ipydir)/healpy-$(healpy-version): $(ibidir)/healpix-$(healpix-version)
touch $@
$(ipydir)/html5lib-$(html5lib-version): \
@@ -431,6 +431,7 @@ $(ipydir)/mpmath-$(mpmath-version): $(ipydir)/setuptools-$(setuptools-version)
$(ipydir)/numpy-$(numpy-version): \
$(ibidir)/unzip-$(unzip-version) \
+ $(ipydir)/cython-$(cython-version) \
$(ibidir)/openblas-$(openblas-version) \
$(ipydir)/setuptools-$(setuptools-version)
tarball=numpy-$(numpy-version).zip
@@ -528,7 +529,9 @@ $(ipydir)/requests-$(requests-version): $(ipydir)/idna-$(idna-version) \
$(call pybuild, tar xf, requests-$(requests-version), , \
Requests $(requests-version))
-$(ipydir)/scipy-$(scipy-version): $(ipydir)/numpy-$(numpy-version)
+$(ipydir)/scipy-$(scipy-version): \
+ $(ipydir)/numpy-$(numpy-version) \
+ $(ipydir)/pybind11-$(pybind11-version)
tarball=scipy-$(scipy-version).tar.gz
$(call import-source, $(scipy-url), $(scipy-checksum))
if [ x$(on_mac_os) = xyes ]; then
diff --git a/reproduce/software/make/xorg.mk b/reproduce/software/make/xorg.mk
index e3b1f71..f59fb04 100644
--- a/reproduce/software/make/xorg.mk
+++ b/reproduce/software/make/xorg.mk
@@ -15,6 +15,7 @@
# ------------------------------------------------------------------------
#
# Copyright (C) 2020 Mohammad Akhlaghi <mohammad@akhlaghi.org>
+# Copyright (C) 2020 Raul Infante-Sainz <infantesainz@gmail.com>
#
# This Makefile is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/reproduce/software/shell/configure.sh b/reproduce/software/shell/configure.sh
index fc34ca9..6ffb4ff 100755
--- a/reproduce/software/shell/configure.sh
+++ b/reproduce/software/shell/configure.sh
@@ -30,6 +30,20 @@ set -e
+# Project-specific settings
+# -------------------------
+#
+# The variables defined here may be different between different
+# projects. Ideally, they should be detected automatically, but we haven't
+# had the chance to implement it yet (please help if you can!). Until then,
+# please set them based on your project (if they differ from the core
+# branch).
+need_gfortran=0
+
+
+
+
+
# Internal directories
# --------------------
#
@@ -44,9 +58,6 @@ ptconf=$cdir/LOCAL_tmp.conf
poconf=$cdir/LOCAL_old.conf
depverfile=$cdir/versions.conf
depshafile=$cdir/checksums.conf
-# --------- Delete for no Gnuastro ---------
-glconf=$adir/gnuastro/gnuastro-local.conf
-# ------------------------------------------
@@ -186,35 +197,93 @@ free_space_warning()
+# See if we are on a Linux-based system
+# --------------------------------------
+#
+# Some features are tailored to GNU/Linux systems, while the BSD-based
+# behavior is different. Initially we only tested macOS (hence the name of
+# the variable), but as FreeBSD is also being inlucded in our tests. As
+# more systems get used, we need to tailor these kinds of things better.
+kernelname=$(uname -s)
+if [ x$kernelname = xLinux ]; then
+ on_mac_os=no
+
+ # Don't forget to add the respective C++ compiler below (leave 'cc' in
+ # the end).
+ c_compiler_list="gcc clang cc"
+else
+ host_cc=1
+ on_mac_os=yes
+
+ # Don't forget to add the respective C++ compiler below (leave 'cc' in
+ # the end).
+ c_compiler_list="clang gcc cc"
+fi
+
+
+
+
+
# Check for C/C++ compilers
# -------------------------
#
-# To build the software, we'll need some basic tools (the compilers in
-# particular) to be present.
-hascc=0;
-if type cc > /dev/null 2>/dev/null; then
- if type c++ > /dev/null 2>/dev/null; then export CC=cc; hascc=1; fi
-else
- if type gcc > /dev/null 2>/dev/null; then
- if type g++ > /dev/null 2>/dev/null; then export CC=gcc; hascc=1; fi
+# To build the software, we'll need some basic tools (the C/C++ compilers
+# in particular) to be present.
+has_compilers=no
+for c in $c_compiler_list; do
+
+ # Set the respective C++ compiler.
+ if [ x$c = xcc ]; then cplus=c++;
+ elif [ x$c = xgcc ]; then cplus=g++;
+ elif [ x$c = xclang ]; then cplus=clang++;
else
- if type clang > /dev/null 2>/dev/null; then
- if type clang++ > /dev/null 2>/dev/null; then export CC=clang; hascc=1; fi
+ cat <<EOF
+______________________________________________________
+!!!!!!! BUG !!!!!!!
+
+The respective C++ compiler executable name for the C compiler '$c' hasn't
+been set! You can add it in the 'reproduce/software/shell/configure.sh'
+script (just above this error message), or contact us with this web-form:
+
+ https://savannah.nongnu.org/support/?func=additem&group=reproduce
+
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+EOF
+ exit 1
+ fi
+
+ # Check if they exist.
+ if type $c > /dev/null 2>/dev/null; then
+ export CC=$c;
+ if type $cplus > /dev/null 2>/dev/null; then
+ export CXX=$cplus
+ has_compilers=yes
+ break
fi
fi
-fi
-if [ $hascc = 0 ]; then
+done
+if [ x$has_compilers = xno ]; then
cat <<EOF
______________________________________________________
!!!!!!! C/C++ Compiler NOT FOUND !!!!!!!
-To build the project's software, the host system needs to have basic C and
-C++ compilers. The executables that were checked are 'cc', 'gcc' and
-'clang' for a C compiler, and 'c++', 'g++' and 'clang++' for a C++
-compiler. If you have a relevant compiler that is not checked, please get
-in touch with us (with the form below) so we add it:
+To build this project's software, the host system needs to have both C and
+C++ compilers. The commands that were checked are listed below:
+
+ cc, c++ Generic C/C++ compiler (possibly links to below).
+ gcc, g++ Part of GNU Compiler Collection (GCC).
+ clang, clang++ Part of LLVM compiler infrastructure.
+
+If your compiler is not checked, please get in touch with the web-form
+below, so we add it. We will try our best to add it soon. Until then,
+please install at least one of these compilers on your system to proceed.
+
+ https://savannah.nongnu.org/support/?func=additem&group=reproduce
+
+NOTE: for macOS systems, the LLVM compilers that are provided in a native
+Xcode install are recommended. There are known problems with GCC on macOS.
- https://savannah.nongnu.org/support/?func=additem&group=reproduce
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
EOF
@@ -238,10 +307,9 @@ if ! [ -d $compilertestdir ]; then mkdir $compilertestdir; fi
# Check C compiler
# ----------------
-gcc_works=0
testprog=$compilertestdir/test
testsource=$compilertestdir/test.c
-echo; echo; echo "Checking host C compiler...";
+echo; echo; echo "Checking host C compiler ('$CC')...";
cat > $testsource <<EOF
#include <stdio.h>
#include <stdlib.h>
@@ -257,7 +325,7 @@ else
______________________________________________________
!!!!!!! C compiler doesn't work !!!!!!!
-Host C compiler ('gcc') can't build a simple program.
+Host C compiler ('$CC') can't build a simple program.
A working C compiler is necessary for building the project's software.
Please use the error message above to find a good solution and re-run the
@@ -268,11 +336,6 @@ link below and we'll try to help
https://savannah.nongnu.org/support/?func=additem&group=reproduce
-TIP: Once you find the solution, you can use the '-e' option to use
-existing configuration:
-
- $ ./project configure -e
-
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
EOF
@@ -283,28 +346,6 @@ fi
-# See if the linker accepts -Wl,-rpath-link
-# -----------------------------------------
-#
-# `-rpath-link' is used to write the information of the linked shared
-# library into the shared object (library or program). But some versions of
-# LLVM's linker don't accept it an can cause problems.
-cat > $testsource <<EOF
-#include <stdio.h>
-#include <stdlib.h>
-int main(void) {return EXIT_SUCCESS;}
-EOF
-if $CC $testsource -o$testprog -Wl,-rpath-link 2>/dev/null > /dev/null; then
- export rpath_command="-Wl,-rpath-link=$instdir/lib"
-else
- export rpath_command=""
-fi
-rm -f $testprog $testsource
-
-
-
-
-
# See if we need the dynamic-linker (-ldl)
# ----------------------------------------
#
@@ -326,7 +367,7 @@ if $CC $testsource -o$testprog 2>/dev/null > /dev/null; then
else
needs_ldl=yes;
fi
-rm -f $testprog $testsource
+
@@ -351,25 +392,6 @@ static_build=no
-# See if we are on a Linux-based system
-# --------------------------------------
-#
-# Some features are tailored to GNU/Linux systems, while the BSD-based
-# behavior is different. Initially we only tested macOS (hence the name of
-# the variable), but as FreeBSD is also being inlucded in our tests. As
-# more systems get used, we need to tailor these kinds of things better.
-kernelname=$(uname -s)
-if [ x$kernelname = xLinux ]; then
- on_mac_os=no
-else
- host_cc=1
- on_mac_os=yes
-fi
-
-
-
-
-
# Print warning if the host CC is to be used.
if [ x$host_cc = x1 ]; then
cat <<EOF
@@ -507,36 +529,40 @@ fi
# ----------------
#
# If GCC is ultimately build within the project, the user won't need to
-# have a fortran compiler, we'll build it internally for high-level
-# programs. However, when the host C compiler is to be used, the user needs
-# to have a Fortran compiler available.
+# have a fortran compiler: we'll build it internally for high-level
+# programs with GCC. However, when the host C compiler is to be used, the
+# user needs to have a Fortran compiler available.
if [ $host_cc = 1 ]; then
- # See if a Fortran compiler exists.
- hasfc=0;
- if type gfortran > /dev/null 2>/dev/null; then hasfc=1; fi
- if [ $hasfc = 0 ]; then
- cat <<EOF
+ # If a Fortran compiler is necessary, see if 'gfortran' exists and can
+ # be used.
+ if [ "x$need_gfortran" = "x1" ]; then
+
+ # First, see if 'gfortran' exists.
+ hasfc=0;
+ if type gfortran > /dev/null 2>/dev/null; then hasfc=1; fi
+ if [ $hasfc = 0 ]; then
+ cat <<EOF
______________________________________________________
!!!!!!! Fortran Compiler NOT FOUND !!!!!!!
-The project won't be building its own GCC (which includes a Fortran
-compiler) on this system. If you need software that need a Fortran
-compiler, it will crash with an error. Fortran is necessary for many
-lower-level scientific programs, hence this warning. Currently we search
-for 'gfortran'. If you have a Fortran compiler that is not checked, please
-get in touch with us (with the form below) so we add it:
+This project requires a Fortran compiler. However, the project won't/can't
+build its own GCC on this system (GCC also builds the 'gfortran' Fortran
+compiler). Please install 'gfortran' using your operating system's package
+manager, then re-run this configure script to continue the configuration.
- https://savannah.nongnu.org/support/?func=additem&group=reproduce
+Currently the only Fortran compiler we check is 'gfortran'. If you have a
+Fortran compiler that is not checked, please get in touch with us (with the
+form below) so we add it:
-Project's configuration will continue in 5 seconds.
+ https://savannah.nongnu.org/support/?func=additem&group=reproduce
______________________________________________________
EOF
- sleep 5
- else
+ exit 1
+ fi
- # See if the Fortran compiler works
+ # Then, see if the Fortran compiler works
testsource=$compilertestdir/test.f
echo; echo; echo "Checking host Fortran compiler...";
echo " PRINT *, \"... Fortran Compiler works.\"" > $testsource
@@ -552,25 +578,18 @@ ______________________________________________________
Host Fortran compiler ('gfortran') can't build a simple program.
-A working Fortran compiler is necessary for building some of the project's
-software. Please use the error message above to find a good solution and
+A working Fortran compiler is necessary for this project. Please use the
+error message above to find a good solution in your operating system and
re-run the project configuration.
If you can't find a solution, please send the error message above to the
link below and we'll try to help
https://savannah.nongnu.org/support/?func=additem&group=reproduce
-
-TIP: Once you find the solution, you can use the '-e' option to use
-existing configuration:
-
- $ ./project configure -e
-
-Project's configuration will continue in 5 seconds.
______________________________________________________
EOF
- sleep 5
+ exit 1
fi
fi
fi
@@ -579,17 +598,6 @@ fi
-# Delete the compiler testing directory
-# -------------------------------------
-#
-# This directory was made above to make sure the necessary compilers can be
-# run.
-rm -rf $compilertestdir
-
-
-
-
-
# Inform the user
# ---------------
#
@@ -623,12 +631,10 @@ EOF
# (for example the user might have ran `./project configure' by mistake).
printnotice=yes
rewritepconfig=yes
-rewritegconfig=yes
-if [ -f $pconf ] || [ -f $glconf ]; then
+if [ -f $pconf ]; then
if [ $existing_conf = 1 ]; then
printnotice=no
if [ -f $pconf ]; then rewritepconfig=no; fi
- if [ -f $glconf ]; then rewritegconfig=no; fi
fi
fi
@@ -999,44 +1005,6 @@ fi
-# --------- Delete for no Gnuastro ---------
-# Get the version of Gnuastro that must be used.
-gversion=$(awk '$1=="gnuastro-version" {print $NF}' $depverfile)
-
-# Gnuastro's local configuration settings
-if [ $rewritegconfig = yes ]; then
- create_file_with_notice $glconf
- echo "# Minimum number of bytes to use HDD/SSD instead of RAM." >> $glconf
- echo " minmapsize $minmapsize" >> $glconf
- echo >> $glconf
- echo "# Version of Gnuastro that must be used." >> $glconf
- echo " onlyversion $gversion" >> $glconf
-else
- ingversion=$(awk '$1=="onlyversion" {print $NF}' $glconf)
- if [ x$ingversion != x$gversion ]; then
- cat <<EOF
-______________________________________________________
-!!!!!!!!!!!!!!!!!!CONFIGURATION ERROR!!!!!!!!!!!!!!!!!
-
-Gnuastro's version in '$glconf' ($ingversion) doesn't match the tarball
-version that this project was designed to use in '$depverfile'
-($gversion). Please re-run after removing the former file:
-
- $ rm $glconf
- $ ./project configure -e
-
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-
-EOF
- exit 1
- fi
-fi
-# ------------------------------------------
-
-
-
-
-
# Delete final configuration target
# ---------------------------------
#
@@ -1150,12 +1118,15 @@ fi
# Note: if we don't delete them first, it can happen that an extra link
# will be created in each directory that points to its parent. So to be
# safe, we are deleting all the links on each re-configure of the project.
-rm -f .build .local .gnuastro
+rm -f .build .local
+
ln -s $bdir .build
ln -s $instdir .local
ln -s $texdir tex/build
ln -s $tikzdir tex/tikz
+
# --------- Delete for no Gnuastro ---------
+rm -f .gnuastro
ln -s $topdir/reproduce/analysis/config/gnuastro .gnuastro
# ------------------------------------------
@@ -1267,6 +1238,43 @@ fi
+
+# See if the linker accepts -Wl,-rpath-link
+# -----------------------------------------
+#
+# `-rpath-link' is used to write the information of the linked shared
+# library into the shared object (library or program). But some versions of
+# LLVM's linker don't accept it an can cause problems.
+#
+# IMPORTANT NOTE: This test has to be done **AFTER** the definition of
+# 'instdir', otherwise, it is going to be used as an empty string.
+cat > $testsource <<EOF
+#include <stdio.h>
+#include <stdlib.h>
+int main(void) {return EXIT_SUCCESS;}
+EOF
+if $CC $testsource -o$testprog -Wl,-rpath-link 2>/dev/null > /dev/null; then
+ export rpath_command="-Wl,-rpath-link=$instdir/lib"
+else
+ export rpath_command=""
+fi
+
+
+
+
+
+# Delete the compiler testing directory
+# -------------------------------------
+#
+# This directory was made above to make sure the necessary compilers can be
+# run.
+rm -f $testprog $testsource
+rm -rf $compilertestdir
+
+
+
+
+
# Paths needed by the host compiler (only for `basic.mk')
# -------------------------------------------------------
#
diff --git a/reproduce/software/shell/pre-make-build.sh b/reproduce/software/shell/pre-make-build.sh
index 05a4143..9188fc9 100755
--- a/reproduce/software/shell/pre-make-build.sh
+++ b/reproduce/software/shell/pre-make-build.sh
@@ -104,9 +104,17 @@ download_tarball() {
tarballurl=$url/$tarball
fi
- # See if it is in the input software directory.
+ # See if it is in the input-software directory, if so, make a link, if
+ # not copy it. The only issue is that the file in the input-software
+ # directory may actually be a link itself. So to avoid complications
+ # with many links, we'll use 'realpath' (if it exists) to parse the
+ # link and link to an actual file.
if [ -f "$ddir/$tarball" ]; then
- cp $ddir/$tarball $ucname
+ if type realpath > /dev/null 2> /dev/null; then
+ ln -sf "$(realpath $ddir/$tarball)" "$ucname"
+ else
+ cp $ddir/$tarball $ucname
+ fi
else
$downloadwrapper "$downloader" nolock $tarballurl $ucname \
"$bservers"
@@ -118,7 +126,7 @@ download_tarball() {
expectedchecksum=$(awk '/^'$progname'-checksum/{print $3}' $checksumsfile)
if [ x$checksum = x$expectedchecksum ]; then mv "$ucname" "$maneagetar"
else
- echo "ERROR: Non-matching checksum for '$tarball'."
+ echo "ERROR: Non-matching checksum: $tarball"
echo "Checksum should be: $expectedchecksum"
echo "Checksum is: $checksum"
exit 1
diff --git a/tex/src/references.tex b/tex/src/references.tex
index 0589589..3d395ec 100644
--- a/tex/src/references.tex
+++ b/tex/src/references.tex
@@ -1,3 +1,15 @@
+%% Non-software BibTeX entries. The software-specific BibTeX entries are
+%% stored in a `*.tex' file under the `tex/dependencies' directory.
+%
+%% [[[BibTeX 0.99d complains with the at-character, even when its in a
+%% comment line! So ::at:: is used instead in the email address]]].
+%% Copyright (C) 2018-2020 Mohammad Akhlaghi <mohammad::at::akhlaghi.org>
+%
+%% Copying and distribution of this file, with or without modification,
+%% are permitted in any medium without royalty provided the copyright
+%% notice and this notice are preserved. This file is offered as-is,
+%% without any warranty.
+
@ARTICLE{mesnard20,
author = {Olivier Mesnard and Lorena A. Barba},
title = {Reproducible Workflow on a Public Cloud for Computational Fluid Dynamics},