Revision 8161194d68665648b93389adb333e741ba230497 authored by Mohammad Akhlaghi on 22 May 2023, 22:44:20 UTC, committed by Mohammad Akhlaghi on 23 May 2023, 06:42:11 UTC
SUMMARY: no change is necessary in your project, unless you use the Fortran features of WCSLIB in your project. Until now, there were two compilation failures on recent macOS computers with an M1 CPU: Less would crash because it couldn't find the relevant PCRE (perl-compatible regular expression) libraries and WCSLIB would crash because the LLVM compiler's Fortran features could not be built. With this commit, both issues have been fixed by disabling the relevant feature. Extensive comments have been placed in both places in case your project needs these features, so please see the comments in the relevant part of 'reproduce/software/make/basic.mk' for Less and 'reproduce/software/make/high-level.mk' for WCSLIB. In fact the previous solution (where we would not have Fortran features in WCSLIB on macOS systems was problematic and non-reproducibile (the features of WCSLIB depended on the operating system!). Another minor change was that for macOS, we now directly use the version-string of WCSLIB to fix the internal linking issue there. As a result, WCSLIB is no longer a "Version-dependent build" software (in 'reproduce/software/config/versions.conf'). Recall that these are software that when changing the version, it is also necessary to inspect their build recipe. These two issues and their fix were discovered and fixed with the help of James Robinson.
1 parent 644a236
README.md
Software building instructions
------------------------------
Copyright (C) 2019-2023 Mohammad Akhlaghi <mohammad@akhlaghi.org>\
See the end of the file for license conditions.
This directory contains Makefiles that are called by the high-level
`reproduce/software/shell/configure.sh` script. The main target for the
installation of each software is a simple plain text file that contains the
name of the software and its version (which is put in the paper in the
end). Once built, these plain-text files are all put in the proper
sub-directory under `$(BDIR)/software/installed/version-info` (where
`$(BDIR)` is the top-level build-directory specified by the user).
Besides being directly used in the paper, these simple plain text files
also act as prerequisites for higher-level software that depend on
lower-level ones.
### Note on prerequisites
Tarballs are order-only prerequsites (after a `|`) because we already
check their contents with the checksums, so their date is irrelevant: a
tarball with a different content must have a new/different name, thus it
will not exist, so it will be created, even when its order-only.q
Binary programs (that don't install any libraries to be linked/used at
compile time can also be order-only prerequisites, because usually they
don't affect the compilation of the programs that depend on them, they
are only used at run-time or by the low-level build instructions of the
software. Ofcourse, if a program's version affects the build of a
higher-level program, then it shouldn't be order-only.
Libraries or Python modules that are used at compile time must be normal
prerequisites (not order-only), because they are used during the building
of the program.
### Copyright information
This file is part of Maneage (https://maneage.org).
This file is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation, either version 3 of the License, or (at your
option) any later version.
This file is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License along
with this file. If not, see <http://www.gnu.org/licenses/>.

Computing file changes ...