Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
pbuild.log
doc/html
547 changes: 0 additions & 547 deletions doc/html/Appendix.html

This file was deleted.

1,821 changes: 338 additions & 1,483 deletions doc/html/Building_Pmodules.html

Large diffs are not rendered by default.

768 changes: 243 additions & 525 deletions doc/html/Building_Pmodules/build-config-files/config_yaml.html

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion doc/html/Building_Pmodules/functions/add_patch.html

Large diffs are not rendered by default.

23 changes: 22 additions & 1 deletion doc/html/Building_Pmodules/functions/add_to_group.html

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion doc/html/Building_Pmodules/functions/cmp_versions.html

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion doc/html/Building_Pmodules/functions/compile.html

Large diffs are not rendered by default.

60 changes: 0 additions & 60 deletions doc/html/Building_Pmodules/functions/compile_in_sourcetree.html

This file was deleted.

2 changes: 1 addition & 1 deletion doc/html/Building_Pmodules/functions/configure.html

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion doc/html/Building_Pmodules/functions/install.html

Large diffs are not rendered by default.

60 changes: 0 additions & 60 deletions doc/html/Building_Pmodules/functions/install_docfile.html

This file was deleted.

2 changes: 1 addition & 1 deletion doc/html/Building_Pmodules/functions/prep.html

Large diffs are not rendered by default.

23 changes: 22 additions & 1 deletion doc/html/Building_Pmodules/functions/set_download_url.html

Large diffs are not rendered by default.

58 changes: 0 additions & 58 deletions doc/html/Building_Pmodules/functions/set_sha256sum.html

This file was deleted.

60 changes: 0 additions & 60 deletions doc/html/Building_Pmodules/functions/supported_compilers.html

This file was deleted.

2 changes: 1 addition & 1 deletion doc/html/Building_Pmodules/functions/supported_os.html
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="generator" content="Asciidoctor 2.0.23">
<meta name="generator" content="Asciidoctor 2.0.26">
<meta name="author" content="== Synopsis">
<title>Set which OS are supported: pbuild::supported_systems (Pmodules 1.0)</title>
<style>
Expand Down
2 changes: 1 addition & 1 deletion doc/html/Building_Pmodules/functions/use_autotools.html
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="generator" content="Asciidoctor 2.0.23">
<meta name="generator" content="Asciidoctor 2.0.26">
<meta name="author" content="== Synopsis">
<title>Forece use of autotools: pbuild::use_autotools (Pmodules 1.0)</title>
<style>
Expand Down
2 changes: 1 addition & 1 deletion doc/html/Building_Pmodules/functions/use_cmake.html
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="generator" content="Asciidoctor 2.0.23">
<meta name="generator" content="Asciidoctor 2.0.26">
<meta name="author" content="== Synopsis">
<title>Force use of CMake: pbuild::use_cmake</title>
<style>
Expand Down
480 changes: 0 additions & 480 deletions doc/html/Building_Pmodules/modulefile.html

This file was deleted.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion doc/html/Building_Pmodules/writing-build-scripts.html

Large diffs are not rendered by default.

212 changes: 0 additions & 212 deletions doc/html/Directory-structure.html

This file was deleted.

64 changes: 41 additions & 23 deletions doc/html/Introduction.html

Large diffs are not rendered by default.

108 changes: 0 additions & 108 deletions doc/html/Motivation.html

This file was deleted.

618 changes: 0 additions & 618 deletions doc/html/Nutshell.html

This file was deleted.

52 changes: 0 additions & 52 deletions doc/html/Overview.html

This file was deleted.

1,225 changes: 0 additions & 1,225 deletions doc/html/The_module_command.html

This file was deleted.

122 changes: 0 additions & 122 deletions doc/html/The_module_command/module-avail.html

This file was deleted.

97 changes: 0 additions & 97 deletions doc/html/The_module_command/module-clear.html

This file was deleted.

106 changes: 0 additions & 106 deletions doc/html/The_module_command/module-display.html

This file was deleted.

107 changes: 0 additions & 107 deletions doc/html/The_module_command/module-help.html

This file was deleted.

