aboutsummaryrefslogtreecommitdiff
path: root/reproduce/software
diff options
context:
space:
mode:
Diffstat (limited to 'reproduce/software')
-rw-r--r--reproduce/software/config/checksums.conf2
-rw-r--r--reproduce/software/config/servers-backup.conf2
-rw-r--r--reproduce/software/config/texlive-packages.conf18
-rw-r--r--reproduce/software/config/versions.conf5
-rw-r--r--reproduce/software/make/basic.mk77
-rw-r--r--reproduce/software/make/high-level.mk33
-rwxr-xr-xreproduce/software/shell/configure.sh11
7 files changed, 78 insertions, 70 deletions
diff --git a/reproduce/software/config/checksums.conf b/reproduce/software/config/checksums.conf
index 01ef8c8..130c116 100644
--- a/reproduce/software/config/checksums.conf
+++ b/reproduce/software/config/checksums.conf
@@ -128,7 +128,7 @@ patch-checksum = 75d4e1544484da12185418cd4a1571994398140a91ac606fa08dd067004187d
pcre-checksum = abac4c4f9df9e61d7d7761a9c50843882611752e1df0842a54318f358c28f5953025eba2d78997d21ee690756b56cc9f1c04a5ed591dd60654cc78ba16d9ecfb
pixman-checksum = 333732b99994f7ea636d647e0b6123075351b27601b5b6370c9bc821a1ab3921386ddb92b51e015f3fc35104ba09be1e0d7bef47f0b4f73036b01d1d70396dd9
plplot-checksum = 2c5a36d84ebd948402c924d304427b5702bc75bdd22753c9b3b910b382dfdcc26910382aae452f02d86b25c1c813bbe1f40c9305de1d2809d575975f610fdf10
-python-checksum = de940d7eceee69b8a04f12c613753f61db53ddac1c5cde5388dd342e88a09bae8da1f56b71b96f20997f6203d169e92e9e2558c43b38dbc323221d7bb362abfc
+python-checksum = b3d6b4187b31167b382e195037d7ca01d5e9c112fceb0f12a30c101dbcc91079601c01aa449f9d33d2fc53c795c33305e80c891e986a0e24cbecc14beaf90199
r-cran-checksum = 54cc07956a70c09b5a533188eb063d2a9dc67a8aa5648ec7f9c107f626220c9f6e17ab7175e65dd54a8d608a1ca4106c8ad2856709eb995ab66439b5f033e725
rpcsvc-proto-checksum = c3011d7d7ef97a4a751f6921df1a23e1dd8ac50fb0690c759d37010ed7be27968a2130e3b8872cb48d5914216f9d539096a424f1ec38a75f7ed899748151c6f4
scamp-checksum = c7a192f357c6808acd16d1c5d2657c5c8c2f61e4fecb8a4b18d39b07f4c444f85d5029c21571d41ec3ba9c8d075de8bd660b0e029bf5dd63e3819e963430a938
diff --git a/reproduce/software/config/servers-backup.conf b/reproduce/software/config/servers-backup.conf
index d4aa25e..f0e040e 100644
--- a/reproduce/software/config/servers-backup.conf
+++ b/reproduce/software/config/servers-backup.conf
@@ -9,6 +9,6 @@
# permitted in any medium without royalty provided the copyright notice and
# this notice are preserved. This file is offered as-is, without any
# warranty.
+http://gitlab.cefca.es/maneage/tarballs-software/-/raw/master/
http://gitlab.com/maneage/tarballs-software/-/raw/master
http://git.maneage.org/tarballs-software.git/plain
-http://akhlaghi.org/maneage-software
diff --git a/reproduce/software/config/texlive-packages.conf b/reproduce/software/config/texlive-packages.conf
index bb38d5a..e68a771 100644
--- a/reproduce/software/config/texlive-packages.conf
+++ b/reproduce/software/config/texlive-packages.conf
@@ -5,14 +5,20 @@
# name).
#
# Copyright (C) 2018-2025 Mohammad Akhlaghi <mohammad@akhlaghi.org>
+# Copyright (C) 2022-2025 Boud Roukema <boud@astro.uni.torun.pl>
#
# Copying and distribution of this file, with or without modification, are
# permitted in any medium without royalty provided the copyright notice and
# this notice are preserved. This file is offered as-is, without any
# warranty.
-# Notes
-# -----
+# Hints:
+#
+# - For debugging: after a partial or successful build, look through
+# '.build/software/installed/texlive/maneage/tlpkg/texlive.tlpdb.main.*'
+# to see what packages and files were looked at during the install.
+
+# Notes:
#
# - tex and fancyhdr: These two packages are installed along with the basic
# installation scheme that we used to install tlmgr, they will be ignored
@@ -22,31 +28,23 @@
# - fancyvrb: needed by R.
texlive-packages = biber \
biblatex \
- bitset \
caption \
courier \
csquotes \
datetime \
- ec \
- etoolbox \
- fancyhdr \
fancyvrb \
fmtcount \
fontaxes \
footmisc \
fp \
kastrup \
- letltxmacro \
logreq \
mweights \
newtx \
- pdfescape \
- pdftexcmds \
pgf \
pgfplots \
preprint \
setspace \
- tex \
tex-gyre \
times \
titlesec \
diff --git a/reproduce/software/config/versions.conf b/reproduce/software/config/versions.conf
index 07bdb9e..861b5c5 100644
--- a/reproduce/software/config/versions.conf
+++ b/reproduce/software/config/versions.conf
@@ -149,7 +149,6 @@ patch-version = 2.7.6
pcre-version = 8.44
pixman-version = 0.40.0
plplot-version = 5.15.0
-python-version = 3.13.2
r-cran-version = 4.1.2
rpcsvc-proto-version = 1.4
scamp-version = 2.10.0
@@ -186,6 +185,10 @@ xtrans-version = 1.5.2
lapack-version = 3.8.0
libgit2-version = 1.9.0
+# Python should only be updated by the maintainer for Python packages; see
+# https://savannah.nongnu.org/task/?16622.
+python-version = 3.10.6
+
# Netpbm's questions in the configure steps maybe change with different or
# new versions.
netpbm-version = 10.73.39
diff --git a/reproduce/software/make/basic.mk b/reproduce/software/make/basic.mk
index 628a0e2..cf155f0 100644
--- a/reproduce/software/make/basic.mk
+++ b/reproduce/software/make/basic.mk
@@ -273,46 +273,10 @@ $(ibidir)/gzip-$(gzip-version): | $(ibdir) $(ildir) $(lockdir)
$(call gbuild, gzip-$(gzip-version), static, , V=1)
echo "GNU Gzip $(gzip-version)" > $@
-# 2022-07-14 B Roukema
-#
-# xz-5.2.5 fails on (at least) CentOS 7 (Redhat) systems while trying
-# to compile 'cmake' in Maneage - this is Maneage bug 62700 [1].
-#
-# The fix appears to be just a few lines, although it's not clear
-# how robust or long-term it is. Since we don't yet have 'patch' in
-# 'basic.mk', this file has to be copied into place rather than patched.
-
-# xz-5.2.5_src_liblzma_liblzma.map is a patched
-# version of xz-5.2.5/src/liblzma/liblzma.map based on discussion at
-# [1] + [2] + the patch file [3].
-#
-# [1] https://savannah.nongnu.org/bugs/index.php?62700
-# [2] https://github.com/easybuilders/easybuild-easyconfigs/issues/14991
-# [3] https://raw.githubusercontent.com/easybuilders/easybuild-easyconfigs/bcebb3320ffb63f9804ca8d4d64d1822ec7c9792/easybuild/easyconfigs/x/XZ/XZ-5.2.5_compat-libs.patch
$(ibidir)/xz-$(xz-version): $(ibidir)/gzip-$(gzip-version)
-
-# Prepare the tarball.
tarball=xz-$(xz-version).tar.lz
$(call import-source, $(xz-url), $(xz-checksum))
-
-# Until the bug mentioned above is fixed, we'll can't use the generic
-# rule.
-# $(call gbuild, xz-$(xz-version), static)
-
-# Configure and build with patched file.
- srcdir=$$(pwd)
- unpackdir=xz-$(xz-version)
- patchedfile=xz-5.2.5_src_liblzma_liblzma.map
- cd $(ddir)
- rm -rf $$unpackdir
- tar -x -f $(tdir)/$$tarball
- cd $$unpackdir
- cp -pv $$srcdir/reproduce/software/patches/$$patchedfile \
- src/liblzma/liblzma.map # copy the fixed file into place
- ./configure --prefix=$(idir)
- make install
- cd ..
- rm -rf $$unpackdir
+ $(call gbuild, xz-$(xz-version), static)
echo "XZ Utils $(xz-version)" > $@
$(ibidir)/bzip2-$(bzip2-version): $(ibidir)/gzip-$(gzip-version)
@@ -1247,7 +1211,8 @@ $(ibidir)/binutils-$(binutils-version): \
# Build binutils with the standard 'gbuild' function.
$(call gbuild, binutils-$(binutils-version), static, \
- --with-lib-path=$(sys_library_path), \
+ --with-lib-path=$(sys_library_path) \
+ --enable-gprofng=no, \
-j$(numthreads) V=1)
# The 'ld' linker of Binutils needs several '*crt*.o' files from
@@ -1375,21 +1340,35 @@ $(ibidir)/gcc-$(gcc-version): $(ibidir)/binutils-$(binutils-version)
# to avoid building so many small/temporary files and possibly
# harming the hard-drive or SSD. But if the RAM doesn't have enough
# space, we should use the hard-drive or SSD. During its build,
-# GCC's build directory will become about 7GiB (in units of 1024^3
-# bytes, for GCC 12.1.0, which corresponds to 7.5GB, in units of
-# 1000^3 bytes). So at this step, we make sure that we have more
-# than 12GiB before GCC starts to build. See the figure in the link
-# below for GCC's RAM consumption as a function of time:
+# GCC's build directory will become several gigabytes and the build
+# also needs RAM. You can track the RAM usage of the system with a
+# 1-second resolution (if no other RAM consuming program is running
+# while building GCC) with the command below (example outputs can
+# be seen in https://savannah.nongnu.org/task/index.php?16623).
#
-# https://savannah.nongnu.org/task/?16244#comment12
+# c=1; while true; do POSIXLY_CORRECT=1 df -P /dev/shm/maneage-* | awk 'NR==2{print '$c', $3}'; c=$((c+1)); sleep 1; done > mem-usage.txt
+# asttable mem-usage.txt -c1,'arith $2 512 x 1024 / 1024 / 1024 /' -o mem.fits
#
# For POSIX portability and longevity (default sizes might change),
# we use the '-P' option, and we use the environment variable
-# POSIXLY_CORRECT=1, so the 'block size' is 512 bytes. We'll also
-# allow for about ~0.5 GB at the start.
+# POSIXLY_CORRECT=1, so the 'block size' is 512 bytes. In this way,
+# to get the actual GiB amount, multiply the value returned above
+# by 512 (B/block), then divide by 1024^3 (B/GiB).
+#
+# To get the final value to use here, get the maximum used value
+# after GCC is fully built and you have stopped the 'while true'
+# command above. You can do this with the command below (assumes
+# you have Gnuastro).
+#
+# aststatistics mem-usage.txt -c2 --maximum | asttable -c'arith $1 7000000 +' -Afixed -B0
+#
+# The extra space is because we will assume an extra 3 GiB = 3GiB *
+# 1024^3 (B/GiB) / 512 (B/block) = 6291456 blocks are necessary for
+# the building (let's round it to 7000000!).
#
-# So we need 8 GiB * 1024^3 (B/GiB) / 512 blocks/B = 16777216
-# blocks, in blocks of 512 bytes.
+# Therefore, we need to make sure that the running system more than
+# the necessary amount of space in the RAM. To do this, we use 'df'
+# below.
#
# The 4th column of 'df' is the "available" space at the time of
# running, not the full space. So the 'RAM disk' that the OS
@@ -1399,7 +1378,7 @@ $(ibidir)/gcc-$(gcc-version): $(ibidir)/binutils-$(binutils-version)
# alone - no other Maneage software is built at the same time as
# GCC - so this amount of RAM should be enough.
in_ram=$$(POSIXLY_CORRECT=1 df -P $(ddir) \
- | awk 'NR==2{print ($$4>16777216) ? "yes" : "no"}'); \
+ | awk 'NR==2{print ($$4>26613216) ? "yes" : "no"}'); \
if [ $$in_ram = "yes" ]; then odir=$(ddir)
else
odir=$(BDIR)/software/build-tmp-gcc-due-to-lack-of-space
diff --git a/reproduce/software/make/high-level.mk b/reproduce/software/make/high-level.mk
index fdab193..928d0a2 100644
--- a/reproduce/software/make/high-level.mk
+++ b/reproduce/software/make/high-level.mk
@@ -1098,18 +1098,28 @@ $(ibidir)/cmake-$(cmake-version):
# SHELL=$(SHELL) and we have defined this script.
export MAKE="$(makewshell)"
-# Go into the unpacked directory and build CMake.
+# Go into the unpacked directory and prepare CMake.
cd $(ddir)
rm -rf cmake-$(cmake-version)
tar -xf $(tdir)/$$tarball
cd cmake-$(cmake-version)
$(shsrcdir)/prep-source.sh $(ibdir)
- ./bootstrap --prefix=$(idir) --system-curl --system-zlib \
- --system-bzip2 --system-liblzma --no-qt-gui \
+
+# Bootstrap, build and install CMake:
+# - With the '--no-system-libs' option, CMake builds and statically
+# links all the libraries it needs. Even though some of those (like
+# liblzma, libcurl, zlib or bzip2) are within Maneage, we
+# discovered that CMake can get confused and use out-of-Maneage
+# libraries (https://savannah.nongnu.org/bugs/?63043).
+ ./bootstrap --no-qt-gui \
+ --prefix=$(idir) \
+ --no-system-libs \
--parallel=$(numthreads)
$(makewshell) VERBOSE=1 LIBS="$$LIBS -lssl -lcrypto -lz" \
-j$(numthreads)
$(makewshell) install
+
+# Clean up.
cd ..
rm -rf cmake-$(cmake-version)
echo "CMake $(cmake-version)" > $@
@@ -1960,10 +1970,19 @@ $(itidir)/texlive-ready-tlmgr: reproduce/software/config/texlive.conf
# Live itself (only very basic TeX and LaTeX) and the installation of its
# necessary packages into two packages.
#
-# Note that Biber needs to link with libraries like libnsl. However, we
-# don't currently build biber from source. So we can't choose the library
-# version. But we have the source and build instructions for the 'nsl'
-# library. When we later build biber from source, we can easily use them.
+# Note that we do not build the TeXLive executables (like Biber) from
+# source. So in case they need special libraries, we can't choose the
+# library version here (for example see [1] and [2]). In such cases there
+# is no solution but to manually add the location necessary library to
+# LD_LIBRARY_PATH when calling the respective LaTeX command in
+# 'reproduce/analysis/make/paper.mk'. Fortunately as of Biber 2.20, it does
+# not depend on anything except the C library (all dependencies are now
+# statically linked), so problems [1] and [2] will not happen. But this can
+# generally happen for any other tool/OS, so it is important to build
+# TeXLive from source as soon as possible [3].
+# [1] https://github.com/plk/biber/issues/445
+# [2] https://savannah.nongnu.org/bugs/index.php?63175
+# [3] https://savannah.nongnu.org/task/?15267
$(itidir)/texlive: reproduce/software/config/texlive-packages.conf \
$(itidir)/texlive-ready-tlmgr
diff --git a/reproduce/software/shell/configure.sh b/reproduce/software/shell/configure.sh
index f226ced..d58a829 100755
--- a/reproduce/software/shell/configure.sh
+++ b/reproduce/software/shell/configure.sh
@@ -1439,6 +1439,15 @@ fi
+# Make sure the temporary build directory is empty (un-finished
+# source/build files from previous builds can remain there during debugging
+# or software updates).
+rm -rf $tmpblddir/*
+
+
+
+
+
# Inform the user that the build process is starting
# -------------------------------------------------
#
@@ -1575,7 +1584,7 @@ fi
# cause a crash! To avoid such cases, we need to find the locations of the
# libraries that the shell needs and temporarily add them to the library
# search path.
-if [ x"$$on_mac_os" != xyes ]; then
+if [ x"$on_mac_os" != xyes ]; then
sys_library_sh_path=$(otool -L /bin/sh \
| awk '/\/lib/{print $1}' \
| sed 's#/[^/]*$##' \