<feed xmlns='http://www.w3.org/2005/Atom'>
<title>project.git/reproduce/software/shell, branch maneage</title>
<subtitle>Core Maneage branch (where all projects derive from)</subtitle>
<link rel='alternate' type='text/html' href='http://git.maneage.org/project.git/'/>
<entry>
<title>All: copyright years updated to 2026</title>
<updated>2026-01-01T18:05:42+00:00</updated>
<author>
<name>Mohammad Akhlaghi</name>
<email>mohammad@akhlaghi.org</email>
</author>
<published>2026-01-01T18:05:42+00:00</published>
<link rel='alternate' type='text/html' href='http://git.maneage.org/project.git/commit/?id=d33f7ce35dd3eec4fcb7ee5c30f27b95521e20c7'/>
<id>d33f7ce35dd3eec4fcb7ee5c30f27b95521e20c7</id>
<content type='text'>
Summary: this commit will not affect your project's software or analysis.

Until now, the ending copyright years of all files in Maneage were
2025. But we have already entered 2026 so it is important to update them.

With this commit, the ending copyright year of all files is changed to
2026.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Summary: this commit will not affect your project's software or analysis.

Until now, the ending copyright years of all files in Maneage were
2025. But we have already entered 2026 so it is important to update them.

With this commit, the ending copyright year of all files is changed to
2026.
</pre>
</div>
</content>
</entry>
<entry>
<title>apptainer.sh: more clear option names</title>
<updated>2025-12-29T20:02:50+00:00</updated>
<author>
<name>Mohammad Akhlaghi</name>
<email>mohammad@akhlaghi.org</email>
</author>
<published>2025-12-29T20:02:50+00:00</published>
<link rel='alternate' type='text/html' href='http://git.maneage.org/project.git/commit/?id=7719b8c404e5ccba010c1e5cce0a5dfd905a29ef'/>
<id>7719b8c404e5ccba010c1e5cce0a5dfd905a29ef</id>
<content type='text'>
Summary: The Apptainer script's option names have been renamed: '--sif' and
'--base-sif' are new names for the old '--project-name' and '--base-name'.

Until now the options that took SIF files in the Apptainer script were not
too clear (in their name): ending in '-name' (not clearly mentioning that
it needs a file name). Also, in the same script, we had forgot to add an
option to allow the user to choose a different base operating system!

With this commit, both the issues above have been fixed: the options end in
'-sif' (clearly informing the user that a SIF file is expected) and we now
have a new '--base-os' option. In the process, a few other parts of Maneage
were also polished:

  - README-hacking.md: the newly published J-PLUS PSF paper was added to
    the list of Maneage'd papers and the final journal information for the
    NASIM paper has been added. Some typos here and there were also fixed.

  - The curretnly used VIM needed the the '-std=gnu17': necessary now that
    the default Maneage GCC 15.2.0 for the high-level software which
    defaults to C23.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Summary: The Apptainer script's option names have been renamed: '--sif' and
'--base-sif' are new names for the old '--project-name' and '--base-name'.

Until now the options that took SIF files in the Apptainer script were not
too clear (in their name): ending in '-name' (not clearly mentioning that
it needs a file name). Also, in the same script, we had forgot to add an
option to allow the user to choose a different base operating system!

With this commit, both the issues above have been fixed: the options end in
'-sif' (clearly informing the user that a SIF file is expected) and we now
have a new '--base-os' option. In the process, a few other parts of Maneage
were also polished:

  - README-hacking.md: the newly published J-PLUS PSF paper was added to
    the list of Maneage'd papers and the final journal information for the
    NASIM paper has been added. Some typos here and there were also fixed.

  - The curretnly used VIM needed the the '-std=gnu17': necessary now that
    the default Maneage GCC 15.2.0 for the high-level software which
    defaults to C23.
</pre>
</div>
</content>
</entry>
<entry>
<title>IMPORTANT: version updates and improved portability</title>
<updated>2025-12-29T12:00:14+00:00</updated>
<author>
<name>Giacomo Lorenzetti</name>
<email>glorenzetti@cefca.es</email>
</author>
<published>2025-11-14T16:37:12+00:00</published>
<link rel='alternate' type='text/html' href='http://git.maneage.org/project.git/commit/?id=557299b2bafee350e4d60a334990563c931fcf6a'/>
<id>557299b2bafee350e4d60a334990563c931fcf6a</id>
<content type='text'>
Summary: this commit involves a major version update of many basic software
and Gnuastro's major dependencies. So it may affect your configuration and
analysis.