107 changes: 0 additions & 107 deletions doc/html/The_module_command/module-initcmds.html

This file was deleted.

78 changes: 0 additions & 78 deletions doc/html/The_module_command/module-keyword.html

This file was deleted.

122 changes: 0 additions & 122 deletions doc/html/The_module_command/module-list.html

This file was deleted.

207 changes: 0 additions & 207 deletions doc/html/The_module_command/module-load.html

This file was deleted.

86 changes: 0 additions & 86 deletions doc/html/The_module_command/module-purge.html

This file was deleted.

61 changes: 0 additions & 61 deletions doc/html/The_module_command/module-refresh.html

This file was deleted.

138 changes: 0 additions & 138 deletions doc/html/The_module_command/module-search.html

This file was deleted.

109 changes: 0 additions & 109 deletions doc/html/The_module_command/module-swap.html

This file was deleted.

197 changes: 0 additions & 197 deletions doc/html/The_module_command/module-use.html

This file was deleted.

96 changes: 0 additions & 96 deletions doc/html/The_module_command/module-whatis.html

This file was deleted.

119 changes: 0 additions & 119 deletions doc/html/The_module_command/module.html

This file was deleted.

136 changes: 0 additions & 136 deletions doc/html/Writing-a-modulefile.html

This file was deleted.

79 changes: 0 additions & 79 deletions doc/html/build-block-files-and-hierarchy.html

This file was deleted.

272 changes: 0 additions & 272 deletions doc/html/build-blocks-at-a-glance.html

This file was deleted.

93 changes: 0 additions & 93 deletions doc/html/build-script-functions.html

This file was deleted.

122 changes: 0 additions & 122 deletions doc/html/build-system/Building-a-Pmodule.html

This file was deleted.

212 changes: 0 additions & 212 deletions doc/html/build-system/Directory-structure.html

This file was deleted.

130 changes: 0 additions & 130 deletions doc/html/build-system/Notations.html

This file was deleted.

136 changes: 0 additions & 136 deletions doc/html/build-system/Writing-a-modulefile.html

This file was deleted.

79 changes: 0 additions & 79 deletions doc/html/build-system/build-block-files-and-hierarchy.html

This file was deleted.

272 changes: 0 additions & 272 deletions doc/html/build-system/build-blocks-at-a-glance.html

This file was deleted.

520 changes: 0 additions & 520 deletions doc/html/build-system/build-config-files/config_yaml.html

This file was deleted.

201 changes: 0 additions & 201 deletions doc/html/build-system/build-config-files/variants.html

This file was deleted.

93 changes: 0 additions & 93 deletions doc/html/build-system/build-script-functions.html

This file was deleted.

67 changes: 0 additions & 67 deletions doc/html/build-system/functions/add_configure_args.html

This file was deleted.

62 changes: 0 additions & 62 deletions doc/html/build-system/functions/add_patch.html

This file was deleted.

106 changes: 0 additions & 106 deletions doc/html/build-system/functions/add_to_group.html

This file was deleted.

89 changes: 0 additions & 89 deletions doc/html/build-system/functions/compile.html

This file was deleted.

60 changes: 0 additions & 60 deletions doc/html/build-system/functions/compile_in_sourcetree.html

This file was deleted.

176 changes: 0 additions & 176 deletions doc/html/build-system/functions/configure.html

This file was deleted.

71 changes: 0 additions & 71 deletions doc/html/build-system/functions/install.html

This file was deleted.

60 changes: 0 additions & 60 deletions doc/html/build-system/functions/install_docfile.html

This file was deleted.

94 changes: 0 additions & 94 deletions doc/html/build-system/functions/prep.html

This file was deleted.

72 changes: 0 additions & 72 deletions doc/html/build-system/functions/set_download_url.html

This file was deleted.

58 changes: 0 additions & 58 deletions doc/html/build-system/functions/set_sha256sum.html

This file was deleted.

60 changes: 0 additions & 60 deletions doc/html/build-system/functions/supported_compilers.html

This file was deleted.

50 changes: 0 additions & 50 deletions doc/html/build-system/functions/supported_os.html

