From aee6d612073ce9be8aef4183c5ac7688ed4733e8 Mon Sep 17 00:00:00 2001 From: Raul Infante-Sainz Date: Wed, 1 Jul 2020 13:19:23 +0100 Subject: Minor typo corrected in referencing Libidn Until this commit, once Libidn was installed, insted of its own name and version, the name and version of Libjpeg were saved (in the target if Libidn). This robably come from a copy/paste of the rule. With this commit, this minor bug has been corrected. I also added my name as an author of `reproduce/software/make/xorg.mk' Makefile since I added some code there. --- reproduce/software/make/high-level.mk | 2 +- reproduce/software/make/xorg.mk | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) (limited to 'reproduce') diff --git a/reproduce/software/make/high-level.mk b/reproduce/software/make/high-level.mk index cf104e6..6e14b2d 100644 --- a/reproduce/software/make/high-level.mk +++ b/reproduce/software/make/high-level.mk @@ -555,7 +555,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 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 +# Copyright (C) 2020 Raul Infante-Sainz # # 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 -- cgit v1.2.1 From deba07c43ebddc31ecdbcf520e2bbaf57e6f8027 Mon Sep 17 00:00:00 2001 From: Mohammad Akhlaghi Date: Wed, 1 Jul 2020 18:14:44 +0100 Subject: Properly accounting for space characters in host's PATH Until now, when reading the host's PATH environment variable we weren't accounting for directory names with a space character. This was most prominently visible in the 'low-level-links' step where we put links to some core system components into the project's build directory (mainly for prorietary systems like macOS). To address the problem, double quotations have been placed around the part that we extract 'ccache' from the PATH, and the part where we make the symbolic link. In the process the comments above 'makelink' were made more clear and 'low-level-links' now depends on 'grep' (which is the highest-level program it uses). This bug was reported by Mahdieh Navabi. --- reproduce/software/make/basic.mk | 32 ++++++++++++++++++++------------ 1 file changed, 20 insertions(+), 12 deletions(-) (limited to 'reproduce') diff --git a/reproduce/software/make/basic.mk b/reproduce/software/make/basic.mk index 453eddb..2c7401e 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,19 @@ 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. 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 "$$(which $(1))" $(ibdir)/$(1); \ else \ - ln -sf $$(which $(1)) $(ibdir)/$(3); \ + ln -sf "$$(which $(1))" $(ibdir)/$(3); \ fi; \ else \ if [ "x$(strip $(2))" = xmandatory ]; then \ @@ -166,7 +174,7 @@ 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. -- cgit v1.2.1 From 6322d4f3961bc4b275707366d9bb2703ab98be79 Mon Sep 17 00:00:00 2001 From: Mohammad Akhlaghi Date: Sat, 4 Jul 2020 21:48:10 +0100 Subject: Better names and comments in INPUTS.conf Until now, the dataset's configuration names had a 'WFPC2' prefix. But this very alien to anyone that is not familiar with the history of the Hubble Space Telescope (the camera is no longer used! Its just used here since its one of the standard FITS files from the FITS standard webpage). With this commit the variable names have been modified to be more readable and clear (having a 'DEMO-' prefix). Also the comments of 'INPUTS.conf' (describing the purpose of each variable) were edited and made more clear. --- reproduce/analysis/config/INPUTS.conf | 43 +++++++++++++++++++---------------- reproduce/analysis/make/delete-me.mk | 12 +++++----- reproduce/analysis/make/download.mk | 5 ++-- 3 files changed, 32 insertions(+), 28 deletions(-) (limited to 'reproduce') diff --git a/reproduce/analysis/config/INPUTS.conf b/reproduce/analysis/config/INPUTS.conf index 5e6c425..60abd49 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. # @@ -43,9 +47,8 @@ -# Demonstration image used in the histogram plot (remove this when -# customizing). -WFPC2IMAGE = WFPC2ASSNu5780205bx.fits -WFPC2MD5 = a4791e42cd1045892f9c41f11b50bad8 -WFPC2SIZE = 62kb -WFPC2URL = https://fits.gsfc.nasa.gov/samples/$(WFPC2IMAGE) +# Demo dataset used in the histogram plot (remove when customizing). +DEMO-DATA = WFPC2ASSNu5780205bx.fits +DEMO-MD5 = a4791e42cd1045892f9c41f11b50bad8 +DEMO-SIZE = 62K +DEMO-URL = https://fits.gsfc.nasa.gov/samples/$(DEMO-DATA) diff --git a/reproduce/analysis/make/delete-me.mk b/reproduce/analysis/make/delete-me.mk index f45f9ea..bc94bf1 100644 --- a/reproduce/analysis/make/delete-me.mk +++ b/reproduce/analysis/make/delete-me.mk @@ -61,8 +61,8 @@ $(dm-squared): $(pconfdir)/delete-me-squared-num.conf | $(tex-publish-dir) -# WFPC2 image PDF -# ----------------- +# Demo image PDF +# -------------- # # For an example image, we'll make a PDF copy of the WFPC II image to # display in the paper. @@ -82,8 +82,8 @@ $(dm-img-pdf): $(dm-histdir)/%.pdf: $(indir)/%.fits | $(dm-histdir) -# Histogram of WFPC2 image -# ------------------------ +# Histogram of demo image +# ----------------------- # # For an example plot, we'll show the pixel value histogram also. IMPORTANT # NOTE: because this histogram contains data that is included in a plot, we @@ -103,7 +103,7 @@ $(dm-img-histogram): $(tex-publish-dir)/%-histogram.txt: $(indir)/%.fits \ # metadata from '$@.data', and add copyright. echo "# Histogram of example image to demonstrate Maneage (MANaging data linEAGE)." \ > $@.tmp - echo "# Example image URL: $(WFPC2URL)/$(WFPC2IMAGE)" >> $@.tmp + echo "# Example image URL: $(DEMO-URL)" >> $@.tmp echo "# " >> $@.tmp awk '/^# Column .:/' $@.data >> $@.tmp echo "# " >> $@.tmp @@ -162,7 +162,7 @@ $(mtexdir)/delete-me.tex: $(dm-squared) $(dm-img-pdf) $(dm-img-histogram) \ v=$$(echo "$$mm" | awk '{printf "%.3f", $$2}'); echo "\newcommand{\deletememax}{$$v}" >> $@ - # Write the statistics of the WFPC2 image as a macro. + # Write the statistics of the demo image as a macro. mean=$$(awk '{printf("%.2f", $$1)}' $(dm-img-stats)) echo "\newcommand{\deletemewfpctwomean}{$$mean}" >> $@ median=$$(awk '{printf("%.2f", $$2)}' $(dm-img-stats)) diff --git a/reproduce/analysis/make/download.mk b/reproduce/analysis/make/download.mk index bc8b8ce..fb3f523 100644 --- a/reproduce/analysis/make/download.mk +++ b/reproduce/analysis/make/download.mk @@ -58,7 +58,7 @@ $(inputdatasets): $(indir)/%.fits: | $(indir) $(lockdir) # Set the necessary parameters for this input file. if [ $* = wfpc2 ]; then - localname=$(WFPC2IMAGE); url=$(WFPC2URL); mdf=$(WFPC2MD5); + localname=$(DEMO-DATA); url=$(DEMO-URL); mdf=$(DEMO-MD5); else echo; echo; echo "Not recognized input dataset: '$*.fits'." echo; echo; exit 1 @@ -84,6 +84,7 @@ $(inputdatasets): $(indir)/%.fits: | $(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':" @@ -102,4 +103,4 @@ $(inputdatasets): $(indir)/%.fits: | $(indir) $(lockdir) # It is very important to mention the address where the data were # downloaded in the final report. $(mtexdir)/download.tex: $(pconfdir)/INPUTS.conf | $(mtexdir) - echo "\\newcommand{\\wfpctwourl}{$(WFPC2URL)}" > $@ + echo "\\newcommand{\\wfpctwourl}{$(DEMO-URL)}" > $@ -- cgit v1.2.1 From cedea21b101bc1a3af90f0c97b5bb768311630fd Mon Sep 17 00:00:00 2001 From: Mohammad Akhlaghi Date: Sat, 4 Jul 2020 22:15:45 +0100 Subject: Commit hash of Maneage branch used to build project as LaTeX macro To help in the documentation, the Git hash of the Maneage branch commit that the project has most recently merged with (or branched from) is now also provided as a LaTeX macro ('\maneageversion'). It is calculated in 'reproduce/analysis/make/initialize.mk' (in the recipe to 'initialize.tex'). --- reproduce/analysis/make/initialize.mk | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'reproduce') diff --git a/reproduce/analysis/make/initialize.mk b/reproduce/analysis/make/initialize.mk index 315be1a..dff5eca 100644 --- a/reproduce/analysis/make/initialize.mk +++ b/reproduce/analysis/make/initialize.mk @@ -465,3 +465,9 @@ $(mtexdir)/initialize.tex: | $(mtexdir) # Version and title of project. echo "\newcommand{\projecttitle}{$(metadata-title)}" > $@ echo "\newcommand{\projectversion}{$(project-commit-hash)}" >> $@ + + # Calculate the latest Maneage commit used to build this + # project. Note that the '--dirty' option isn't applicable to + # "commit-ishes" (direct quote from Git's error message!). + v=$$(git describe --always --long maneage) + echo "\newcommand{\maneageversion}{$$v}" >> $@ -- cgit v1.2.1 From 1bc00c9e64bba6ebd4c90301cc2a22f25466f72f Mon Sep 17 00:00:00 2001 From: Mohammad Akhlaghi Date: Thu, 2 Jul 2020 17:56:46 +0100 Subject: Only using clang in macOS systems that also have GCC Until now, when Maneage was built on a macOS that had both a clang and GCC, we would make links to both. But this cause many conflicts in some high-level programs (for example Numpy and etc, all the programs where we have explicity set 'export CC=clang' before the build recipe). This happens because the GCC that is built on a macOS isn't complete for some operations. To fix this problem, when we are on a macOS, we explicity set 'gcc' to point to 'clang' and 'g++' to point to 'clang++'. We also don't link to the host's C-preprocessor ('cpp') on macOS systems because this is only a GNU feature and using the GNU CPP is also known to have some basic problems. For example this was reported by Mahdieh Nabavi (which was the main trigger for this work): ld: Symbol not found: ___keymgr_global Referenced from: /Users/Mahdieh/build/software/installed/bin/cpp Expected in: /usr/lib/libSystem.B.dylib Also, to avoid linking to another link on the host tools (in the 'makelink' function of 'basic.mk'), we are now using 'realpath'. --- reproduce/software/make/basic.mk | 85 +++++++++++++++++++++++++++------------- 1 file changed, 58 insertions(+), 27 deletions(-) (limited to 'reproduce') diff --git a/reproduce/software/make/basic.mk b/reproduce/software/make/basic.mk index 2c7401e..b9678d0 100644 --- a/reproduce/software/make/basic.mk +++ b/reproduce/software/make/basic.mk @@ -152,6 +152,12 @@ backupservers = $(filter-out $(topbackupserver),$(backupservers_all)) # # 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) \ @@ -160,9 +166,9 @@ makelink = origpath="$$PATH"; \ | 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 \ @@ -177,11 +183,6 @@ $(ibdir) $(ildir):; mkdir $@ $(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++) - # Mac OS specific $(call makelink,mig) $(call makelink,xcrun) @@ -1278,6 +1279,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 -rf $(ildir)/gcc $(ildir)/libcc* $(ildir)/libgcc* + rm -f $(ibdir)/*gcc* $(ibdir)/gcov* $(ibdir)/cc $(ibdir)/c++ + rm -f $(ibdir)/*g++ $(ibdir)/cpp $(ibdir)/gfortran $(ibdir)/strip + 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 @@ -1285,34 +1296,53 @@ $(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 @@ -1406,6 +1436,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)" > $@ -- cgit v1.2.1 From 5d97210eef4ba7804501c28b0ddeb9ffe1e23064 Mon Sep 17 00:00:00 2001 From: Mohammad Akhlaghi Date: Sun, 5 Jul 2020 16:18:45 +0100 Subject: Removing possibly existing paper.bbl before remaking it Until now, when the bibliography file ('paper.bbl') had a LaTeX-related error (for example the journal name was a LaTeX macro that isn't defined), the first 'pdflatex' command that is run before 'biber' would crash, not allowing the project to reach 'biber'. So the user would have to manually remove 'paper.bbl' before running './project make'. With this commit, we remove any possibly existing 'paper.bbl' file before rebuilding it. Generally, this also helps in keeping things clean during the generation of the new bibliography. This bug was found by Mahdieh Nabavi. --- reproduce/analysis/make/paper.mk | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'reproduce') diff --git a/reproduce/analysis/make/paper.mk b/reproduce/analysis/make/paper.mk index 5227e55..e207337 100644 --- a/reproduce/analysis/make/paper.mk +++ b/reproduce/analysis/make/paper.mk @@ -101,6 +101,12 @@ $(texbdir)/paper.bbl: tex/src/references.tex $(mtexdir)/dependencies-bib.tex \ export TEXINPUTS=$$p: cd $(texbdir); + # 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 -- cgit v1.2.1 From 0e4d4b357f4c2209aea8012847b1309fe8b33b13 Mon Sep 17 00:00:00 2001 From: Mohammad Akhlaghi Date: Sun, 5 Jul 2020 19:17:05 +0100 Subject: Configure script prefers clang for macOS systems In the previous commit (Commit 1bc00c9: Only using clang in macOS systems that also have GCC) we set the used C compiler for high-level programs to be 'clang' on macOS systems. But I forgot to do the same kind of change in the configure script (to prefer 'clang' when we are testing for a C compiler on the host). With this commit, the compiler checking phases of the configure script have been improved, so on macOS systems, we now first search for 'clang', then search for 'gcc'. While doing this, I also noticed that the 'rpath' checking command was done before we actually define 'instdir'!!! So in effect, the 'rpath' directory was being set to '/lib'! So with this commit, this test has been taken to after defining 'instdir'. --- reproduce/software/make/high-level.mk | 1 + reproduce/software/shell/configure.sh | 224 +++++++++++++++++++--------------- 2 files changed, 129 insertions(+), 96 deletions(-) (limited to 'reproduce') diff --git a/reproduce/software/make/high-level.mk b/reproduce/software/make/high-level.mk index 6e14b2d..3ac3b49 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 diff --git a/reproduce/software/shell/configure.sh b/reproduce/software/shell/configure.sh index f428416..001b531 100755 --- a/reproduce/software/shell/configure.sh +++ b/reproduce/software/shell/configure.sh @@ -186,35 +186,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 < /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 < $testsource < #include @@ -257,7 +314,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 +325,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 +335,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 < -#include -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 +356,7 @@ if $CC $testsource -o$testprog 2>/dev/null > /dev/null; then else needs_ldl=yes; fi -rm -f $testprog $testsource + @@ -351,25 +381,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 < $testsource < +#include +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') # ------------------------------------------------------- # -- cgit v1.2.1 From e1f10ac4516f64019204cadfb05dc9fe4b617d35 Mon Sep 17 00:00:00 2001 From: Mohammad Akhlaghi Date: Tue, 7 Jul 2020 13:58:04 +0100 Subject: Project distribution tarball can account for no PDFs in tex/tikz Until now the './project make dist' command implicitly assumed that the 'tex/tikz' directory always contains PDF files (because of the 'cp tex/tikz/*.pdf $$dir/tex/tikz' line). This was annoying for projects that don't use TiKZ or PGFPlots to generate their plots, and they had to manually comment this line. With this commit a check has been placed to see if any PDF files exist in there at all. If there aren't PDF files, the 'cp' command above is ignored. --- reproduce/analysis/make/initialize.mk | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'reproduce') diff --git a/reproduce/analysis/make/initialize.mk b/reproduce/analysis/make/initialize.mk index dff5eca..29cd2dc 100644 --- a/reproduce/analysis/make/initialize.mk +++ b/reproduce/analysis/make/initialize.mk @@ -304,10 +304,15 @@ $(project-package-contents): paper.pdf | $(texdir) # Copy all the necessary `reproduce' and `tex' contents. shopt -s extglob cp -r tex/src $$dir/tex/src - cp tex/tikz/*.pdf $$dir/tex/tikz cp -r reproduce/* $$dir/reproduce cp -r tex/build/!($(project-package-name)) $$dir/tex/build + # 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 + # 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 -- cgit v1.2.1 From c85272705b7544edaf3dadda14581157fc18826c Mon Sep 17 00:00:00 2001 From: Marius Peper Date: Tue, 7 Jul 2020 22:58:07 +0200 Subject: Fixed typo that lead to crash when building healpy Until now, if a project needed the healpy software package, Maneage would crash with the following error message (abridged for full name in build directory). This was caused by a typo in the version of 'healpix' (the dependency of 'healpy'). make: *** No rule to make target '.../version-info/proglib/healpix-' With this commit, the typo in line 334 of 'python.mk' is fixed, so that when '$(ipydir)/healpy-$(healpy-version)' gets called it correctly searches for a rule to make '$(ibidir)/healpix-$(healpix-version)'. --- reproduce/software/make/python.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'reproduce') diff --git a/reproduce/software/make/python.mk b/reproduce/software/make/python.mk index ccfbc72..2fede35 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): \ -- cgit v1.2.1 From 2ed8a2d60bc991ad06411b2aab43989a64a59a2d Mon Sep 17 00:00:00 2001 From: Boud Roukema Date: Mon, 20 Jul 2020 18:31:43 +0200 Subject: make dist: only archive files that are under version control Until this commit, the '$(project-package-contents)' rules in 'reproduce/analysis/make/initialize.mk' included a line to provide all contents, recursively, of the directory 'reproduce/' in the package for further distribution. This could potentially lead to the distribution of private working files that are used during development and not intended for general distribution. With this commit, only those files in 'reproduce/' and 'tex/src' that are under version control are copied to the temporary directory (that is later used for creating an archive). With this change, the archiving commands actually became more clean (we don't have to manually remove 'LOCAL.conf' or other temporary files). Extensive comments have also been added above each step to clarify each step's purpose and method. --- reproduce/analysis/make/initialize.mk | 48 ++++++++++++++++++++++------------- 1 file changed, 31 insertions(+), 17 deletions(-) (limited to 'reproduce') diff --git a/reproduce/analysis/make/initialize.mk b/reproduce/analysis/make/initialize.mk index 29cd2dc..211c1c0 100644 --- a/reproduce/analysis/make/initialize.mk +++ b/reproduce/analysis/make/initialize.mk @@ -298,32 +298,46 @@ $(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 reproduce/* $$dir/reproduce cp -r tex/build/!($(project-package-name)) $$dir/tex/build + # 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* + # 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 - # 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. - rm -rf $$dir/tex/build/build* - rm $$dir/reproduce/software/config/LOCAL.conf - rm $$dir/reproduce/analysis/config/gnuastro/gnuastro-local.conf - # 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' # file into the distributing tarball. However, BibLaTeX is -- cgit v1.2.1 From 2bfe5e16a0ba8198d9a77d6e36c17ac5daed7705 Mon Sep 17 00:00:00 2001 From: Boud Roukema Date: Mon, 20 Jul 2020 18:15:12 +0200 Subject: README-hacking.md: clarify Zenodo usage in publication checklist This commit clarifies the initial usage of Zenodo for reserving a Zenodo identifier and starting an 'unpublished' upload. Some other minor wording changes are done here. --- reproduce/analysis/make/verify.mk | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'reproduce') diff --git a/reproduce/analysis/make/verify.mk b/reproduce/analysis/make/verify.mk index 69711d5..b3d62f2 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 -- cgit v1.2.1 From 2fadf4ba6f411c0b74d5d443fb01d6380dc34f10 Mon Sep 17 00:00:00 2001 From: Boud Roukema Date: Tue, 21 Jul 2020 18:01:22 +0200 Subject: Printing location when downloaded input data checksum is different There are many different directory trees involved in Maneage system: the top directory, the 'reproduce/' directory and its sub-directories, '.build/' (that point to a user-defined build area), and a possibly user-defined input directory. Until now, in the case of a download checksum failure, it was not immediately obvious [1] to the user *where* the file with a failed checksum is. To clarify to the user *where* the suspicious file is now located, this commit adds a line to 'reproduce/analysis/make/download.mk' to print out this full path location: '$$unchecked' along with the expected and calculated checksums. [1] Euphemism for me spending lots of time debugging and being confused. --- reproduce/analysis/make/download.mk | 1 + 1 file changed, 1 insertion(+) (limited to 'reproduce') diff --git a/reproduce/analysis/make/download.mk b/reproduce/analysis/make/download.mk index fb3f523..0eb28ff 100644 --- a/reproduce/analysis/make/download.mk +++ b/reproduce/analysis/make/download.mk @@ -88,6 +88,7 @@ $(inputdatasets): $(indir)/%.fits: | $(indir) $(lockdir) 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 -- cgit v1.2.1 From cbd4a41555c7d4aecaea03a4cc4298da8320f01c Mon Sep 17 00:00:00 2001 From: Boud Roukema Date: Fri, 31 Jul 2020 19:04:08 +0200 Subject: OpenMPI build with slurm compatibility Prior to this commit, compilation of OpenMPI used the default OpenMPI choices of deciding which libraries should be used in relating to a job scheduler [1] (such as Slurm [2]). Given that the user on a multi-user cluster has to accept the sysadmin's choice of a job scheduler, the question of whether to (1) link with OpenMPI's own libraries (and increase the reproducibility of the science project) or rather (2) link with the sysadmin managed libraries (more likely to be compatible with the host's job scheduler), is an open question of which the best strategy for reproducibility needs to be debated and studied. In this commit, strategy (1) is adopted. The options '--withpmix=internal' and '--with-hwloc=internal' are added to the configure command. The working assumption is that the Maneage version of OpenMPI is likely to be modern enough to be compatible with the native job scheduler such as Slurm. Compilation without any 'pmix' option gave a fail in at least one case; it appears that an external pmix library was sought by the configure script. As of OpenMPI 4.0.1, the internal libevent library is used by default, so there appears to be no option to force it to be chosen internally. This commit also includes the option '--without-verbs'. This option removes a library related to "infiniband", "verbs", "openib" and "BTL"; this library appears to be deprecated. See [3], [4] for discussion. Please add feedback and discussion to the Maneage task about openmpi linking strategies (1) (internal) and (2) (external) at Savannah [5]. [1] https://en.wikipedia.org/wiki/Job_scheduler#Batch_queuing_for_HPC_clusters [2] https://en.wikipedia.org/wiki/Slurm_Workload_Manager - To avoid a name clash, 'slurm-wlm' is the metapackage in Debian for the client commands, the compute node daemon, and the central node daemon. An unrelated package 'slurm' also exists. [3] https://www-lb.open-mpi.org/faq/?category=openfabrics#ofa-device-error [4] https://www-lb.open-mpi.org/faq/?category=building [5] https://savannah.nongnu.org/task/index.php?15737 --- reproduce/software/make/high-level.mk | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'reproduce') diff --git a/reproduce/software/make/high-level.mk b/reproduce/software/make/high-level.mk index 3ac3b49..4052ed4 100644 --- a/reproduce/software/make/high-level.mk +++ b/reproduce/software/make/high-level.mk @@ -641,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)" > $@ -- cgit v1.2.1 From 32f3ba14f6c6efcef7edea0a365638527721f509 Mon Sep 17 00:00:00 2001 From: Boud Roukema Date: Sun, 2 Aug 2020 00:48:06 +0100 Subject: initialize.mk: accounting for no maneage branch One of the LaTeX macros reported by 'initialize.mk' is the git commit hash of the most recent 'maneage' branch that the project has been branched from. However, not all projects will retain the maneage reference. This can happen for example when people don't push the 'maneage' reference to their repository and then clone from their own repository to a second computer. Therefore, until now, in such situations, Maneage would break with an error. With this commit, in such scenarios, a place holder string is used instead, clearly highlighting that there is no 'maneage' reference. --- reproduce/analysis/make/initialize.mk | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'reproduce') diff --git a/reproduce/analysis/make/initialize.mk b/reproduce/analysis/make/initialize.mk index 211c1c0..fca75f5 100644 --- a/reproduce/analysis/make/initialize.mk +++ b/reproduce/analysis/make/initialize.mk @@ -486,7 +486,12 @@ $(mtexdir)/initialize.tex: | $(mtexdir) echo "\newcommand{\projectversion}{$(project-commit-hash)}" >> $@ # Calculate the latest Maneage commit used to build this - # project. Note that the '--dirty' option isn't applicable to - # "commit-ishes" (direct quote from Git's error message!). - v=$$(git describe --always --long maneage) + # 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}" >> $@ -- cgit v1.2.1 From d3739931e1662d1476988badb3305e53b0355cda Mon Sep 17 00:00:00 2001 From: Boud Roukema Date: Sat, 8 Aug 2020 17:58:03 +0200 Subject: Configuration fail if gfortran necessary, but not built or available When the host C compiler is used (either by calling '--host-cc' or on OSs that we can't build the GNU C Compiler), Maneage will also not build the Fortran compiler 'gfortran'. Until now, the './project configure' script would give a big warning about the need for 'gfortran' and the fact that it is missing, and would for 5 seconds, but it would continue anyway. For projects that don't need 'gfortran', this can be confusing to the users and for those that need 'gfortran', it means that a lot of time and cpu cycles are wasted compiling non-fortran software that are unusable in the end. With this commit, the 'need_gfortarn' variable has been added 'reproduce/software/shell/configure.sh', in a new part that is devoted to project-specific features. If it equals '0', then the 'gfortran' test (and message!) isn't done at all, but if it is set to '1', then the configure stage will halt immediately gfortran is not found and not built. The default operations of the core Maneage branch don't need 'gfortran', so by default it is set to 0. But 'gfortran' is necessary for all projects that use Numpy (Python's numeric library) for example. So if your project needs 'gfortran', please set this new variable to 1. As mentioned in the comments of 'configure.sh', ideally we should detect this automatically, but we haven't had the time to implement it yet. --- reproduce/software/shell/configure.sh | 66 ++++++++++++++++++++++------------- 1 file changed, 41 insertions(+), 25 deletions(-) (limited to 'reproduce') diff --git a/reproduce/software/shell/configure.sh b/reproduce/software/shell/configure.sh index 001b531..b11992e 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 # -------------------- # @@ -518,36 +532,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 < /dev/null 2>/dev/null; then hasfc=1; fi + if [ $hasfc = 0 ]; then + cat < $testsource @@ -563,20 +581,18 @@ ______________________________________________________ Host Fortran compiler ('gfortran') can't build a simple program. -A working Fortran compiler is necessary for building some software (which -may not be necessary for this project!). Please use the error message above -to find a good solution and re-run the project configuration. +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 - -Project's configuration will continue in 2 seconds. ______________________________________________________ EOF - sleep 2 + exit 1 fi fi fi -- cgit v1.2.1 From b3b44798a3f472e5f5a6633de4a582d4c902b008 Mon Sep 17 00:00:00 2001 From: Mohammad Akhlaghi Date: Thu, 18 Jun 2020 18:01:33 +0100 Subject: IMPORTANT: New software versions (17 basic, 16 high-level and 7 Python) It was a long time that the Maneage software versions hadn't been updated. With this commit, the versions of all basic software were checked and 17 of that had newer versions were updated. Also, 16 high-level programs and libraries were updated as well as 7 Python modules. The full list is available below. Basic Software (affecting all projects) --------------------------------------- bash 5.0.11 -> 5.0.18 binutils 2.32 -> 2.35 coreutils 8.31 -> 8.32 curl 7.65.3 -> 7.71.1 file 5.36 -> 5.39 gawk 5.0.1 -> 5.1.0 gcc 9.2.0 -> 10.2.0 gettext 0.20.2 -> 0.21 git 2.26.2 -> 2.28.0 gmp 6.1.2 -> 6.2.0 grep 3.3 -> 3.4 libbsd 0.9.1 -> 0.10.0 ncurses 6.1 -> 6.2 perl 5.30.0 -> 5.32.0 sed 4.7 -> 4.8 texinfo 6.6 -> 6.7 xz 5.2.4 -> 5.2.5 Custom programs/libraries ------------------------- astrometrynet 0.77 -> 0.80 automake 0.16.1 -> 0.16.2 bison 3.6 -> 3.7 cfitsio 3.47 -> 3.48 cmake 3.17.0 -> 3.18.1 freetype 2.9 -> 2.10.2 gdb 8.3 -> 9.2 ghostscript 9.50 -> 9.52 gnuastro 0.11 -> 0.12 libgit2 0.28.2 -> 1.0.1 libidn 1.35 -> 1.36 openmpi 4.0.1 -> 4.0.4 R 3.6.2 -> 4.0.2 python 3.7.4 -> 3.8.5 wcslib 6.4 -> 7.3 yaml 0.2.2 -> 0.2.5 Python modules -------------- cython 0.29.6 -> 0.29.21 h5py 2.9.0 -> 2.10.0 matplotlib 3.1.1 -> 3.3.0 mpi4py 3.0.2 -> 3.0.3 numpy 1.17.2 -> 1.19.1 pybind11 2.4.3 -> 2.5.0 scipy 1.3.1 -> 1.5.2 --- reproduce/software/config/TARGETS.conf | 2 +- reproduce/software/config/checksums.conf | 80 +++++++++++++++--------------- reproduce/software/config/urls.conf | 31 ++++++------ reproduce/software/config/versions.conf | 85 +++++++++++++++++--------------- reproduce/software/make/basic.mk | 29 ++++++----- reproduce/software/make/build-rules.mk | 20 ++++++-- reproduce/software/make/high-level.mk | 55 +++++++++++++++++---- reproduce/software/make/python.mk | 5 +- reproduce/software/shell/configure.sh | 50 ++----------------- 9 files changed, 187 insertions(+), 170 deletions(-) (limited to 'reproduce') diff --git a/reproduce/software/config/TARGETS.conf b/reproduce/software/config/TARGETS.conf index 8d3bdb0..5f10c96 100644 --- a/reproduce/software/config/TARGETS.conf +++ b/reproduce/software/config/TARGETS.conf @@ -35,7 +35,7 @@ -# Programs and libraries. +# Programs and libraries (for Python modules, add to 'top-level-python'). top-level-programs = gnuastro # Python libraries/modules. 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 b9678d0..0b672d8 100644 --- a/reproduce/software/make/basic.mk +++ b/reproduce/software/make/basic.mk @@ -183,6 +183,10 @@ $(ibdir) $(ildir):; mkdir $@ $(ibidir)/low-level-links: $(ibidir)/grep-$(grep-version) \ | $(ibdir) $(ildir) + # Hardware specific + $(call makelink,lp) # For printing, necessary for R. + $(call makelink,lpr) # For printing, necessary for R. + # Mac OS specific $(call makelink,mig) $(call makelink,xcrun) @@ -922,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)) @@ -959,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) @@ -1211,6 +1215,7 @@ $(ibidir)/binutils-$(binutils-version): \ $(call makelink,ld) $(call makelink,nm) $(call makelink,ps) + $(call makelink,strip) $(call makelink,ranlib) echo "" > $@ else @@ -1220,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) @@ -1284,9 +1290,9 @@ $(ibidir)/gcc-$(gcc-version): $(ibidir)/binutils-$(binutils-version) # 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 -f $(ibdir)/*g++ $(ibdir)/cpp $(ibdir)/gfortran $(ibdir)/strip rm -rf $(ildir)/libgfortran* $(ildir)/libstdc* rm $(idir)/x86_64* # GCC builds is own libraries in '$(idir)/lib64'. But all other @@ -1315,7 +1321,6 @@ $(ibidir)/gcc-$(gcc-version): $(ibidir)/binutils-$(binutils-version) # having GNU CPP in the project build directory is known to cause # problems with 'libX11'. $(call makelink,gfortran) - $(call makelink,strip,mandatory) if [ x$(on_mac_os) = xyes ]; then $(call makelink,clang) $(call makelink,clang++) diff --git a/reproduce/software/make/build-rules.mk b/reproduce/software/make/build-rules.mk index 7471e5b..86370ab 100644 --- a/reproduce/software/make/build-rules.mk +++ b/reproduce/software/make/build-rules.mk @@ -170,11 +170,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 4052ed4..9f434bc 100644 --- a/reproduce/software/make/high-level.mk +++ b/reproduce/software/make/high-level.mk @@ -763,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)" > $@ @@ -785,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)" > $@ @@ -853,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)" > $@ @@ -916,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)" > $@ @@ -1096,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}" > $@ @@ -1163,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 @@ -1181,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 \ @@ -1209,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 @@ -1225,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 2fede35..d39208f 100644 --- a/reproduce/software/make/python.mk +++ b/reproduce/software/make/python.mk @@ -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/shell/configure.sh b/reproduce/software/shell/configure.sh index b11992e..593b1d9 100755 --- a/reproduce/software/shell/configure.sh +++ b/reproduce/software/shell/configure.sh @@ -58,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 -# ------------------------------------------ @@ -634,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 @@ -1010,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 < Date: Sat, 8 Aug 2020 22:48:53 +0100 Subject: Software tarballs saved as symlinks if already in filesystem Until now, if the software source tarballs already existed on the system they would be copied inside the project. However, the software source tarballs are sometimes/mostly larger than their actual product and can consume significant space (~375 MB in the core branch!). With this commit, when the software are present on the system, their symbolic link will be placed in 'BDIR/software/tarballs', not a full copy. Also, because the tarballs in software tarball directory may themselves be links, we use 'realpath' to find the final place of the actual file and link to that location. Therefore if 'realpath' can't be found (prior to installing Coreutils in Maneage), we will copy the tarballs from the given software tarball directory. After Maneage has installed Coreutils, the project's own 'realpath' will be used. Of course, if the software are downloaded, their full downloaded copy will be kept in 'BDIR/software/tarballs', nothing has changed in the downloading scenario. --- reproduce/software/make/build-rules.mk | 9 +++++++-- reproduce/software/shell/pre-make-build.sh | 14 +++++++++++--- 2 files changed, 18 insertions(+), 5 deletions(-) (limited to 'reproduce') diff --git a/reproduce/software/make/build-rules.mk b/reproduce/software/make/build-rules.mk index 86370ab..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; \ 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 -- cgit v1.2.1