Until now, the most recent software updates weren't properly tested on
MacOS, causing the software configuration step to fail. In particular, the
'prep-source.sh' (that corrects any hard-coded '/bin/sh' within the
unpacked tarballs of all software) as well as some issues in the 'tar',
'util-linux' and 'ghostscript' programs. These portability issues were
found and fixed by Raul Infante-Sainz and Giacomo Lorenzetti.

With this commit, those portability issues have been addressed while
updating the following software. Also see notes below the list.

   High-level software:
     CFITSIO             4.5.0       --&gt;     4.6.3
     Ghostscript         10.04.0     --&gt;     10.06.0
     Gnuastro            0.23        --&gt;     0.24
     Util-linux          2.40.4      --&gt;     2.41.3
     WCSLIB              8.4         --&gt;     8.5

   Basic software:
     cURL                8.11.1      --&gt;     8.17.0
     GNU Bash            5.2.37      --&gt;     5.3.9
     GNU Binutils        2.43.1      --&gt;     2.45.1
     GNU Coreutils       9.6         --&gt;     9.9
     GNU Diffutils       3.10        --&gt;     3.12
     GNU AWK             5.3.1       --&gt;     5.3.2
     GNU GCC             14.2.0      --&gt;     15.2.0
     GNU Gettext         0.23.1      --&gt;     0.26
     GNU Grep            3.11        --&gt;     3.12
     GNU Gzip            1.13        --&gt;     1.14
     GNU Libunistring    1.3         --&gt;     1.4.1
     GNU M4              1.4.19      --&gt;     1.4.20
     GNU MPFR            4.2.1       --&gt;     4.2.2
     GNU Nano            8.3         --&gt;     8.7
     GNU Readline        8.2.13      --&gt;     8.3.3
     Git                 2.48.1      --&gt;     2.52.0
     Less                668         --&gt;     685
     Libxml2             2.13.1      --&gt;     2.15.1
     OpenSSL             3.4.0       --&gt;     3.6.0
     Perl                5.40.1      --&gt;     5.42.0

The latest versions of Bash and M4 were prepared for the new default C
standard of GCC 15.*, so the '-std=gnu17' was removed for them. Also, while
a new version of Dash was available, it would cause an issue when building
in Apptainer, so it has been described in 'versions.conf' to be aware in
the future updates.

Libgit2 has been removed as a dependency of Gnuastro. The reason is fully
described in the comment on top of Gnuastro's build rule in
'high-level.mk'.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Summary: this commit involves a major version update of many basic software
and Gnuastro's major dependencies. So it may affect your configuration and
analysis.

Until now, the most recent software updates weren't properly tested on
MacOS, causing the software configuration step to fail. In particular, the
'prep-source.sh' (that corrects any hard-coded '/bin/sh' within the
unpacked tarballs of all software) as well as some issues in the 'tar',
'util-linux' and 'ghostscript' programs. These portability issues were
found and fixed by Raul Infante-Sainz and Giacomo Lorenzetti.

With this commit, those portability issues have been addressed while
updating the following software. Also see notes below the list.

   High-level software:
     CFITSIO             4.5.0       --&gt;     4.6.3
     Ghostscript         10.04.0     --&gt;     10.06.0
     Gnuastro            0.23        --&gt;     0.24
     Util-linux          2.40.4      --&gt;     2.41.3
     WCSLIB              8.4         --&gt;     8.5

   Basic software:
     cURL                8.11.1      --&gt;     8.17.0
     GNU Bash            5.2.37      --&gt;     5.3.9
     GNU Binutils        2.43.1      --&gt;     2.45.1
     GNU Coreutils       9.6         --&gt;     9.9
     GNU Diffutils       3.10        --&gt;     3.12
     GNU AWK             5.3.1       --&gt;     5.3.2
     GNU GCC             14.2.0      --&gt;     15.2.0
     GNU Gettext         0.23.1      --&gt;     0.26
     GNU Grep            3.11        --&gt;     3.12
     GNU Gzip            1.13        --&gt;     1.14
     GNU Libunistring    1.3         --&gt;     1.4.1
     GNU M4              1.4.19      --&gt;     1.4.20
     GNU MPFR            4.2.1       --&gt;     4.2.2
     GNU Nano            8.3         --&gt;     8.7
     GNU Readline        8.2.13      --&gt;     8.3.3
     Git                 2.48.1      --&gt;     2.52.0
     Less                668         --&gt;     685
     Libxml2             2.13.1      --&gt;     2.15.1
     OpenSSL             3.4.0       --&gt;     3.6.0
     Perl                5.40.1      --&gt;     5.42.0

