PRoot
License information
PRoot is licensed under the GNU General Public License version 2.0.
The license information is also available in the COPYING file in
the directory $EBROOTPROOT/share/licenses/PRoot after loading the module,
or in the COPYING file in the PRoot GitHub repository.
User documentation
The PRoot module provides the proot command to partition/container in the LUMI stacks.
This enables the so-called "Unprivileged proot builds"
in recent versions of Singularity Community Edition, one of the few ways available on LUMI to
extend containers as user namespaces or fakeroot are not available.
The main use case is to be able to develop EasyConfigs that modify an existing container
and install the container with matching module file in partition/container.
The proot command is also provided by the systools module,
but that module cannot be used as a build dependency in EasyBuild when building for
partition/common and cannot easily be made available in that partition without breaking the
whole idea of the LUMI software stack and of that partition.
Pre-installed modules (and EasyConfigs)
To access module help and find out for which stacks and partitions the module is
installed, use module spider PRoot/<version>.
EasyConfig:
-
PRoot/5.4.0 (EasyConfig: PRoot-5.4.0.eb)
This easyconfig is meant to be installed in the central software stack in
partition/containerto make it possible to do a container build from EasyBuild while still storing the container inpartition/container. It has minimal build dependencies, using only the system gcc and system make, as that is all what is available inpartition/container.
Technical documentation
EasyBuild
There is no support for PRoot in EasyBuild or Spack.
5.4.0 for partition/container
-
This EasyConfig is a LUST development, combining the installation of talloc and PRoot, also installed in
syslibsandsystoolsrespectively, but to be used inpartition/containerwhere we don't have those modules available.The idea is to obtain a single executable that only depends on system libraries, using a build process that EasyBuild can also do in
partition/container, so with minimal tooling, using only the system gcc and make utility. -
Done as a Bundle:
-
First a static version of talloc is compiled. This is already tricky as it only installs shared libraries, so these are removed and replaced with a static one generated from the object files.
-
Next we build PRoot, using the just built talloc library. Some trickery is required to create the correct environment for the build process so that it uses the right compilers and compiler flags and can find the talloc package.
-
In
postinstallcmdswe then remove all remaining pieces of talloc, to end with just aprootbinary and information about its license.
-