aboutsummaryrefslogtreecommitdiff
path: root/reproduce/software/make/basic.mk
diff options
context:
space:
mode:
authorGiacomo Lorenzetti <glorenzetti@cefca.es>2025-11-14 17:37:12 +0100
committerMohammad Akhlaghi <mohammad@akhlaghi.org>2025-12-29 13:00:14 +0100
commit557299b2bafee350e4d60a334990563c931fcf6a (patch)
tree6587118ee66f1c234d7d0a40e807d9afd401f14c /reproduce/software/make/basic.mk
parentc8a42f676cfebad5f81074bac9b662218b1ce6b8 (diff)
IMPORTANT: version updates and improved portability
Summary: this commit involves a major version update of many basic software and Gnuastro's major dependencies. So it may affect your configuration and analysis. Until now, the most recent software updates weren't properly tested on MacOS, causing the software configuration step to fail. In particular, the 'prep-source.sh' (that corrects any hard-coded '/bin/sh' within the unpacked tarballs of all software) as well as some issues in the 'tar', 'util-linux' and 'ghostscript' programs. These portability issues were found and fixed by Raul Infante-Sainz and Giacomo Lorenzetti. With this commit, those portability issues have been addressed while updating the following software. Also see notes below the list. High-level software: CFITSIO 4.5.0 --> 4.6.3 Ghostscript 10.04.0 --> 10.06.0 Gnuastro 0.23 --> 0.24 Util-linux 2.40.4 --> 2.41.3 WCSLIB 8.4 --> 8.5 Basic software: cURL 8.11.1 --> 8.17.0 GNU Bash 5.2.37 --> 5.3.9 GNU Binutils 2.43.1 --> 2.45.1 GNU Coreutils 9.6 --> 9.9 GNU Diffutils 3.10 --> 3.12 GNU AWK 5.3.1 --> 5.3.2 GNU GCC 14.2.0 --> 15.2.0 GNU Gettext 0.23.1 --> 0.26 GNU Grep 3.11 --> 3.12 GNU Gzip 1.13 --> 1.14 GNU Libunistring 1.3 --> 1.4.1 GNU M4 1.4.19 --> 1.4.20 GNU MPFR 4.2.1 --> 4.2.2 GNU Nano 8.3 --> 8.7 GNU Readline 8.2.13 --> 8.3.3 Git 2.48.1 --> 2.52.0 Less 668 --> 685 Libxml2 2.13.1 --> 2.15.1 OpenSSL 3.4.0 --> 3.6.0 Perl 5.40.1 --> 5.42.0 The latest versions of Bash and M4 were prepared for the new default C standard of GCC 15.*, so the '-std=gnu17' was removed for them. Also, while a new version of Dash was available, it would cause an issue when building in Apptainer, so it has been described in 'versions.conf' to be aware in the future updates. Libgit2 has been removed as a dependency of Gnuastro. The reason is fully described in the comment on top of Gnuastro's build rule in 'high-level.mk'.
Diffstat (limited to 'reproduce/software/make/basic.mk')
-rw-r--r--reproduce/software/make/basic.mk26
1 files changed, 10 insertions, 16 deletions
diff --git a/reproduce/software/make/basic.mk b/reproduce/software/make/basic.mk
index 4b18c29..5a7024e 100644
--- a/reproduce/software/make/basic.mk
+++ b/reproduce/software/make/basic.mk
@@ -344,24 +344,22 @@ $(ibidir)/zlib-$(zlib-version): | $(ibdir) $(ildir) $(lockdir)
echo "Zlib $(zlib-version)" > $@
# GNU Tar: When built statically, tar gives a segmentation fault on
-# unpacking Bash. So we'll build it dynamically. Note that technically, zip
-# and unzip aren't dependencies of Tar, but for a clean build, we'll set
-# Tar to be the last compression-related software (the first-set of
-# software to be built).
+# unpacking Bash. So we'll build it dynamically.
$(ibidir)/tar-$(tar-version): \
$(ibidir)/xz-$(xz-version) \
$(ibidir)/gzip-$(gzip-version) \
$(ibidir)/zlib-$(zlib-version) \
$(ibidir)/bzip2-$(bzip2-version)
-# Since all later programs depend on Tar, the configuration will hit
-# a bottleneck here: only making Tar. So its more efficient to built
-# it on multiple threads (even when the user's Make doesn't pass down
-# the number of threads).
+# About the onfigurations: nls and iconv were creating problems with
+# the dependencies on MacOs and are not relevant in the context of
+# Maneage, hence, they are disabled.
$(call unsafe-config)
tarball=tar-$(tar-version).tar.lz
$(call import-source, $(tar-url), $(tar-checksum))
- $(call gbuild, tar-$(tar-version), , , -j$(numthreads) V=1)
+ $(call gbuild, tar-$(tar-version), , \
+ --disable-nls am_cv_func_iconv=no, \
+ -j$(numthreads) V=1)
echo "GNU Tar $(tar-version)" > $@
@@ -540,6 +538,7 @@ $(ibidir)/readline-$(readline-version): \
# pname=bash50-$(printf "%03d" $i); \
# wget http://ftp.gnu.org/gnu/bash/bash-5.0-patches/$pname -O ../$pname;\
# patch -p0 -i ../$pname; \
+# rm ../$pname; \
# done
# $ cd ..
# $ mv bash-5.0 bash-5.0.$number
@@ -565,7 +564,7 @@ $(ibidir)/bash-$(bash-version): \
if [ "x$(static_build)" = xyes ]; then stopt="--enable-static-link"
else stopt=""
fi;
- export CFLAGS="$$CFLAGS -std=gnu17 \
+ export CFLAGS="$$CFLAGS \
-DDEFAULT_PATH_VALUE='\"$(ibdir)\"' \
-DSTANDARD_UTILS_PATH='\"$(ibdir)\"' \
-DSYS_BASHRC='\"$(BASH_ENV)\"' "
@@ -1065,10 +1064,6 @@ $(ibidir)/grep-$(grep-version): $(ibidir)/coreutils-$(coreutils-version)
-j$(numthreads) V=1)
echo "GNU Grep $(grep-version)" > $@
-# M4 doesn't depend on PatchELF, but just to be consistent with the
-# levels/phases introduced here (where the compressors are level 1,
-# PatchELF is level 2, and ...), we'll set it as a dependency.
-#
# The '--with-syscmd-shell' is used as the default shell and if not given,
# 'm4' will use '/bin/sh' (which is not under Maneage control and can cause
# problems in 'high-level.mk' because it closes off the system's
@@ -1076,10 +1071,9 @@ $(ibidir)/grep-$(grep-version): $(ibidir)/coreutils-$(coreutils-version)
# library, the high-level programs will not be built). We are setting this
# default shell to Dash because M4 is built before our own Bash. Recall
# that Dash is built before we enter this Makefile.
-$(ibidir)/m4-$(m4-version): $(ibidir)/patchelf-$(patchelf-version)
+$(ibidir)/m4-$(m4-version): $(ibidir)/libiconv-$(libiconv-version)
tarball=m4-$(m4-version).tar.lz
$(call import-source, $(m4-url), $(m4-checksum))
- export CFLAGS="-std=gnu17 $$CFLAGS"
$(call gbuild, m4-$(m4-version), static, \
--with-syscmd-shell=$(ibdir)/dash, \
-j$(numthreads) V=1)