The latest versions of Bash and M4 were prepared for the new default C
standard of GCC 15.*, so the '-std=gnu17' was removed for them. Also, while
a new version of Dash was available, it would cause an issue when building
in Apptainer, so it has been described in 'versions.conf' to be aware in
the future updates.

Libgit2 has been removed as a dependency of Gnuastro. The reason is fully
described in the comment on top of Gnuastro's build rule in
'high-level.mk'.
</pre>
</div>
</content>
</entry>
<entry>
<title>PDF building: pdflatex uses local shell's LD_LIBRARY_PATH</title>
<updated>2025-08-16T22:24:42+00:00</updated>
<author>
<name>Mohammad Akhlaghi</name>
<email>mohammad@akhlaghi.org</email>
</author>
<published>2025-08-16T18:09:38+00:00</published>
<link rel='alternate' type='text/html' href='http://git.maneage.org/project.git/commit/?id=c72da75105d438a480b3721e6d94ae68f34ba9d5'/>
<id>c72da75105d438a480b3721e6d94ae68f34ba9d5</id>
<content type='text'>
Summary: will not affect existing configuration or analysis.

Until this commit, if the Maneage readline library (used by the shell) did
not match the local readline library, the 'pdflatex' command would crash
when building the template Maneage branch. This was because PGFPlots uses
the local shell and we do not build TeXLive from source within Maneage
yet. Previously, we had added a modification to 'LD_LIBRARY_PATH' before
the 'pdflatex' command to use 'sys_library_sh_path', but the variable was
never initilized (because it was only available within the configuration
phase)!

With this commit, the problem is solved by adding that variable within
'LOCAL.conf' so it is available in the analysis phase of a Maneage'd
project also. In order to do so, the set of commands that set the
'sys_library_sh_path' variable within 'configure.sh' was brought up before
the creation of 'LOCAL.conf'.

In case you have had this problem, the solution is to delete
'.build/software/config/LOCAL.conf' and re-configure your project by
manually setting the necessary directories. In this way, the 'LOCAL.conf'
is created again with the new variable.

This bug was found with the help of Faezeh Bidjarchian.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Summary: will not affect existing configuration or analysis.

Until this commit, if the Maneage readline library (used by the shell) did
not match the local readline library, the 'pdflatex' command would crash
when building the template Maneage branch. This was because PGFPlots uses
the local shell and we do not build TeXLive from source within Maneage
yet. Previously, we had added a modification to 'LD_LIBRARY_PATH' before
the 'pdflatex' command to use 'sys_library_sh_path', but the variable was
never initilized (because it was only available within the configuration
phase)!

With this commit, the problem is solved by adding that variable within
'LOCAL.conf' so it is available in the analysis phase of a Maneage'd
project also. In order to do so, the set of commands that set the
'sys_library_sh_path' variable within 'configure.sh' was brought up before
the creation of 'LOCAL.conf'.

In case you have had this problem, the solution is to delete
'.build/software/config/LOCAL.conf' and re-configure your project by
manually setting the necessary directories. In this way, the 'LOCAL.conf'
is created again with the new variable.

This bug was found with the help of Faezeh Bidjarchian.
</pre>
</div>
</content>
</entry>
<entry>
<title>Configuration: .build and .local when bdir is given interactively</title>
<updated>2025-05-12T14:57:56+00:00</updated>
<author>
<name>Mohammad Akhlaghi</name>
<email>mohammad@akhlaghi.org</email>
</author>
<published>2025-05-12T14:57:56+00:00</published>
<link rel='alternate' type='text/html' href='http://git.maneage.org/project.git/commit/?id=a575ef826eb054bc2236bf87a42adcf7a7674792'/>
<id>a575ef826eb054bc2236bf87a42adcf7a7674792</id>
<content type='text'>
Summary: will not affect existing configuration or analysis.

Until this commit, if the user gave the build directory interactively (had
not run './project configure' with '--build-dir'), the '.build' and
'.local' symbolic links were not created, resulting in a crash shortly
afterwards (when Maneage tried to write 'LOCAL.conf' in the build
directory!).

With this commit, the problem is solved by creating these links also when
the build directory is given interactively and after all the sanity checks
have passed.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Summary: will not affect existing configuration or analysis.

Until this commit, if the user gave the build directory interactively (had
not run './project configure' with '--build-dir'), the '.build' and
'.local' symbolic links were not created, resulting in a crash shortly
afterwards (when Maneage tried to write 'LOCAL.conf' in the build
directory!).

