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/container
to 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
syslibs
andsystools
respectively, but to be used inpartition/container
where 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
postinstallcmds
we then remove all remaining pieces of talloc, to end with just aproot
binary and information about its license.
-