diff options
author | Mohammad Akhlaghi <mohammad@akhlaghi.org> | 2025-02-13 19:27:57 +0100 |
---|---|---|
committer | Mohammad Akhlaghi <mohammad@akhlaghi.org> | 2025-02-17 02:22:03 +0100 |
commit | a55a407c1f2a1b280be78f24abd1fe6d4a8032e2 (patch) | |
tree | 713948559febca0523d848d54051cb27488f81b6 /reproduce/software/make/high-level.mk | |
parent | 890858795fd6e0c8c1f3050adec7f4bc78e9e47c (diff) |
Configuration: new server for tarballs and portability fixed
SUMMARY: no change is necessary for your pipeline after upgrading to this
commit.
Until this commit, the following noteworthy portability problems existed
that have been fixed as described in each item.
- In commit 8908587 (titled "IMPORTANT: 73 software upgrades and added
offline mode"; committed on 2025-02-11); the versions of all (except
those that were not updated upstream) basic software as well as the
high-level software necessary for Gnuastro were updated. This included
Python. However, the update of Python could cause crashes in the
Python-related software that are also in Maneage but not tested for
that commit.
-- With this commit, Python has been revered back to 3.10.6 (from
3.13.2) and it has been taken to a dedicated part of 'versions.conf'
(reminding the reader that the version of Python should only be
updated by the Python maintainer: to ensure it doesn't conflict with
Python-based builds).
- Following the update of XZ Utils in 8908587, the custom build recipe
that was necessary is no longer necessary. This was reported by Boud
Roukema (see https://savannah.nongnu.org/bugs/index.php?62700).
-- With this commit, XZ Utils uses our basic high-level build scripts.
- CMake could use out-of-Maneage libraries for those that we already had
in Maneage on some systems. This was reported by Boud Roukema (see
https://savannah.nongnu.org/bugs/?63043)
-- With this commit, CMake is built with '--no-system-libs'; so it
builds and statically links to all its necessary libraries
internally (not confusing between Maneage and the host).
- Building Binutils 2.39 was likely to fail on older GCC versions due to
special features (such as the 'gprofng' feature when building with GCC
6.2.0). This was reported by Boud Roukema in
https://savannah.nongnu.org/bugs/index.php?63242.
-- With this commit, the 'gprofng' feature of Binutils has been
disabled by default to allow reproducibility on older systems. If
you need it, remove the '--enable-gprofng=no' option in the build
recipe of Binutils.
- The Maneage tarball repository is now also kept in 'gitlab.cefca.es'.
-- With this commit, a new server URL has been added for this.
- The list of TeXLive packages included some packages that get installed
in the basic scheme that we do for the initial setup of TeXLive.
-- With this commit, the extra packages have been removed.
Diffstat (limited to 'reproduce/software/make/high-level.mk')
-rw-r--r-- | reproduce/software/make/high-level.mk | 33 |
1 files changed, 26 insertions, 7 deletions
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 |