With this commit, the problem is solved by creating these links also when
the build directory is given interactively and after all the sanity checks
have passed.
</pre>
</div>
</content>
</entry>
<entry>
<title>IMPORTANT: software configuration optimized and better modularized</title>
<updated>2025-05-12T08:59:26+00:00</updated>
<author>
<name>Giacomo Lorenzetti</name>
<email>glorenzetti@cefca.es</email>
</author>
<published>2025-04-03T13:21:16+00:00</published>
<link rel='alternate' type='text/html' href='http://git.maneage.org/project.git/commit/?id=df9e291826fbc7e717b40d2d07f1d7607a2f2455'/>
<id>df9e291826fbc7e717b40d2d07f1d7607a2f2455</id>
<content type='text'>
Summary: after merging this commit into your project, it should be
re-configured since the location of software installation files like
'LOCAL.conf' or the LaTeX macros of the software environment have
changed. But it should not affect the analysis phase of your project.

Until this commit, it was not possible to run a pre-built Maneage'd project
(in a container) on a newly cloned Maneage'd project source. This was
because the containers should be read-only, but during the various checks
of the configuration (to verify that we are using the same software
environment in the container and the source), we were writing/testing many
things in the build directory, and 'LOCAL.conf' which was actually in the
source directory!

Furthermore, the '.local' and '.build' were built at configure time, making
it hard to run the same container from a newly cloned Maneage'd project. To
make things harder for the scenario above, the 'configure.sh' script would
pause on every message and didn't have a quiet mode (making it practically
impossible to run './project configure' before './project make' on every
container run).

With this commit, all these issues have been addressed and it is now
possible to simply get a built container, clone a Maneage'd project and run
the analysis (using the built environment of the container that is verified
on every run). The respective changes/additions are described below:

 - The high-level container scripts ('apptainer.sh' and 'docker.sh', along
   with their READMEs) have been moved to the 'reproduce/software/shell'
   directory and the old 'reproduce/software/containers' directory has been
   deleted. This is because we have classified the software files by their
   language/format and the container scripts are scripts in the end.

 - The './project' script:

    - Now has two extra options: '--quiet' and '--no-pause'. Both are
      directly passed to the 'configure.sh' script. They will respectively
      disable any informative printed message or any pause after that
      message (if it is printed).

    - The '--build-dir' option is now also relevant for './project make':
      when it is given, it will re-create the two '.build' and '.local'
      symbolic links at the top source directory in all scenarios
      ('configure', 'make' or 'shell'). This will allow both the
      configuration, analysis and shell phases to safely assume they exist
      and match the user's desire at run-time.

    - The build/analysis directory's sub-directories that need to be built
      before 'top-make.mk' are now built in a separate function to help in
      readability.

 - The 'configure.sh' script:

    - For developers: a new 'check_elapsed' variable has been defined that
      will enable the newly added 'elapsed_time_from_prev_step'
      function. This function should be used from now on at the end of
      every major step to help find bottlenecks.

 - The targets of the software in 'pre-make-build.sh' now also have the
   version of the software in their file name. Until now, they didn't have
   the version, so there was no way to detect if the software has been
   updated or not in the source. For Lzip and Make (that also get built
   after GCC), the ones in this script have a '-pre-make' suffix also.

 - 'Local.conf.in' now has descriptions for every variable.

 - The '-std=gnu17' option is now used instead of '-std=c17' for basic
   software that cannot be built without specifying the C standard in GCC
   15.1 (described in previous commit: 2881fc0a6205). See [1] for more
   details; in summary: '-std=gnu17' is also supported on macOS's Clang and
   has some features that 'pkg-config' needs

 - Generally: some longer code lines have been broken or indentation
   decreased to fit the 75 character line length. This has not reduced
   readability however. For example the long 'echo' commands are now
   replaced by multiple 'printf's, or the indentation is still clearly
   visible.

The seeds of the work on this commit started by a branch containing three
commits by Giacomo Lorenzetti (133 insertions, 100 deletions). Upon merging
with the main 'maneage' branch, they were generalized and re-organized to
become this commit.