This file was deleted.

56 changes: 0 additions & 56 deletions doc/html/build-system/functions/use_autotools.html

This file was deleted.

56 changes: 0 additions & 56 deletions doc/html/build-system/functions/use_cmake.html

This file was deleted.

52 changes: 0 additions & 52 deletions doc/html/build-system/make_all.html

This file was deleted.

122 changes: 0 additions & 122 deletions doc/html/build-system/module-names.html

This file was deleted.

480 changes: 0 additions & 480 deletions doc/html/build-system/modulefile.html

This file was deleted.

45 changes: 0 additions & 45 deletions doc/html/build-system/releases.html

This file was deleted.

145 changes: 0 additions & 145 deletions doc/html/build-system/runtime-config-files/module_config.html

This file was deleted.

157 changes: 0 additions & 157 deletions doc/html/build-system/site-specific-notes.html

This file was deleted.

154 changes: 0 additions & 154 deletions doc/html/build-system/writing-and-maintaining-variant-files.html

This file was deleted.

This file was deleted.

272 changes: 0 additions & 272 deletions doc/html/build-system/writing-build-scripts.html

This file was deleted.

2,199 changes: 0 additions & 2,199 deletions doc/html/build.html

This file was deleted.

5,611 changes: 1,343 additions & 4,268 deletions doc/html/index.html

Large diffs are not rendered by default.

6 changes: 3 additions & 3 deletions doc/html/links.html

Large diffs are not rendered by default.

122 changes: 0 additions & 122 deletions doc/html/man1/module-avail.html

This file was deleted.

97 changes: 0 additions & 97 deletions doc/html/man1/module-clear.html

This file was deleted.

106 changes: 0 additions & 106 deletions doc/html/man1/module-display.html

This file was deleted.

107 changes: 0 additions & 107 deletions doc/html/man1/module-help.html

This file was deleted.

107 changes: 0 additions & 107 deletions doc/html/man1/module-initcmds.html

This file was deleted.

78 changes: 0 additions & 78 deletions doc/html/man1/module-keyword.html

This file was deleted.

122 changes: 0 additions & 122 deletions doc/html/man1/module-list.html

This file was deleted.

207 changes: 0 additions & 207 deletions doc/html/man1/module-load.html

This file was deleted.

86 changes: 0 additions & 86 deletions doc/html/man1/module-purge.html

This file was deleted.

61 changes: 0 additions & 61 deletions doc/html/man1/module-refresh.html

This file was deleted.

138 changes: 0 additions & 138 deletions doc/html/man1/module-search.html

This file was deleted.

109 changes: 0 additions & 109 deletions doc/html/man1/module-swap.html

This file was deleted.

197 changes: 0 additions & 197 deletions doc/html/man1/module-use.html

This file was deleted.

96 changes: 0 additions & 96 deletions doc/html/man1/module-whatis.html

This file was deleted.

119 changes: 0 additions & 119 deletions doc/html/man1/module.html

This file was deleted.

67 changes: 0 additions & 67 deletions doc/html/man3/add_configure_args.html

This file was deleted.

62 changes: 0 additions & 62 deletions doc/html/man3/add_patch.html

This file was deleted.

106 changes: 0 additions & 106 deletions doc/html/man3/add_to_group.html

This file was deleted.

89 changes: 0 additions & 89 deletions doc/html/man3/compile.html

This file was deleted.

60 changes: 0 additions & 60 deletions doc/html/man3/compile_in_sourcetree.html

This file was deleted.

176 changes: 0 additions & 176 deletions doc/html/man3/configure.html

This file was deleted.

71 changes: 0 additions & 71 deletions doc/html/man3/install.html

This file was deleted.

60 changes: 0 additions & 60 deletions doc/html/man3/install_docfile.html

This file was deleted.

94 changes: 0 additions & 94 deletions doc/html/man3/prep.html

This file was deleted.

72 changes: 0 additions & 72 deletions doc/html/man3/set_download_url.html

This file was deleted.

58 changes: 0 additions & 58 deletions doc/html/man3/set_sha256sum.html

This file was deleted.

