aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--reproduce/software/config/versions.conf19
-rw-r--r--reproduce/software/containers/README-apptainer.md38
-rw-r--r--reproduce/software/containers/README-docker.md43
-rw-r--r--reproduce/software/make/basic.mk6
4 files changed, 72 insertions, 34 deletions
diff --git a/reproduce/software/config/versions.conf b/reproduce/software/config/versions.conf
index 9c82c8d..166e8ff 100644
--- a/reproduce/software/config/versions.conf
+++ b/reproduce/software/config/versions.conf
@@ -17,7 +17,6 @@
# --------------------------------------------------------------
#
# CLASS:BASIC (important identifier for 'awk'; don't modify this line)
-bash-version = 5.2.37
binutils-version = 2.43.1
bison-version = 3.8.2
coreutils-version = 9.6
@@ -42,15 +41,12 @@ libtool-version = 2.5.4
libunistring-version = 1.3
libxml2-version = 2.13.5
lzip-version = 1.25
-m4-version = 1.4.19
make-version = 4.4.1
mpc-version = 1.3.1
mpfr-version = 4.2.1
nano-version = 8.3
-ncurses-version = 6.5
openssl-version = 3.4.0
perl-version = 5.40.1
-pkgconfig-version = 0.29.2
podlators-version = 6.0.2
readline-version = 8.2.13
sed-version = 4.9
@@ -90,6 +86,21 @@ certpem-version = 2025-02-10
# supported.
patchelf-version = 0.13
+# Not working with C23
+# --------------------
+#
+# As of GCC 15.1, the default C standard has been changed from C17 to C23
+# and the following software cannot be built with C23. So we have added
+# '-std=c17' to the CFLAGS environment variable in their build rules. After
+# updating their version (and if you have GCC 15.1 or later) first remove
+# '-std=c17' and then try the build. If it works, move the software back up
+# to the main list before the commit.
+ncurses-version = 6.5
+bash-version = 5.2.37
+m4-version = 1.4.19
+pkgconfig-version = 0.29.2
+
+
diff --git a/reproduce/software/containers/README-apptainer.md b/reproduce/software/containers/README-apptainer.md
index 9608dc8..a7826ec 100644
--- a/reproduce/software/containers/README-apptainer.md
+++ b/reproduce/software/containers/README-apptainer.md
@@ -22,24 +22,22 @@ analysis files (data and PDF) on your host operating system. This enables
you to keep the size of the image to a minimum (only containing the built
software environment) to easily move it from one computer to another.
- 1. Using your favorite text editor, create a `apptainer-local.sh` in your
- project's top directory that contains the usage command shown at the
- top of the 'apptainer.sh' script and take the following steps:
- * Set the respective directories based on your own preferences.
- * The `--software-dir` is optional (if you don't have the source
- tarballs, Maneage will download them automatically. But that requires
- internet (which may not always be available). If you regularly build
- Maneage'd projects, you can clone the repository containing all the
- tarballs at https://gitlab.cefca.es/maneage/tarballs-software
- * Add an extra `--build-only` for the first run so it doesn't go onto
- doing the analysis and just builds the image. After it has completed,
- remove the `--build-only` and it will only run the analysis of your
- project.
-
- 2. Once step one finishes, the build directory will contain two
- Singularity Image Format (SIF) files listed below. You can move them to
- any other (more permanent) positions in your filesystem or to other
- computers as needed.
+ 1. Using your favorite text editor, create a `run.sh` in your top Maneage
+ directory (as described in the comments at the start of the
+ `apptainer.sh` script in this directory). Just add `--build-only` on
+ the first run so it doesn't go onto doing the analysis and just sets up
+ the software environment. Set the respective directory(s) based on your
+ filesystem (the software directory is optional). The `run.sh` file name
+ is already in `.gitignore` (because it contains local directories), so
+ Git will ignore it and it won't be committed by mistake.
+
+ 2. Make the script executable with `chmod +x ./run.sh`, and run it with
+ `./run.sh`.
+
+ 3. Once the build finishes, the build directory (on your host) will
+ contain two Singularity Image Format (SIF) files listed below. You can
+ move them to any other (more permanent) positions in your filesystem or
+ to other computers as needed.
* `maneage-base.sif`: image containing the base operating system that
was used to build your project. You can safely delete this unless you
need to keep it for future builds without internet (you can give it
@@ -49,6 +47,10 @@ software environment) to easily move it from one computer to another.
project. This file is necessary for future runs of your project
within the container.
+ 3. To execute your project remote the `--build-only` and use `./run.sh` to
+ execute it. If you want to enter your Maneage'd project shell, add the
+ `--project-shell` option to the call inside `./run.sh`.
+
diff --git a/reproduce/software/containers/README-docker.md b/reproduce/software/containers/README-docker.md
index f86dceb..d651e22 100644
--- a/reproduce/software/containers/README-docker.md
+++ b/reproduce/software/containers/README-docker.md
@@ -35,17 +35,20 @@ software environment) to easily move it from one computer to another.
systemctl start docker
```
- 2. Using your favorite text editor, create a `docker-local.sh` in your top
- Maneage directory (as described in the comments at the start of the
- `docker.sh` script in this directory). Just activate `--build-only` on
- the first run so it doesn't go onto doing the analysis and just sets up
- the software environment.
-
- 3. After the setup is complete, run the following command to confirm that
- the `maneage-base` (the OS of the container) and `maneaged` (your
- project's full Maneage'd environment) images are available. If you want
- different names for these images, add the `--project-name` and
- `--base-name` options to the `docker.sh` call.
+ 2. Using your favorite text editor, create a `run.sh` in your top Maneage
+ directory (as described in the comments at the start of the `docker.sh`
+ script in this directory). Just activate `--build-only` on the first
+ run so it doesn't go onto doing the analysis and just sets up the
+ software environment. Set the respective directory(s) based on your
+ filesystem (the software directory is optional). The `run.sh` file name
+ is already in `.gitignore` (because it contains local directories), so
+ Git will ignore it and it won't be committed by mistake.
+
+ 3. After the setup is complete, remove the `--build-only` and run the
+ command below to confirm that `maneage-base` (the OS of the container)
+ and `maneaged` (your project's full Maneage'd environment) images are
+ available. If you want different names for these images, add the
+ `--project-name` and `--base-name` options to the `docker.sh` call.
```shell
docker image list
@@ -85,6 +88,24 @@ image into it.
Below are some useful Docker usage scenarios that have proved to be
relevant for us in Maneage'd projects.
+### Saving and loading an image as a file
+
+Docker keeps its images in hard to access (by humans) location on the
+operating system. Very much like Git, but with much less elegance: the
+place is shared by all users and projects of the system. So they are not
+easy to archive for usage on another system at a low-level. But it does
+have an interface (`docker save`) to copy all the relevant files within an
+image into a tar ball that you can archive externally. There is also a
+separate interface to load the tarball back into docker (`docker load`).
+
+Both of these have been implemented as the `--image-file` option of the
+`docker.sh` script. If you want to save your Maneage'd image into an image,
+simply give the tarball name to this option. Alternatively, if you already
+have a tarball and want to load it into Docker, give it to this option once
+(until you "clean up", as explained below). In fact, docker images take a
+lot of space and it is better to "clean up" regularly. And the only way you
+can clean up safely is through saving your needed images as a file.
+
### Cleaning up
Docker has stored many large files in your operating system that can drain
diff --git a/reproduce/software/make/basic.mk b/reproduce/software/make/basic.mk
index 40c5a4e..c9aba96 100644
--- a/reproduce/software/make/basic.mk
+++ b/reproduce/software/make/basic.mk
@@ -423,6 +423,7 @@ $(ibidir)/ncurses-$(ncurses-version): $(ibidir)/patchelf-$(patchelf-version)
rm -f $(ibdir)/bash* $(ibdir)/awk* $(ibdir)/gawk*
# Standard build process.
+ export CFLAGS="-std=c17 $$CFLAGS"
$(call gbuild, ncurses-$(ncurses-version), static, \
--with-shared --enable-rpath --without-normal \
--without-debug --with-cxx-binding \
@@ -561,7 +562,7 @@ $(ibidir)/bash-$(bash-version): \
if [ "x$(static_build)" = xyes ]; then stopt="--enable-static-link"
else stopt=""
fi;
- export CFLAGS="$$CFLAGS \
+ export CFLAGS="$$CFLAGS -std=c17 \
-DDEFAULT_PATH_VALUE='\"$(ibdir)\"' \
-DSTANDARD_UTILS_PATH='\"$(ibdir)\"' \
-DSYS_BASHRC='\"$(BASH_ENV)\"' "
@@ -1014,6 +1015,7 @@ $(ibidir)/gmp-$(gmp-version): \
$(ibidir)/coreutils-$(coreutils-version)
tarball=gmp-$(gmp-version).tar.lz
$(call import-source, $(gmp-url), $(gmp-checksum))
+ export CFLAGS="-std=c17 $$CFLAGS"
$(call gbuild, gmp-$(gmp-version), static, \
--enable-cxx --enable-fat, \
-j$(numthreads))
@@ -1074,6 +1076,7 @@ $(ibidir)/grep-$(grep-version): $(ibidir)/coreutils-$(coreutils-version)
$(ibidir)/m4-$(m4-version): $(ibidir)/patchelf-$(patchelf-version)
tarball=m4-$(m4-version).tar.lz
$(call import-source, $(m4-url), $(m4-checksum))
+ export CFLAGS="-std=c17 $$CFLAGS"
$(call gbuild, m4-$(m4-version), static, \
--with-syscmd-shell=$(ibdir)/dash, \
-j$(numthreads) V=1)
@@ -1106,6 +1109,7 @@ $(ibidir)/pkg-config-$(pkgconfig-version): $(ibidir)/patchelf-$(patchelf-version
if [ x$(on_mac_os) = xyes ]; then export compiler="CC=clang"
else export compiler=""
fi
+ export CFLAGS="-std=c17 $$CFLAGS"
$(call gbuild, pkg-config-$(pkgconfig-version), static, \
$$compiler --with-internal-glib \
--with-pc-path=$(ildir)/pkgconfig, V=1)