The following issues have also been addressed with this commit:

 - The LaTeX calls (during the building of 'paper.pdf') do not contain
   Maneage'd dynamic libraries. This is because we don't build the LaTeX
   binaries from source, an TeXLive manager uses the host environment.

 - The 'docker.sh' script:

    - Adds the '--project-name' option: its internal variable existed, but
      the option for the user to define it at run-time was not.

    - Ported to macOS: it does not check being a member of the 'docker'
      group, and finds the number of threads using macOS-specific tools.

 - The 'apptainer.sh' script:

    - Now installs 'wget' in the base container also (necessary when the
      user doesn't have the tarballs).

[1] https://savannah.nongnu.org/bugs/?67068#comment2
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Summary: after merging this commit into your project, it should be
re-configured since the location of software installation files like
'LOCAL.conf' or the LaTeX macros of the software environment have
changed. But it should not affect the analysis phase of your project.

Until this commit, it was not possible to run a pre-built Maneage'd project
(in a container) on a newly cloned Maneage'd project source. This was
because the containers should be read-only, but during the various checks
of the configuration (to verify that we are using the same software
environment in the container and the source), we were writing/testing many
things in the build directory, and 'LOCAL.conf' which was actually in the
source directory!

Furthermore, the '.local' and '.build' were built at configure time, making
it hard to run the same container from a newly cloned Maneage'd project. To
make things harder for the scenario above, the 'configure.sh' script would
pause on every message and didn't have a quiet mode (making it practically
impossible to run './project configure' before './project make' on every
container run).

With this commit, all these issues have been addressed and it is now
possible to simply get a built container, clone a Maneage'd project and run
the analysis (using the built environment of the container that is verified
on every run). The respective changes/additions are described below:

 - The high-level container scripts ('apptainer.sh' and 'docker.sh', along
   with their READMEs) have been moved to the 'reproduce/software/shell'
   directory and the old 'reproduce/software/containers' directory has been
   deleted. This is because we have classified the software files by their
   language/format and the container scripts are scripts in the end.

 - The './project' script:

    - Now has two extra options: '--quiet' and '--no-pause'. Both are
      directly passed to the 'configure.sh' script. They will respectively
      disable any informative printed message or any pause after that
      message (if it is printed).

    - The '--build-dir' option is now also relevant for './project make':
      when it is given, it will re-create the two '.build' and '.local'
      symbolic links at the top source directory in all scenarios
      ('configure', 'make' or 'shell'). This will allow both the
      configuration, analysis and shell phases to safely assume they exist
      and match the user's desire at run-time.

    - The build/analysis directory's sub-directories that need to be built
      before 'top-make.mk' are now built in a separate function to help in
      readability.

 - The 'configure.sh' script:

    - For developers: a new 'check_elapsed' variable has been defined that
      will enable the newly added 'elapsed_time_from_prev_step'
      function. This function should be used from now on at the end of
      every major step to help find bottlenecks.

 - The targets of the software in 'pre-make-build.sh' now also have the
   version of the software in their file name. Until now, they didn't have
   the version, so there was no way to detect if the software has been
   updated or not in the source. For Lzip and Make (that also get built
   after GCC), the ones in this script have a '-pre-make' suffix also.

 - 'Local.conf.in' now has descriptions for every variable.

 - The '-std=gnu17' option is now used instead of '-std=c17' for basic
   software that cannot be built without specifying the C standard in GCC
   15.1 (described in previous commit: 2881fc0a6205). See [1] for more
   details; in summary: '-std=gnu17' is also supported on macOS's Clang and
   has some features that 'pkg-config' needs

 - Generally: some longer code lines have been broken or indentation
   decreased to fit the 75 character line length. This has not reduced
   readability however. For example the long 'echo' commands are now
   replaced by multiple 'printf's, or the indentation is still clearly
   visible.

The seeds of the work on this commit started by a branch containing three
commits by Giacomo Lorenzetti (133 insertions, 100 deletions). Upon merging
with the main 'maneage' branch, they were generalized and re-organized to
become this commit.

The following issues have also been addressed with this commit:

 - The LaTeX calls (during the building of 'paper.pdf') do not contain
   Maneage'd dynamic libraries. This is because we don't build the LaTeX
   binaries from source, an TeXLive manager uses the host environment.

 - The 'docker.sh' script:

    - Adds the '--project-name' option: its internal variable existed, but
      the option for the user to define it at run-time was not.

    - Ported to macOS: it does not check being a member of the 'docker'
      group, and finds the number of threads using macOS-specific tools.

 - The 'apptainer.sh' script:

    - Now installs 'wget' in the base container also (necessary when the
      user doesn't have the tarballs).

[1] https://savannah.nongnu.org/bugs/?67068#comment2
</pre>
</div>
</content>
</entry>
<entry>
<title>IMPORTANT: Apptainer and Docker containers, minor restructuring</title>
<updated>2025-04-23T13:38:19+00:00</updated>
<author>
<name>Giacomo Lorenzetti</name>
<email>glorenzetti@cefca.es</email>
</author>
<published>2025-02-27T16:49:28+00:00</published>
<link rel='alternate' type='text/html' href='http://git.maneage.org/project.git/commit/?id=a1f8947ab7784af4b7e66c617ce19a8bdd9c99ed'/>
<id>a1f8947ab7784af4b7e66c617ce19a8bdd9c99ed</id>
<content type='text'>
Summary: it is necessary to re-configure your project (just running
'./project configure -e', not deleting 'build/software' to re-build
software) after this commit, see "Affected files" item below).

