aboutsummaryrefslogtreecommitdiff
path: root/reproduce/software/make
diff options
context:
space:
mode:
authorGiacomo Lorenzetti <glorenzetti@cefca.es>2025-01-21 18:57:10 +0100
committerMohammad Akhlaghi <mohammad@akhlaghi.org>2025-02-11 20:47:53 +0100
commit890858795fd6e0c8c1f3050adec7f4bc78e9e47c (patch)
tree00ae9a5b75dd3edaea8f64109afcf77e4947d3f1 /reproduce/software/make
parent3c9bf3aff30f02c7d31bd86f36c4db2520f8ffa4 (diff)
IMPORTANT: 73 software upgrades and added offline mode
Summary: This is a software update to make Maneage more portable and up to date. It does not involve any Maneage infrastructure changes. You should just re-build your project to make sure the updated software haven't removed/changed any of their features that you were using. Until now, the software in Maneage had not been updated for almost 2.5 years (since August 2022) and were starting to get dated! Also, when no internet is available (for example in a HPC), the Zenodo check would always cause a crash and needed to be commented manually. With this commit, all the basic software that had been updated as well as the dependencies of Gnuastro (which we commit to maintaining) have been updated after a check of their webpage (see the full list below). To fix the offline issue, a new '--offline' option has been added to the project script. The other following changes were made: - tarball-prepare: has become more resilient (for dealing with file name with spaces or Lzip, which should not be compressed). - Readme: improve documentation when used in Docker. Below you can see the list of basic software that have been updated. The only basic software that have not been updated upstream since the previous Maneage software update are 'bison', 'flock', 'm4', 'pkgconfig', 'unzip' and 'zip'. bash 5.2-rc2 5.2.37 binutils 2.39 2.43.1 coreutils 9.1 9.6 curl 7.84.0 8.11.1 dash 0.5.11-057cd65 0.5.12 diffutils 3.8 3.10 file 5.42 5.46 findutils 4.9.0 4.10.0 gawk 5.1.1 5.3.1 gcc 12.1.0 14.2.0 gettext 0.21 0.23.1 git 2.37.1 2.48.1 gmp 6.2.1 6.3.0 grep 3.7 3.11 gzip 1.12 1.13 help2man 1.49.2 1.49.3 isl 0.24 0.27 less 590 668 libiconv 1.17 1.18 libtool 2.4.7 2.5.4 libunistring 1.0 1.3 libxml2 2.9.12 2.13.5 lzip 1.23 1.25 make 4.3 4.4.1 mpc 1.2.1 1.3.1 mpfr 4.1.0 4.2.1 nano 6.4 8.3 ncurses 6.3 6.5 openssl 3.0.5 3.4.0 perl 5.36.0 5.40.1 podlators 4.14 6.0.2 readline 8.2-rc2 8.2.13 sed 4.8 4.9 tar 1.34 1.35 texinfo 6.8 7.2 wget 1.21.2 1.25.0 which 2.21 2.23 xz 5.2.5 5.6.3 zlib 1.2.11 1.3.1 The high-level software that have been updated. autoconf 2.71 2.72 automake 1.16.5 1.17 cfitsio 4.1.0 4.5.0 cmake 3.24.0 3.31.5 expat 2.4.1 2.6.4 fontconfig 2.14.0 2.16.0 freetype 2.11.0 2.13.3 ghostscript 9.56.1 10.04.0 gnuastro 0.18 0.23 gsl 2.7 2.8 libffi 3.4.2 3.4.7 libgit2 1.3.0 1.9.0 libice 1.0.10 1.1.2 libidn 1.38 1.42 libjpeg 9e 9f libpaper 1.1.28 1.1.29 libpng 1.6.37 1.6.46 libpthread-stubs 0.4 0.5 libsm 1.2.3 1.2.5 libtiff 4.4.0 4.7.0 libxau 1.0.9 1.0.12 libxcb 1.15 1.17 libxdmcp 1.1.3 1.1.5 libxext 1.3.4 1.3.6 libxt 1.2.1 1.3.1 python 3.10.6 3.13.12 util-macros 1.19.3 1.20.2 wcslib 7.11 8.4 xcb-proto 1.15 1.17 xorgproto 2022.1 2024.1 xtrans 1.4.0 1.5.2
Diffstat (limited to 'reproduce/software/make')
-rw-r--r--reproduce/software/make/basic.mk2
-rw-r--r--reproduce/software/make/high-level.mk46
-rw-r--r--reproduce/software/make/python.mk18
-rw-r--r--reproduce/software/make/xorg.mk2
4 files changed, 44 insertions, 24 deletions
diff --git a/reproduce/software/make/basic.mk b/reproduce/software/make/basic.mk
index 68c40b3..628a0e2 100644
--- a/reproduce/software/make/basic.mk
+++ b/reproduce/software/make/basic.mk
@@ -774,7 +774,7 @@ $(ibidir)/openssl-$(openssl-version): $(ibidir)/podlators-$(podlators-version) \
# First download the certificates and copy them into the
# installation directory.
tarball=cert.pem-$(certpem-version)
- $(call import-source, $(cert-url), $(cert-checksum))
+ $(call import-source, $(certpem-url), $(certpem-checksum))
cp $(tdir)/cert.pem-$(certpem-version) $(idir)/etc/ssl/cert.pem
# Now download the OpenSSL tarball.
diff --git a/reproduce/software/make/high-level.mk b/reproduce/software/make/high-level.mk
index 2274c45..fdab193 100644
--- a/reproduce/software/make/high-level.mk
+++ b/reproduce/software/make/high-level.mk
@@ -118,11 +118,16 @@ else
endif
+# Disable the TeXLive target if `--offline`
+ifneq ($(strip $(offline)),1)
+ target-texlive := $(itidir)/texlive
+endif
+
# Ultimate Makefile target.
all: $(foreach p, $(targets-proglib), $(ibidir)/$(p)) \
$(foreach p, $(targets-python), $(ipydir)/$(p)) \
$(foreach p, $(targets-r-cran), $(ircrandir)/$(p)) \
- $(itidir)/texlive
+ $(target-texlive)
# Define the shell environment
# ----------------------------
@@ -433,11 +438,14 @@ $(ibidir)/cfitsio-$(cfitsio-version):
# Continue the standard build on the customized tarball. Note that
# with the installation of CFITSIO, 'fpack' and 'funpack' are not
# installed by default. Because of that, they are added explicity.
+#
+# Note that older versions of CFITSIO (before 4.4.0) require a
+# specific 'shared' target for the building of the shared libraries.
export gbuild_tar=$(ddir)/$$customtar
$(call gbuild, cfitsio-$(cfitsio-version), , \
--enable-sse2 --enable-reentrant \
--with-bzip2=$(idir), , \
- make shared fpack funpack)
+ make fpack funpack)
rm $$customtar
echo "CFITSIO $(cfitsio-version)" > $@
@@ -921,8 +929,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.1.3.dylib \
- $(ildir)/libgit2.1.3.dylib
+ install_name_tool -id $(ildir)/libgit2.1.9.dylib \
+ $(ildir)/libgit2.1.9.dylib
fi
echo "Libgit2 $(libgit2-version)" > $@
@@ -1156,7 +1164,9 @@ $(ibidir)/ghostscript-$(ghostscript-version): \
--disable-cups \
--enable-dynamic \
--disable-compile-inits \
- CFLAGS="-DPNG_ARM_NEON_OPT=0"
+ --disable-hidden-visibility \
+ CFLAGS="-DPNG_ARM_NEON_OPT=0" \
+ LDFLAGS=-Wl,--copy-dt-needed-entries
# Build and install the program and the shared libraries.
make V=1 -j$(numthreads)
@@ -1642,7 +1652,10 @@ $(ibidir)/swig-$(swig-version):
# '$(ibdir)'. If any program does need 'util-linux' libraries, they can
# simply add the proper directories to the environment variables, see
# 'fontconfig' for example.
-$(ibidir)/util-linux-$(util-linux-version): | $(idircustom)
+$(ibidir)/util-linux-$(util-linux-version): \
+ $(ibidir)/autoconf-$(autoconf-version) \
+ $(ibidir)/automake-$(automake-version) \
+ | $(idircustom)
# Import the source.
tarball=util-linux-$(util-linux-version).tar.lz
@@ -1663,18 +1676,20 @@ $(ibidir)/util-linux-$(util-linux-version): | $(idircustom)
git apply util-linux-$(util-linux-version)-macos.patch
fi
-# The 'mkswap' feature needs low-level file system and kernel headers
-# that are not always available (in particular on older Linux
-# kernels). Also, creating SWAP space will need root permissions, so
-# its not something a Maneager may need! Unfortunately there is no
-# configuration option to disable this so we'll have to disable it
-# manually by commenting the relevant files in the
-# 'configure.ac'. Having a more recent 'configure.ac' will trigger
-# the './configure' script to be re-created after the first run, but
-# it is pretty fast and not a problem.
+# The 'mkswap' feature needs low-level file system and kernel headers
+# that are not always available (in particular on older Linux
+# kernels). Also, creating SWAP space will need root permissions, so
+# its not something a Maneager may need! Unfortunately there is no
+# configuration option to disable this so we'll have to disable it
+# manually by commenting the relevant files in the
+# 'configure.ac'.
sed -e's|UL_BUILD_INIT(\[mkswap\], \[yes\])|UL_BUILD_INIT(\[mkswap\], \[no\])|' \
-i configure.ac
+# Having updated 'configure.ac', we need to re-generate the
+# './configure' script with 'autoreconf' (which is part of Autoconf
+# and needs Automake; hence why they are dependencies.
+ autoreconf -f
# Configure Util-linux
export CONFIG_SHELL=$(ibdir)/bash
@@ -1682,6 +1697,7 @@ $(ibidir)/util-linux-$(util-linux-version): | $(idircustom)
--disable-dependency-tracking \
--enable-libmount-support-mtab \
--disable-silent-rules \
+ --disable-liblastlog2 \
--disable-mountpoint \
--disable-libmount \
--disable-unshare \
diff --git a/reproduce/software/make/python.mk b/reproduce/software/make/python.mk
index deeccf2..43e2e77 100644
--- a/reproduce/software/make/python.mk
+++ b/reproduce/software/make/python.mk
@@ -106,13 +106,17 @@ $(ibidir)/python-$(python-version): $(ibidir)/libffi-$(libffi-version)
# libraries to link to and those are blocked at this level). So we
# need to add an extra line on top of the 'os.system' funciton and
# put '/usr/lib' in 'LD_LIBRARY_PATH' within Python's environment for
-# system calls (with 'os.putenv').
- awk '{if(/os.system\(/) \
- { print " os.putenv(\"LD_LIBRARY_PATH\", \"$$LD_LIBRARY_PATH:$(sys_library_sh_path)\");"; \
- print $$0;} \
- else print $$0}' \
- setup.py > setup-tmp.py
- mv setup-tmp.py setup.py
+# system calls (with 'os.putenv'). As of Python 3.13.2 the tarball no
+# longer has an 'setup.py'. But when it did, the change below was
+# necessary.
+ if [ -f setup.py ]; then
+ awk '{if(/os.system\(/) \
+ { print " os.putenv(\"LD_LIBRARY_PATH\", \"$$LD_LIBRARY_PATH:$(sys_library_sh_path)\");"; \
+ print $$0;} \
+ else print $$0}' \
+ setup.py > setup-tmp.py
+ mv setup-tmp.py setup.py
+ fi
# Do the basic installation and delete the temporary directory.
./configure SHELL=$(ibdir)/bash \
diff --git a/reproduce/software/make/xorg.mk b/reproduce/software/make/xorg.mk
index 3f99fab..864c32a 100644
--- a/reproduce/software/make/xorg.mk
+++ b/reproduce/software/make/xorg.mk
@@ -79,7 +79,7 @@ $(ibidir)/libxau-$(libxau-version): $(ibidir)/xorgproto-$(xorgproto-version)
# Library implementing the X Display Manager Control Protocol.
$(ibidir)/libxdmcp-$(libxdmcp-version): $(ibidir)/libxau-$(libxau-version)
- tarball=libXdmcp-$(libxdmcp-version).tar.bz2
+ tarball=libXdmcp-$(libxdmcp-version).tar.lz
$(call import-source, $(libxdmcp-url), $(libxdmcp-checksum))
$(call gbuild, libXdmcp-$(libxdmcp-version),,$(XORG_CONFIG), V=1)
echo "libXdmcp (Xorg) $(libxdmcp-version)" > $@