Setup ===== Rat-Containers_ defines several recipes for different containers in order to reproducibly build Rat C++ libraries on different Linux-based platforms. Containerization solution ------------------------- .. Rat-Containers: Setup table of contents .. toctree:: :maxdepth: 2 :caption: CONTAINERIZATION SOLUTION CONTENTS singularityCE/index There are several containerization programs available in the wild (e.g. SingularityCE_, Docker_ or even Nix_). They allow to define recipes to build isolated development environment in a reproducible manner. This way users (*mostly*) get the exact same results independently of their environments. The isolation is also key in order not to conflict with the system or user libraries, allowing for clean packaging of libraries and programs. Very much like Rat-vcpkg_, Rat-Containers_ streamlines the process of compilation Rat C++ libraries, but on Linux-based platforms and within containers. That way building and linking Rat projects (e.g. pyRat_ Python C++ bindings for Rat and pyRat_ Python wheels) is much easier and more consistent across Linux-based platforms. The solution used for containerization depends on the end user, and some solutions are more suited to certain jobs than others. Each solution has its own setup thus it is advised to dive into the ones of interest in order to implement and use them. See the above table of content for more detailed information about solutions that are implemented for the time being. .. important:: Rat-Containers_ emphasizes on SingularityCE_ since it is the standard option for HPC platforms given its non ``sudo`` requirements to run code on nodes. Docker_ might of course be given interest in the future. Users can easily derive ``Dockerfiles`` from the `SingularityCE Definition Files`_ of this repository if needed. .. Links .. _Docker: https://www.docker.com/ .. _Docs: https://gitlab.com/project-rat-extras/docs .. _Nix: https://en.wikipedia.org/wiki/Nix_(package_manager) .. _Project-Rat: https://gitlab.com/project-rat .. _PRE Docs: https://gitlab.com/project-rat-extras/docs .. _pyRat: https://gitlab.com/project-rat-extras/pyrat .. _Rat-Docs: https://gitlab.com/project-rat/rat-documentation .. _Rat-Containers: https://gitlab.com/project-rat-extras/rat-containers .. _Rat-vcpkg: https://gitlab.com/project-rat-extras/rat-vcpkg .. _SingularityCE: https://sylabs.io/singularity/ .. _SingularityCE Definition File: https://docs.sylabs.io/guides/4.4/user-guide/definition_files.html .. _SingularityCE Definition Files: https://docs.sylabs.io/guides/4.4/user-guide/definition_files.html