Until now, we only had a relatively long set of manual instructions for
building Maneage within Docker in the top-level README. This was hard to
automate, focing Maneage users to write custom commands based on the
instructions and maintain those scripts outside of Maneage. As a result,
experience could not be shared between projects (or at most in the README
file!).

With this commit, a new 'reproduce/software/containers' directory has been
created within Maneage that contains two scripts (with a unified interface)
greatly simplifying the building of the project's software environment
within a container (one script for Apptainer and one for Docker). Two
READMEs have been added for each container to help in their first time
usage. Also, the old checklist within the main README has been replaced
with a short introduction on containers and points the interested readers
to the custom README of each container technology.

Since we wanted the containers to be read-only after build, we needed to
fully decouple the 'build/software' and 'build/analysis', such that
'./project configure' only writes to the former and './project make' only
writes the latter. The file and directories mentioned in the affected files
are cases that both project phases was writing to the 'build/software' and
'build/analysis' directories.

Affected files: 'preparation-done.mk' and 'lockdir' which were previously
in the 'build/software' directory are now made during the 'make' phase and
the 'configure' phase no longer builds the 'build/analysis' or anything
within it. Also, the software version LaTeX macros (which were previously
written during the 'configure' phase in the 'analysis' directory) are now
written in the software directory and copied into the analysis for usage in
LaTeX while building the paper.

Other minor additions in this commit:

  - The './project' script has a new '--timing' option to write the
    starting and ending times of the project in a file. It also builds the
    high-level analysis directories when './project make' is called (but
    before calling 'top-make.mk'.

  - The 'tar' calls in the custom build commands of the software building
    Makefiles now have the '--no-same-owner --no-same-permissions' options
    like the 'tar' call within the 'uncompress' function of
    'build-rules.mk'.

This commit was originally written by Giacomo Lorenzetti only for Apptainer
on the registered commit date. It was later re-implemented from scratch by
Mohammad Akhlaghi to have a unified interface for both Apptainer and Docker
and merged into Maneage on 2025-04-23.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Summary: it is necessary to re-configure your project (just running
'./project configure -e', not deleting 'build/software' to re-build
software) after this commit, see "Affected files" item below).

Until now, we only had a relatively long set of manual instructions for
building Maneage within Docker in the top-level README. This was hard to
automate, focing Maneage users to write custom commands based on the
instructions and maintain those scripts outside of Maneage. As a result,
experience could not be shared between projects (or at most in the README
file!).

With this commit, a new 'reproduce/software/containers' directory has been
created within Maneage that contains two scripts (with a unified interface)
greatly simplifying the building of the project's software environment
within a container (one script for Apptainer and one for Docker). Two
READMEs have been added for each container to help in their first time
usage. Also, the old checklist within the main README has been replaced
with a short introduction on containers and points the interested readers
to the custom README of each container technology.

Since we wanted the containers to be read-only after build, we needed to
fully decouple the 'build/software' and 'build/analysis', such that
'./project configure' only writes to the former and './project make' only
writes the latter. The file and directories mentioned in the affected files
are cases that both project phases was writing to the 'build/software' and
'build/analysis' directories.

Affected files: 'preparation-done.mk' and 'lockdir' which were previously
in the 'build/software' directory are now made during the 'make' phase and
the 'configure' phase no longer builds the 'build/analysis' or anything
within it. Also, the software version LaTeX macros (which were previously
written during the 'configure' phase in the 'analysis' directory) are now
written in the software directory and copied into the analysis for usage in
LaTeX while building the paper.