60 changes: 0 additions & 60 deletions doc/html/man3/supported_compilers.html

This file was deleted.

50 changes: 0 additions & 50 deletions doc/html/man3/supported_os.html

This file was deleted.

56 changes: 0 additions & 56 deletions doc/html/man3/use_autotools.html

This file was deleted.

56 changes: 0 additions & 56 deletions doc/html/man3/use_cmake.html

This file was deleted.

92 changes: 0 additions & 92 deletions doc/html/man3/use_flag.html

This file was deleted.

145 changes: 0 additions & 145 deletions doc/html/man4/module_config.html

This file was deleted.

480 changes: 0 additions & 480 deletions doc/html/man4/modulefile.html

This file was deleted.

520 changes: 0 additions & 520 deletions doc/html/man5/config_yaml.html

This file was deleted.

201 changes: 0 additions & 201 deletions doc/html/man5/variants.html

This file was deleted.

122 changes: 0 additions & 122 deletions doc/html/module-names.html

This file was deleted.

33 changes: 0 additions & 33 deletions doc/html/overlays.html

This file was deleted.

91 changes: 0 additions & 91 deletions doc/html/pbuild.html

This file was deleted.

45 changes: 0 additions & 45 deletions doc/html/releases.html

This file was deleted.

157 changes: 0 additions & 157 deletions doc/html/site-specific-notes.html

This file was deleted.

92 changes: 0 additions & 92 deletions doc/html/use_flag.html

This file was deleted.

154 changes: 0 additions & 154 deletions doc/html/writing-and-maintaining-variant-files.html

This file was deleted.

157 changes: 10 additions & 147 deletions doc/src/Building_Pmodules.adoc
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
= *BUILDING PMODULES*
= *BUILDING MODULES*

== Introduction

In the simplest case adding a Pmodule can be done by adding a modulefile to a certain directory. Below is an example of a "do nothing" modulefile in the group `Sandbox`.
In the simplest case adding a module can be done by adding a modulefile to a certain directory. Below is an example of a "do nothing" modulefile.

.Example: `/opt/psi/Sandbox/modulefiles/null/1.0.0`
.Example: `null/1.0.0`
[source,sh]
----
#%Pmodule
Expand All @@ -18,88 +18,12 @@ This is a do nothing module.
"
----

In addition to the modulefile a corresponding configuration file - defining for example the release stage - should be installed in the same directory as the modulefile. See next section for a detailed documentation of configuration files.
Modulefiles are written in the Tool Command Language (Tcl).

.Example: configuration file `/opt/psi/Sandbox/modulefiles/null/.release-1.0.0` for the `null/1.0.0` module
[source,sh]
----
stable
----

Modulefiles are written in the Tool Command Language (Tcl). See section <<modulefiles>> for a detailed documentation. In Pmodules version 1.1.16 and newer modulefiles written in Lua are also supported but with some limitations.

The above example doesn't provide any software. In the following example we show a simple 'HelloWorld' module with a 'Hello, world!' program.

.Example: modulefile `/opt/psi/Sandbox/modulefiles/HelloWorld/1.0.0`:
[source,sh]
----
#%Pmodule

module-whatis "'Hello, world!' module"
module-maintainer "Achim Gsell <achim.gsell@psi.ch>"
module-license "MIT"
module-url "http://pmodules.gitpages.psi.ch"

module-help "
The module provides a 'Hello, world!' program.
"
----

.Example: configuration file `/opt/psi/Sandbox/modulefiles/HelloWorld/.release-1.0.0` for the `HelloWorld/1.0.0` module
[source,sh]
----
unstable
----

.Example: `/opt/psi/Sandbox/HelloWorld/1.0.0/bin/hello`:
[source,sh]
----
#!/usr/bin/env python3

print("Hello, world!")
----

In principal, it is possible to install modules 'by hand' by installing the software, module- and configuration files at the right place. For reproducibility, documentation and re-usability it is highly recommended to write build-recipes for each module or - at least - a README and host everything on a PSI Gitlab server.

Overall the main cases for building modules are:

* Building a module from source. This is the most common case. Examples: git,
gnuplot, openmpi, hdf5, ... +
In this case it is highly recommended to code each step - usually download, configure, compile and install - in a script, write a modulefile and a configuration file.
* Building a module with a binary package. Examples: Intel compiler, Matlab,
ANSYS, Mathematica, ... +
In this case best practice is to install the package by hand and write a "dummy" build script, a modulefile and a configuration file. If it is possible and simple to script the installation, code this in the build script. If you cannot easily script the installation, document each step in a README file.

[NOTE]
====
In any case: keep everything in a Git repository on either https://gitlab.psi.ch[gitlab.psi.ch] or https://git.psi.ch[git.psi.ch].
The Git repository for the groups `Tool`, `Programming`, `Compiler`, `HDF5`, `HDF_serial` and `System` is https://gitlab.psi.ch/Pmodules/buildblocks[Pmodules/buildblock]. Other groups can be hosted anywhere. But to keep everything together a project in https://gitlab.psi.ch/Pmodules/[Pmodules] might be a good choice.
====

Many modules for the Pmodules environment have to be build from
source. The building plan of a module is coded in a so called
*_build-block_*. A build-block consists at least of a build-script with instruction how to download, compile and install a dedicated piece of
software, a modulefile and a configuration file.

To avoid problems with dependencies to system libraries or installed software it is best practice to build modules on dedicated systems. At PSI:

* For modules which should be able to run on all RHEL7 and newer systems, use the system pmod7.psi.ch. If you need access to the system please contact achim.gsell@psi.ch.

* Merlin6 specific modules - like `openmpi`, `mpich` and modules depending on them - must be compiled on a Merlin6 login node.

* Modules specific for a beamline should be compiled on a Ra login node with RHEL8 or a dedicated RHEL8 beamline system.

[NOTE]
====
If you build a module on RHEL7, it might not run on RHEL8 due to newer versions of system libraries. In must cases this can be solved by installing these system libraries in the module itself and setting the `RPATH`. The recommended path in this case is `$PREFIX/lib/system` whereby `$PREFIX` is the installation prefix of the software.
====

In the next section we describe how to write build recipes.
In principal, it is possible to install modules 'by hand' by installing the software and modulefiles at the right place. For reproducibility, documentation and re-usability it is highly recommended to write build-recipes for each module or - at least - a README.md and host everything on a Gitforge (gitea.psi.ch, github.com, gitlab.com ...).

== Predefined variables

Since we use BASH for our build-scripts and Tcl for modulefiles, we use BASH/Tcl syntax for variables in this documentation. So, if `VARIABLE` is the name of a variable, `$VARIABLE` the value of it.

*In modulefiles and build-scripts the following variables are predefined:*

`P`:: the name of the module
Expand All @@ -109,9 +33,7 @@ Since we use BASH for our build-scripts and Tcl for modulefiles, we use BASH/Tcl
`V_PATCHLVL`:: the patch-level. Example: `3`
`V_RELEASE`:: the release number. Example: `2`
`V_PKG`:: version number without release.
`GROUP`:: group the module is in.
`PREFIX`:: installation prefix of the module.
`PMODULES_ROOT`:: root of Pmodules installation. At PSI this is `/opt/psi`.

*In build-scripts the following variables are predefined too:*

Expand All @@ -120,27 +42,19 @@ Since we use BASH for our build-scripts and Tcl for modulefiles, we use BASH/Tcl
`BUILD_DIR`:: build directory, set to `$PMODULES_TMPDIR/$P-$V/build`
`BUILDBLOCK_DIR`:: Directory where the build-script is in.
`BUILD_SCRIPT`:: Name of the build script.
`SYSTEM`,`OS`:: Can be set with the `--system` option. The value defaults to the string returned by `uname -s`. The use of `OS` is obsolete.

*In modulefiles the following variables are predefined too:*

`name`:: Same as `P` (obsolete, for historical reasons).
`version`:: Same as `V` (obsolete, for historical reasons).
`group`:: The group the module is member of.
`JOBS`:: Number of parallel `make` jobs.

[id="building-modules", reftext="Building Pmodules"]
== Building a Pmodule

