diff options
author | Mohammad Akhlaghi <mohammad@akhlaghi.org> | 2020-08-17 00:28:08 +0100 |
---|---|---|
committer | Mohammad Akhlaghi <mohammad@akhlaghi.org> | 2020-08-20 02:00:32 +0100 |
commit | 3480a74b077f599389fd54a453791a0373568171 (patch) | |
tree | 76e472534d729301ad480e3777c91a7c24a5d331 | |
parent | b79c430c82b6c3a40817caac13bf8665cfa9c6a3 (diff) | |
parent | 9573d4e4d4754e629b73be4bd6846a049d57f427 (diff) |
Imported recent updates in Maneage, minor conflicts fixed
Some very minor conflicts came up and were easily corrected. They were
mostly in parts that are also shared with the demonstration in the core
Maneage branch.
-rw-r--r-- | .file-metadata | bin | 9050 -> 9198 bytes | |||
-rw-r--r-- | README-hacking.md | 50 | ||||
-rw-r--r-- | README.md | 11 | ||||
-rwxr-xr-x | project | 62 | ||||
-rw-r--r-- | reproduce/analysis/config/INPUTS.conf | 37 | ||||
-rw-r--r-- | reproduce/analysis/make/download.mk | 2 | ||||
-rw-r--r-- | reproduce/analysis/make/initialize.mk | 65 | ||||
-rw-r--r-- | reproduce/analysis/make/paper.mk | 8 | ||||
-rw-r--r-- | reproduce/analysis/make/verify.mk | 4 | ||||
-rw-r--r-- | reproduce/software/config/checksums.conf | 80 | ||||
-rw-r--r-- | reproduce/software/config/urls.conf | 31 | ||||
-rw-r--r-- | reproduce/software/config/versions.conf | 85 | ||||
-rw-r--r-- | reproduce/software/make/basic.mk | 138 | ||||
-rw-r--r-- | reproduce/software/make/build-rules.mk | 29 | ||||
-rw-r--r-- | reproduce/software/make/high-level.mk | 63 | ||||
-rw-r--r-- | reproduce/software/make/python.mk | 7 | ||||
-rw-r--r-- | reproduce/software/make/xorg.mk | 1 | ||||
-rwxr-xr-x | reproduce/software/shell/configure.sh | 314 | ||||
-rwxr-xr-x | reproduce/software/shell/pre-make-build.sh | 14 | ||||
-rw-r--r-- | tex/src/references.tex | 12 |
20 files changed, 641 insertions, 372 deletions
diff --git a/.file-metadata b/.file-metadata Binary files differindex dfcf2ed..1d594ed 100644 --- a/.file-metadata +++ b/.file-metadata 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). + @@ -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 @@ -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}, |