Other minor additions in this commit:

  - The './project' script has a new '--timing' option to write the
    starting and ending times of the project in a file. It also builds the
    high-level analysis directories when './project make' is called (but
    before calling 'top-make.mk'.

  - The 'tar' calls in the custom build commands of the software building
    Makefiles now have the '--no-same-owner --no-same-permissions' options
    like the 'tar' call within the 'uncompress' function of
    'build-rules.mk'.

This commit was originally written by Giacomo Lorenzetti only for Apptainer
on the registered commit date. It was later re-implemented from scratch by
Mohammad Akhlaghi to have a unified interface for both Apptainer and Docker
and merged into Maneage on 2025-04-23.
</pre>
</div>
</content>
</entry>
<entry>
<title>Configuration: more portable /bin/sh derivation of linked libraries</title>
<updated>2025-03-16T02:57:24+00:00</updated>
<author>
<name>Boud Roukema</name>
<email>boud@cosmo.torun.pl</email>
</author>
<published>2025-02-26T01:14:47+00:00</published>
<link rel='alternate' type='text/html' href='http://git.maneage.org/project.git/commit/?id=858ca5fb9038d9901ed1fc489f247aac7b67e569'/>
<id>858ca5fb9038d9901ed1fc489f247aac7b67e569</id>
<content type='text'>
Summary: this will not affect the analysis of any project.

Until this commit, the part of the configuration script which would check
for the necessary host libraries used by the host shell was not portable
(would not work on some systems). Also, the list of paths had an extra ':'
at the end (allowing the searching of the running directory for libraries,
which is a bug and can have unpredictable effects).

With this commit, both issues have been addressed in the configuration
script.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Summary: this will not affect the analysis of any project.

Until this commit, the part of the configuration script which would check
for the necessary host libraries used by the host shell was not portable
(would not work on some systems). Also, the list of paths had an extra ':'
at the end (allowing the searching of the running directory for libraries,
which is a bug and can have unpredictable effects).

With this commit, both issues have been addressed in the configuration
script.
</pre>
</div>
</content>
</entry>
<entry>
<title>IMPORTANT (for Python users): Python environment updated (34 software)</title>
<updated>2025-03-16T01:52:31+00:00</updated>
<author>
<name>Boud Roukema</name>
<email>boud@cosmo.torun.pl</email>
</author>
<published>2022-10-13T22:54:29+00:00</published>
<link rel='alternate' type='text/html' href='http://git.maneage.org/project.git/commit/?id=9e7203bbc4b721a8a2a44c58ac9ad47df4b983cd'/>
<id>9e7203bbc4b721a8a2a44c58ac9ad47df4b983cd</id>
<content type='text'>
Summary: this is software update that involves Astropy and its
dependencies. In case you are using any of those, it is recommended to
reproduce the analysis of your project to make sure that the calls to the
various packages have not changed. If you are not using Astropy or its
dependencies, this commit will not affect your analysis.

Until this commit, Astropy and the whole Python environment of its
prerequisites were last updated more than 2 years go. So after the update
of the Basic and some high-level (Gnuastro dependencies) software, it was
necessary to update Astropy and its dependencies (for those who use it).

With this commit, the software listed in the last item below have been
updated as well as the following minor technical fixes:

  - Support bug 110738 (https://savannah.nongnu.org/support/?110738): when
    the build directory had the same base-name as the source directory (for
    exapmle '/PATH/proj' and /PATH/proj-build'), Maneage would complain and
    not continue.

  - The Python software are now built using the wheels system with
    'gpep517' (https://pypi.org/project/gpep517). Python packages that are
    not required by astropy/matplotlib/scipy have mostly not been updated,
    but updating their dependencies and adding the build method as
    'GPEP517' should be straightforward.

  - Updated software (dependencies of Astropy). Those with 'N/A' in their
    previous version string weren't in Maneage prior to this commit.

    High-level software (not written in Python):

       boost                   1.77.0          1.87.0
       ninja build system      n/a             1.12.1
       openblas                0.3.21          0.3.29

    Python packages:

       python                  3.10.6          3.13.2
       astropy                 5.1             7.0.1
       astropy-iers-data       n/a             0.2025.2.24.0.34.4
       contourpy               n/a             1.3.1
       cppy                    n/a             1.3.1
       cycler                  0.11.0          0.12.1
       cython                  0.29.24         3.0.12
       extension-helpers       0.1             1.2.0
       features                n/a             0.5.12
       flit-core               n/a             3.11.0
       fonttools               n/a             4.56.0
       gpep517                 n/a             16
       kiwisolver              1.0.1           1.4.8
       matplotlib              3.3.0           3.10.0
       meson                   n/a             1.7.0
       meson-python            n/a             0.17.1
       numpy                   1.21.3          2.2.3
       packaging               21.3            24.2
       pillow                  8.4.0           11.1.0
       pybind11                2.5.0           2.13.6
       pyerfa-version          2.0.0.1         2.0.1.5
       pyproject-metadata      n/a             0.9.0
       pyparsing               3.0.4           3.2.1
       python-dateutil         2.8.0           2.9.0.post0
       python-installer        n/a             0.7.0
       pyyaml                  5.1             6.0.2
       setuptools              58.3.0          75.8.0
       setuptools_scm          3.3.3           8.2.0
       scipy                   1.7.3           1.15.2
       six                     1.16.0          1.17.0
       wheel                   0.37.0          0.45.1
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Summary: this is software update that involves Astropy and its
dependencies. In case you are using any of those, it is recommended to
reproduce the analysis of your project to make sure that the calls to the
various packages have not changed. If you are not using Astropy or its
dependencies, this commit will not affect your analysis.

Until this commit, Astropy and the whole Python environment of its
prerequisites were last updated more than 2 years go. So after the update
of the Basic and some high-level (Gnuastro dependencies) software, it was
necessary to update Astropy and its dependencies (for those who use it).

With this commit, the software listed in the last item below have been
updated as well as the following minor technical fixes:

  - Support bug 110738 (https://savannah.nongnu.org/support/?110738): when
    the build directory had the same base-name as the source directory (for
    exapmle '/PATH/proj' and /PATH/proj-build'), Maneage would complain and
    not continue.

  - The Python software are now built using the wheels system with
    'gpep517' (https://pypi.org/project/gpep517). Python packages that are
    not required by astropy/matplotlib/scipy have mostly not been updated,
    but updating their dependencies and adding the build method as
    'GPEP517' should be straightforward.

  - Updated software (dependencies of Astropy). Those with 'N/A' in their
    previous version string weren't in Maneage prior to this commit.

    High-level software (not written in Python):

       boost                   1.77.0          1.87.0
       ninja build system      n/a             1.12.1
       openblas                0.3.21          0.3.29

    Python packages:

       python                  3.10.6          3.13.2
       astropy                 5.1             7.0.1
       astropy-iers-data       n/a             0.2025.2.24.0.34.4
       contourpy               n/a             1.3.1
       cppy                    n/a             1.3.1
       cycler                  0.11.0          0.12.1
       cython                  0.29.24         3.0.12
       extension-helpers       0.1             1.2.0
       features                n/a             0.5.12
       flit-core               n/a             3.11.0
       fonttools               n/a             4.56.0
       gpep517                 n/a             16
       kiwisolver              1.0.1           1.4.8
       matplotlib              3.3.0           3.10.0
       meson                   n/a             1.7.0
       meson-python            n/a             0.17.1
       numpy                   1.21.3          2.2.3
       packaging               21.3            24.2
       pillow                  8.4.0           11.1.0
       pybind11                2.5.0           2.13.6
       pyerfa-version          2.0.0.1         2.0.1.5
       pyproject-metadata      n/a             0.9.0
       pyparsing               3.0.4           3.2.1
       python-dateutil         2.8.0           2.9.0.post0
       python-installer        n/a             0.7.0
       pyyaml                  5.1             6.0.2
       setuptools              58.3.0          75.8.0
       setuptools_scm          3.3.3           8.2.0
       scipy                   1.7.3           1.15.2
       six                     1.16.0          1.17.0
       wheel                   0.37.0          0.45.1
</pre>
</div>
</content>
</entry>
<entry>
<title>Configuration: typo corrections in configure.sh</title>
<updated>2025-02-19T16:40:35+00:00</updated>
<author>
<name>Boud Roukema</name>
<email>boud@cosmo.torun.pl</email>
</author>
<published>2025-02-19T15:07:53+00:00</published>
<link rel='alternate' type='text/html' href='http://git.maneage.org/project.git/commit/?id=17e6becc3c1ad5cf2f9f6001120371a7a557cd6d'/>
<id>17e6becc3c1ad5cf2f9f6001120371a7a557cd6d</id>
<content type='text'>
SUMMARY: this is just a houskeeping commit (no effect on your project).

Until this commit, two of the configure.sh checks for being on a macOS
system had typos (and were thus being wrongly evaluated). In one case, the
variable was called with a '$$' (instead of a single '$') and in the other
a '!=' was used (instead of a '=') resulting in a macOS command ('otool')
being called on GNU/Linux systems.

With this commit, both typos are corrected.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
SUMMARY: this is just a houskeeping commit (no effect on your project).

Until this commit, two of the configure.sh checks for being on a macOS
system had typos (and were thus being wrongly evaluated). In one case, the
variable was called with a '$$' (instead of a single '$') and in the other
a '!=' was used (instead of a '=') resulting in a macOS command ('otool')
being called on GNU/Linux systems.

With this commit, both typos are corrected.
</pre>
</div>
</content>
</entry>
</feed>