To simplify the building of modules, Pmodules has a simple build system. The build system of Pmodules is far less powerful than the build system of Spack or NixOS, but fulfills its purpose for many modules.
== Building a module

Perform the following steps for a new Pmodule:
Perform the following steps for a new module:

1. Create a directory with the name of the module.
2. Write the configuration file. See section <<writing-build-configuration-files>>.
3. Write the modulefile. See section <<sec-modulefiles>>.
4. Code all required steps to install a software in a script. If it is not possible to script everything, code as much as possible and document additional steps in a README file. See section <<writing-build-scripts>>.

The first - and sometimes also to most challenging - step in building a Pmodule from source is to learn how to download, configure, compile and install a software package and dependencies the package has. The next steps are writing a configuration file, a modulefile and a script to download, configure, compile and install it.
The first - and sometimes also to most challenging - step in building a module from source is to learn how to download, configure, compile and install a software package and dependencies the package has. The next steps are writing a configuration file, a modulefile and a script to download, configure, compile and install it.

In general the following steps needs to be performed:

Expand Down Expand Up @@ -187,16 +101,6 @@ install::

In many cases you don't have to implement the the functions `pbuild::prep()`, `pbuild::configure()`, `pbuild::compile()` and `pbuild::install()` or at least not all of them. The build-system provides default implementations for these functions. In the simplest case, the build script consists only of the shebang line (only for Pmodules >= 1.1). In this case all further information for building the module is in the configuration file. For software that uses autotools or CMake for configuration and creation of Makefiles, the standard functions can practically always be used. The functions `pbuild::pre_STEP` and `pbuild::post_STEP` can be used to hook into each step before and after the default function has been called. For example `pbuild::pre_configure()` can be used to set arguments for autotools or CMake as in the build-script for Gnuplot:

.Example: build script for Gnuplot
[source,sh]
----
#!/usr/bin/env modbuild

pbuild::pre_configure() {
pbuild::add_configure_args '--with-latex=no'
pbuild::add_configure_args '--with-qt=no'
}
----

=== Overloading the default implementations

Expand Down Expand Up @@ -241,46 +145,6 @@ pbuild::install() {
}
----

=== Calling the build-script
To call the build-script, cd into the directory of the script and run
[source,sh]
----
./build VERSION_TO_BE_BUILD
----

.Example with output
[source,sh]
----
pmod7:~/HelloWorld$ ./build 1.0.0
Using YAML configuration file - /afs/psi.ch/user/g/gsell/HelloWorld/files/config.yaml
HelloWorld/1.0.0: building ...
HelloWorld/1.0.0:
HelloWorld/1.0.0: start building ...
HelloWorld/1.0.0: preparing sources ...
HelloWorld/1.0.0: configuring ...
HelloWorld/1.0.0: compiling ...
HelloWorld/1.0.0: installing ...
HelloWorld/1.0.0: running post-installation for Linux ...
HelloWorld/1.0.0: Installing documentation to /opt/psi/Sandbox/HelloWorld/1.0.0/share/doc/HelloWorld
HelloWorld/1.0.0: adding modulefile to overlay 'base' ...
HelloWorld/1.0.0: Cleaning up '/var/tmp/gsell/HelloWorld-1.0.0/build'...
HelloWorld/1.0.0: Cleaning up '/var/tmp/gsell/HelloWorld-1.0.0/src'...
HelloWorld/1.0.0: Done ...
* * * * *

pmod7:~/HelloWorld$
----

You can run
[source,sh]
----
./build --help
----
to get a list of all option with a description. The most common option are

`-f`:: to force a rebuild
`--verbose`:: to get a full debug trace.

=== Functions to compare versions
include::Building_Pmodules/functions/cmp_versions.adoc[leveloffset=+3]

Expand All @@ -293,6 +157,5 @@ include::Building_Pmodules/functions/compile.adoc[leveloffset=+3]
---
include::Building_Pmodules/functions/install.adoc[leveloffset=+3]

== Runtime configuration files
include::Building_Pmodules/runtime-config-files/module_config.adoc[leveloffset=+1]
[leveloffset=+1]

Loading
Loading