diff options
| author | Boud Roukema <boud@cosmo.torun.pl> | 2026-01-18 22:50:48 +0600 |
|---|---|---|
| committer | Mohammad Akhlaghi <mohammad@akhlaghi.org> | 2026-05-03 03:00:18 +0200 |
| commit | d99b69fdb52f2fd522f53bba29a42d3ba8af5361 (patch) | |
| tree | c99e3b167a6af946f268a8f597de059b2a2c7dc2 /reproduce/analysis | |
| parent | d7264f9cfd6dd17fa2b5a60a8696dfde08ee18de (diff) | |
Summary: this commit has no effect on your project's analysis steps, just
check the list of changed Python software versions (if you used them).
Until now, the Python packages of Maneage had not been maintained for some
time, there were several portability issues: updates to the GNU C Library
needed an update to some of the basic software, and the latest macOS
features caused some crashes.
With this commit, along with the software version updates of [1], the
removed software of [2] and newly added software of [3], the following
issues in Maneage have been addressed:
- README-hacking:
- Published paper list: Added links to two published papers.
- Publication checklist: added tips on how to squash the full LaTeX
source of a Maneage'd projet (which includes many LaTeX files) into a
single LaTeX file for some journals.
- A new "Maneage Development Workflow" section has been added; see it
for details.
- paper.mk: empty macro files are not included in the built 'project.tex'
since they have no effect and because they can cause problems with
uploading to arXiv (which removes empty files).
- verify.mk: when verification is activated:
- When a macro file does not exist (can happen by mistake), an error is
printed to remind the author.
- Better dealing with empty macro files (no need to add their hash).
- versions.conf: 26 Python packages that cannot currently be built with
the new Python build system of Maneage have been separated and commented
to cause an early crash if they are required; and encourage volunteers
to help update them.
This commit is a git "squash" of contributions from the following people
- Boud Roukema: updated/added Python packages and fixed many portability
issues.
- Faezeh Bidjarchian: fixed some portability issues on macOS.
- Giacomo Lorenzetti: tested and fixed issues in newly added software.
- Khalid Masum: fixed issue with order of LD_LIBRARY_PATH in 'basic.mk'.
- Mohammad Akhlaghi: fixed basic software issues and reviewed edits for
the merge.
- Raul Infante-Sainz: fixed portability issues on macOS.
- Sepideh Eskandarlou: helped in finding the verification fixes.
[1] Updated software
Name Group Version (old -> new)
---- ----- --------------------
GNU Coreutils basic 9.9 -> 9.11
GNU Gettext basic 0.26 -> 1.0
GNU libunistring basic 1.4.1 -> 1.4.2
GNU M4 basic 1.4.20 -> 1.4.21
GNU Nano basic 8.7 -> 9.0
Ninja high-level 1.12.1 -> 1.13.2
OpenMPI high-level 4.1.1 -> 5.0.10
SWIG high-level 4.0.2 -> 4.3.1
Zip high-level 3.0 -> 3.0-15
Astropy python 7.0.1 -> 7.1.0
mpi4py python 3.1.3 -> 4.0.3
setuptools python 75.8.0 -> 80.8.0
[2] Removed software: 'podlators' has been removed from basic software
because the necessary scripts that it provided are included in Perl's
default installation.
[3] New software:
Name Group Version
---- ----- -------
framel high-level 8.47.3
GNU Parallel high-level 20260322
Healpix high-level 3.83-2024Nov13
Metaio high-level 8.5.0-a5da19d
PCRE2 high-level 10.45
SQLite high-level 3.53.0
TCL high-level 9.1a1
TK high-level 9.1a1
tzdb high-level 2026a
lalsuite high-level v7.26-15-g1e4c5e5080
astropy-healpix python 1.1.2
colorama python 0.4.6
cosmodesi-mpytools python 1.0.0-04369fc9
exceptiongroup python 1.3.0
filt-scm python 1.7.0
hatchling python 1.27.0
hatch-vcs python 0.5.0
healpy python 1.18.1
joblib python 1.5.0
igwn-ligolw python 2.1.0
igwn-segments python 2.1.0
iniconfig python 2.1.0
ligo-skymap python 2.4.0
lscsoft-glue python 4.1.0
networkx python 3.5
pandas python 2.2.3
pathspec python 0.12.1
pluggy python 1.6.0
pyfftw python 0.15.1
pygments python 2.19.2
pytest python 8.4.1
python3-fitsio python 1.3.0
pytz python 2025.2
scikit-base python 0.12.2
scikit-learn python 1.6.1
threadpoolctl python 3.6.0
tqdm python 4.67.1
trove-classifiers python 2025.5.9.12
versioneer python 0.29
Diffstat (limited to 'reproduce/analysis')
| -rw-r--r-- | reproduce/analysis/make/paper.mk | 60 | ||||
| -rw-r--r-- | reproduce/analysis/make/verify.mk | 41 |
2 files changed, 75 insertions, 26 deletions
diff --git a/reproduce/analysis/make/paper.mk b/reproduce/analysis/make/paper.mk index d2db4d3..c218cdd 100644 --- a/reproduce/analysis/make/paper.mk +++ b/reproduce/analysis/make/paper.mk @@ -19,6 +19,21 @@ +# Software info in TeX +# -------------------- +# +# The information of the installed software is placed in the +# '.build/software' directory (which the TeX build should not depend +# on). Therefore, we should copy those macros here in the LaTeX build +# directory, so the TeX directory is completely independent from each +# other. +$(mtexdir)/dependencies.tex: $(bsdir)/config/dependencies.tex + cp $(bsdir)/config/*.tex $(mtexdir)/ + + + + + # LaTeX macros for paper # ---------------------- # @@ -40,19 +55,36 @@ # Note that if you don't want the final PDF and just want the processing # and file outputs, you can give any value other than 'yes' to # 'pdf-build-final' in 'reproduce/analysis/config/pdf-build.conf'. -$(mtexdir)/project.tex: $(mtexdir)/verify.tex +$(mtexdir)/project.tex: $(mtexdir)/verify.tex $(mtexdir)/dependencies.tex # If no PDF is requested, or if LaTeX isn't available, don't continue # to building the final PDF. Otherwise, merge all the TeX macros into # one for building the PDF. - @if [ -f .local/bin/pdflatex ] && [ x"$(pdf-build-final)" = xyes ]; then + @if [ -f .local/bin/pdflatex ] && [ x"$(pdf-build-final)" = xyes ]; + then # Put a LaTeX input command for all the necessary macro files. -# 'hardware-parameters.tex' is created in 'configure.sh'. +# Note that 'hardware-parameters.tex' is created in 'configure.sh' +# (which is why it is first in the list). projecttex=$(mtexdir)/project.tex rm -f $$projecttex - for t in $(subst paper,,$(makesrc)) hardware-parameters; do - echo "\input{tex/build/macros/$$t.tex}" >> $$projecttex + for t in hardware-parameters $(subst paper,,$(makesrc)); do + +# Only add the macro file to 'project.tex' if the macro file is +# not empty. Empty macro files are not a bug in Maneage alone: 1) +# the processing of a sub-Makefile may not need to produce any +# written macro for the PDF, and that is perfectly fine. 2) LaTeX +# can also '\input' an empty file. However, it is important for +# for publication servers (like arXiv) that do not allow +# uploading empty files. Therefore, when 'project.tex' contains +# empty files, such severs will not be able compile the PDF +# because the file name is mentioned in 'project.tex', but cannot +# be found in the uploaded files. + tfile=tex/build/macros/$$t.tex + if [ -s $$tfile ]; then + echo "\input{$$tfile}" >> $$projecttex + fi + done # Possibly highlight the '\new' parts of the text. @@ -110,21 +142,6 @@ tikzdir:=$(texbdir)/tikz -# Software info in TeX -# -------------------- -# -# The information of the installed software is placed in the -# '.build/software' directory (which the TeX build should not depend -# on). Therefore, we should copy those macros here in the LaTeX build -# directory, so the TeX directory is completely independent from each -# other. -$(mtexdir)/dependencies.tex: $(bsdir)/config/dependencies.tex - cp $(bsdir)/config/*.tex $(mtexdir)/ - - - - - # The bibliography # ---------------- # @@ -137,8 +154,7 @@ $(mtexdir)/dependencies.tex: $(bsdir)/config/dependencies.tex # recipe and the 'paper.pdf' recipe. But if 'tex/src/references.tex' hasn't # been modified, we don't want to re-build the bibliography, only the final # PDF. -$(texbdir)/paper.bbl: tex/src/references.tex $(mtexdir)/dependencies.tex \ - | $(mtexdir)/project.tex +$(texbdir)/paper.bbl: tex/src/references.tex | $(mtexdir)/project.tex # If '$(mtexdir)/project.tex' is empty, don't build PDF. @macros=$$(cat $(mtexdir)/project.tex) diff --git a/reproduce/analysis/make/verify.mk b/reproduce/analysis/make/verify.mk index 4fedefd..91c4b77 100644 --- a/reproduce/analysis/make/verify.mk +++ b/reproduce/analysis/make/verify.mk @@ -138,11 +138,44 @@ $(mtexdir)/verify.tex: $(foreach s, $(verify-dep), $(mtexdir)/$(s).tex) # Verify TeX macros (the values that go into the PDF text). for m in $(verify-check); do - file=$(mtexdir)/$$m.tex - if [ $$m == delete-me ]; then s=711e2f7fa1f16ecbeeb3df6bcb4ec705 - else echo; echo "'$$m' not recognized."; exit 1 + +# Set the macro file name, make sure it exists (the user may have +# forgot to create it in the respective sub-Makefile). + tfile=$(mtexdir)/$$m.tex + if ! [ -f $$tfile ]; then + printf "$$tfile: ERROR: does not exist! If you do not " + printf "(currently) plan macros to be added to the final " + printf "PDF from that sub-Makefile, do the following to " + printf "avoid this error: put a 'touch \$$@' as the recipe " + printf "of the '\$$(mtexdir)/$$m.tex' target (at the bottom " + printf "of 'reproduce/analysis/make/$$m.mk'). If you later " + printf "decide to define macros there, simply replace the " + printf "temporary 'touch \$$@' command with the command(s) " + printf "to prepare/write the macro (see 'initialize.mk' " + printf "as an example)\n"; + exit 1 fi - $(call verify-txt-no-comments-no-space, $$file, $$s, $@.tmp) + +# Check the hash for this file and verify it. + case $$m in + delete-me) s=711e2f7fa1f16ecbeeb3df6bcb4ec705;; + *) # This file's hash is not in the list above. + +# If the file is empty, we can skip it (with the 'continue' +# command). Otherwise, the user should be informed with an +# error. + if [ -s $$tfile ]; then + printf "$$tfile: ERROR: please add the hash of this " + printf "macro file to the list of hashes above this " + printf "error message (in " + printf "'reproduce/analysis/make/verify.mk')\n"; exit 1 + else + continue + fi + ;; + esac + $(call verify-txt-no-comments-no-space, $$tfile, $$s, $@.tmp) + done # Move temporary file to final target. |
