summaryrefslogtreecommitdiff
path: root/python-ogscm.spec
diff options
context:
space:
mode:
Diffstat (limited to 'python-ogscm.spec')
-rw-r--r--python-ogscm.spec811
1 files changed, 811 insertions, 0 deletions
diff --git a/python-ogscm.spec b/python-ogscm.spec
new file mode 100644
index 0000000..c9cfab5
--- /dev/null
+++ b/python-ogscm.spec
@@ -0,0 +1,811 @@
+%global _empty_manifest_terminate_build 0
+Name: python-ogscm
+Version: 2.4.8
+Release: 1
+Summary: OGS Container Maker
+License: BSD 3-clause
+URL: https://gitlab.opengeosys.org/ogs/container-maker
+Source0: https://mirrors.aliyun.com/pypi/web/packages/53/56/7cee3027248869be7e3563f2c406dde92c13ff8c61619cc1cbd6f76c1744/ogscm-2.4.8.tar.gz
+BuildArch: noarch
+
+Requires: python3-hpccm
+Requires: python3-requests
+Requires: python3-PyYAML
+Requires: python3-packaging
+
+%description
+# OGS Container Maker
+
+[![PyPI version](https://badge.fury.io/py/ogscm.svg)](https://badge.fury.io/py/ogscm)
+
+## General usage
+
+### Installation
+
+```bash
+virtualenv ~/.venv/ogs-container-maker
+source ~/.venv/ogs-container-maker/bin/activate
+pip install ogscm
+```
+
+If you build images with Docker (`--build`-parameter, see below) you need to make sure that you have [setup Docker to be runnable without `sudo`](https://docs.docker.com/engine/install/linux-postinstall/#manage-docker-as-a-non-root-user)!
+
+
+Apple ARM specific:
+
+```bash
+export DOCKER_BUILDKIT=1
+docker buildx create --use --name=qemu
+docker buildx inspect --bootstrap
+```
+
+### Generate container definition
+
+OGS Container Maker has builtin *recipes*. You need to specify the recipes to use as command arguments. Each of recipes adds options to the tool. Typically you want to start with a compiler. Add the `compiler.py` recipe and the `--help`-flag to get more options:
+
+```bash
+$ ogscm compiler.py --help
+...
+compiler.py:
+ --compiler COMPILER The compiler to use. Possible options: off, gcc,
+ clang (default: gcc)
+ --compiler_version COMPILER_VERSION
+ Compiler version. (default: )
+ --iwyy Install include-what-you-use (requires clang
+ compiler) (default: False)
+```
+
+After specifying the compiler recipe (and optionally setting a non-default compiler and version) you may want to add the `ogs.py` recipe:
+
+```bash
+$ ogscm compiler.py ogs.py --help
+...
+ogs.py:
+ --pm {system,off}
+ Package manager to install third-party dependencies
+ (default: conan)
+ --ogs OGS OGS repo on gitlab.opengeosys.org in the form
+ 'user/repo@branch' OR 'user/repo@@commit' to
+ checkout a specific commit OR a path to a local
+ subdirectory to the git cloned OGS sources OR 'off'
+ to disable OGS building OR 'clean' to disable OGS
+ and all its dev dependencies (default:
+ ogs/ogs@master)
+ --cmake_args CMAKE_ARGS
+ CMake argument set has to be quoted and **must**
+ start with a space. e.g. --cmake_args '
+ -DFIRST=TRUE -DFOO=BAR' (default: )
+...
+```
+
+Please note that the order of the recipes given on the command line is important. The typical order for the current builtin recipes is `compiler.py mpi.py ogs.py ogs_jupyter.py`.
+
+To generate a Dockerfile with the default parameters:
+
+```bash
+$ ogscm compiler.py ogs.py
+Evaluating compiler.py
+Evaluating ogs.py
+Created definition _out/docker/gcc/default/ogs-d18c786e/conan/Dockerfile
+```
+
+With some options (and the `mpi.py`-recipe):
+
+```bash
+$ ogscm compiler.py mpi.py ogs.py --ompi 4.0.5 --cmake_args ' -DOGS_BUILD_PROCESSES=LiquidFlow'
+Evaluating compiler.py
+Evaluating mpi.py
+Evaluating ogs.py
+Created definition _out/docker/gcc/10/openmpi/4.0.5/ogs-d18c786e/conan/cmake-702517b3/Dockerfile
+```
+
+### Build image
+
+Add the `--build`-flag.
+
+Convert Docker image to Singularity image:
+
+Add the `--convert`-flag (requires Singularity 3.x).
+
+### Run
+
+```bash
+docker run --it --rm ogs-ompi-2.1.3
+# in container:
+ogs --version
+```
+
+```bash
+singularity shell ogs-ompi-2.1.3.sif
+# in container:
+ogs --version
+# OR directly run from host
+singularity exec ogs-ompi-2.1.3.sif ogs local/path/to/square_1e0.prj
+```
+
+## All options
+
+All options for current builtin recipes:
+
+```
+$ ogscm compiler.py mpi.py ogs.py --help
+Evaluating compiler.py
+Evaluating mpi.py
+Evaluating ogs.py
+usage: ogscm [-h] [--version] [--out OUT] [--file FILE] [--print] [--format {docker,singularity}] [--base_image BASE_IMAGE] [--runtime_base_image RUNTIME_BASE_IMAGE]
+ [--cpu-target {a64fx,aarch64,arm,broadwell,bulldozer,cannonlake,cascadelake,core2,excavator,haswell,i686,icelake,ivybridge,k10,mic_knl,nehalem,nocona,pentium2,pentium3,pentium4,piledriver,power7,power8,power8le,power9,power9le,ppc,ppc64,ppc64le,ppcle,prescott,sandybridge,skylake,skylake_avx512,sparc,sparc64,steamroller,thunderx2,westmere,x86,x86_64,zen,zen2}]
+ [--build] [--build_args BUILD_ARGS] [--upload] [--registry REGISTRY] [--tag TAG] [--convert] [--sif_file SIF_FILE] [--convert-enroot] [--enroot-bundle] [--enroot_file ENROOT_FILE] [--force]
+ [--runtime-only] [--clean] [--deploy [DEPLOY]] [--pip [package ...]] [--packages [packages ...]] [--compiler COMPILER] [--compiler_version COMPILER_VERSION] [--fortran] [--iwyy] [--ompi OMPI]
+ [--mpi_benchmarks] [--mpi_no_entrypoint] [--pm {system,off}] [--ogs OGS] [--cmake_args CMAKE_ARGS] [--cmake_preset CMAKE_PRESET] [--cmake_preset_file CMAKE_PRESET_FILE] [--ccache]
+ [--cpmcache] [--parallel PARALLEL] [--gui] [--docs] [--cvode] [--cppcheck] [--gcovr] [--mfront] [--insitu] [--dev] [--mkl] [--petsc_configure_args PETSC_CONFIGURE_ARGS]
+ [--version_file VERSION_FILE] [--boost-sourceforge] [--keep-ogs-source] [--keep-ogs-build] [--run-ctest]
+ recipe [recipe ...]
+
+positional arguments:
+ recipe
+
+optional arguments:
+ -h, --help show this help message and exit
+ --version show program's version number and exit
+ --out OUT Output directory (default: _out)
+ --file FILE Overwrite output recipe file name (default: )
+ --print, -P Print the definition to stdout (default: False)
+
+General image config:
+ --format {docker,singularity}
+ --base_image BASE_IMAGE
+ The base image. (default: ubuntu:20.04)
+ --runtime_base_image RUNTIME_BASE_IMAGE
+ The runtime base image. (default: )
+ --cpu-target {a64fx,aarch64,arm,broadwell,bulldozer,cannonlake,cascadelake,core2,excavator,haswell,i686,icelake,ivybridge,k10,mic_knl,nehalem,nocona,pentium2,pentium3,pentium4,piledriver,power7,power8,power8le,power9,power9le,ppc,ppc64,ppc64le,ppcle,prescott,sandybridge,skylake,skylake_avx512,sparc,sparc64,steamroller,thunderx2,westmere,x86,x86_64,zen,zen2}
+ The CPU microarchitecture to optimize for (archspec). (default: ivybridge)
+
+Image build options:
+ --build, -B Build the images from the definition files (default: False)
+ --build_args BUILD_ARGS
+ Arguments to the build command. Have to be quoted and **must** start with a space. E.g. --build_args ' --no-cache' (default: )
+ --upload, -U Upload Docker image to registry (default: False)
+ --registry REGISTRY The docker registry the image is tagged and uploaded to. (default: registry.opengeosys.org/ogs/ogs)
+ --tag TAG The full docker image tag. Overwrites --registry. (default: )
+ --convert, -C Convert Docker image to Singularity image (default: False)
+ --sif_file SIF_FILE Overwrite output singularity image file name (default: )
+ --convert-enroot, -E Convert Docker image to enroot image (default: False)
+ --enroot-bundle Convert enroot image to enroot bundle (default: False)
+ --enroot_file ENROOT_FILE
+ Overwrite output enroot image file name (default: )
+ --force Forces overwriting of image files! (default: False)
+ --runtime-only, -R Generate multi-stage Dockerfiles for small runtime images (default: False)
+
+Maintenance:
+ --clean Cleans up generated files in default directories. (default: False)
+
+Image deployment:
+ --deploy [DEPLOY], -D [DEPLOY]
+ Deploys to all configured hosts (in config/deploy_hosts.yml) with no additional arguments or to the specified host. Implies --build and --convert arguments. (default: )
+
+Packages to install:
+ --pip [package ...] Install additional Python packages (default: [])
+ --packages [packages ...]
+ Install additional OS packages (default: [])
+
+compiler.py:
+ --compiler COMPILER The compiler to use. Possible options: off, gcc, clang (default: gcc)
+ --compiler_version COMPILER_VERSION
+ Compiler version. (default: )
+ --fortran Install fortran compiler. (default: False)
+ --iwyy Install include-what-you-use (requires clang compiler) (default: False)
+
+mpi.py:
+ --ompi OMPI OpenMPI version, e.g. 2.1.1, 2.1.5, 3.0.1, 3.1.2 (default: 4.0.6)
+ --mpi_benchmarks Installs OSU MPI benchmarks and mpi_bw, mpi_ring, mpi_hello (default: False)
+ --mpi_no_entrypoint Disables mpi entrypoint. (Use with ogs_jupyter.py recipe) (default: False)
+
+ogs.py:
+ --pm {system,off} Package manager to install third-party dependencies (default: system)
+ --ogs OGS OGS repo on gitlab.opengeosys.org in the form 'user/repo@branch' OR 'user/repo@@commit' to checkout a specific commit OR a path to a local subdirectory to the git cloned OGS
+ sources OR 'off' to disable OGS building OR 'clean' to disable OGS and all its dev dependencies (default: ogs/ogs@master)
+ --cmake_args CMAKE_ARGS
+ CMake argument set has to be quoted and **must** start with a space. e.g. --cmake_args ' -DFIRST=TRUE -DFOO=BAR' (default: )
+ --cmake_preset CMAKE_PRESET
+ A CMake configuration preset to use. (default: release)
+ --cmake_preset_file CMAKE_PRESET_FILE
+ A CMake (user) presets file as a local file path. (default: None)
+ --ccache Enables ccache build caching. (Docker-only) (default: False)
+ --cpmcache Enables CPM source caching. (Docker-only) (default: False)
+ --parallel PARALLEL, -j PARALLEL
+ The number of cores to use for compilation. (default: 8)
+ --gui Builds the GUI (Data Explorer) (default: False)
+ --docs Setup documentation requirements (Doxygen) (default: False)
+ --cvode Install and configure with cvode (default: False)
+ --cppcheck Install cppcheck (default: False)
+ --gcovr Install gcovr (default: False)
+ --mfront Install tfel and build OGS with -DOGS_USE_MFRONT=ON (default: False)
+ --insitu Builds with insitu capabilities (default: False)
+ --dev Installs development tools (vim, gdb) (default: False)
+ --mkl Use MKL. By setting this option, you agree to the [Intel End User License Agreement](https://software.intel.com/en-us/articles/end-user-license-agreement). (default: False)
+ --petsc_configure_args PETSC_CONFIGURE_ARGS
+ PETSc configuration arguments; has to be quoted. (default: --with-fc=0 --download-f2cblaslapack=1)
+ --version_file VERSION_FILE
+ OGS versions.json file (default: None)
+ --boost-sourceforge Boolean flag to specify whether Boost should be downloaded from SourceForge rather than the current Boost repository. (default: False)
+ --keep-ogs-source Boolean flag to specify whether the OGS source directory should be preserved. (default: False)
+ --keep-ogs-build Boolean flag to specify whether the OGS build directory should be preserved. (default: False)
+ --run-ctest Boolean flag to specify whether to run the OGS ctest-target. (default: False)
+```
+
+## Advanced usage
+
+### Build OGS from local git repo
+
+You can use the ogs-container-maker to build a container image from your current source code on your host machine:
+
+```
+virtualenv .venv
+source .venv/bin/activate
+pip install ogscm
+ogscm compiler.py ogs.py -B -C -R --ogs [path to ogs sources]
+```
+
+### Deploy image files
+
+- Requires `rsync`
+- Rename the file `config/deploy_hosts_example.yml` to `config/deploy_hosts.yml`
+- `host` has to be a SSH host to which you have passwordless access
+- Deploy to the host with `... -D myhost`
+
+
+## PyPi Publication
+
+- Bump version in `pyproject.py` and run `poetry install`
+- Create tag
+- Push to GitLab (`git push --tags`)
+
+
+%package -n python3-ogscm
+Summary: OGS Container Maker
+Provides: python-ogscm
+BuildRequires: python3-devel
+BuildRequires: python3-setuptools
+BuildRequires: python3-pip
+%description -n python3-ogscm
+# OGS Container Maker
+
+[![PyPI version](https://badge.fury.io/py/ogscm.svg)](https://badge.fury.io/py/ogscm)
+
+## General usage
+
+### Installation
+
+```bash
+virtualenv ~/.venv/ogs-container-maker
+source ~/.venv/ogs-container-maker/bin/activate
+pip install ogscm
+```
+
+If you build images with Docker (`--build`-parameter, see below) you need to make sure that you have [setup Docker to be runnable without `sudo`](https://docs.docker.com/engine/install/linux-postinstall/#manage-docker-as-a-non-root-user)!
+
+
+Apple ARM specific:
+
+```bash
+export DOCKER_BUILDKIT=1
+docker buildx create --use --name=qemu
+docker buildx inspect --bootstrap
+```
+
+### Generate container definition
+
+OGS Container Maker has builtin *recipes*. You need to specify the recipes to use as command arguments. Each of recipes adds options to the tool. Typically you want to start with a compiler. Add the `compiler.py` recipe and the `--help`-flag to get more options:
+
+```bash
+$ ogscm compiler.py --help
+...
+compiler.py:
+ --compiler COMPILER The compiler to use. Possible options: off, gcc,
+ clang (default: gcc)
+ --compiler_version COMPILER_VERSION
+ Compiler version. (default: )
+ --iwyy Install include-what-you-use (requires clang
+ compiler) (default: False)
+```
+
+After specifying the compiler recipe (and optionally setting a non-default compiler and version) you may want to add the `ogs.py` recipe:
+
+```bash
+$ ogscm compiler.py ogs.py --help
+...
+ogs.py:
+ --pm {system,off}
+ Package manager to install third-party dependencies
+ (default: conan)
+ --ogs OGS OGS repo on gitlab.opengeosys.org in the form
+ 'user/repo@branch' OR 'user/repo@@commit' to
+ checkout a specific commit OR a path to a local
+ subdirectory to the git cloned OGS sources OR 'off'
+ to disable OGS building OR 'clean' to disable OGS
+ and all its dev dependencies (default:
+ ogs/ogs@master)
+ --cmake_args CMAKE_ARGS
+ CMake argument set has to be quoted and **must**
+ start with a space. e.g. --cmake_args '
+ -DFIRST=TRUE -DFOO=BAR' (default: )
+...
+```
+
+Please note that the order of the recipes given on the command line is important. The typical order for the current builtin recipes is `compiler.py mpi.py ogs.py ogs_jupyter.py`.
+
+To generate a Dockerfile with the default parameters:
+
+```bash
+$ ogscm compiler.py ogs.py
+Evaluating compiler.py
+Evaluating ogs.py
+Created definition _out/docker/gcc/default/ogs-d18c786e/conan/Dockerfile
+```
+
+With some options (and the `mpi.py`-recipe):
+
+```bash
+$ ogscm compiler.py mpi.py ogs.py --ompi 4.0.5 --cmake_args ' -DOGS_BUILD_PROCESSES=LiquidFlow'
+Evaluating compiler.py
+Evaluating mpi.py
+Evaluating ogs.py
+Created definition _out/docker/gcc/10/openmpi/4.0.5/ogs-d18c786e/conan/cmake-702517b3/Dockerfile
+```
+
+### Build image
+
+Add the `--build`-flag.
+
+Convert Docker image to Singularity image:
+
+Add the `--convert`-flag (requires Singularity 3.x).
+
+### Run
+
+```bash
+docker run --it --rm ogs-ompi-2.1.3
+# in container:
+ogs --version
+```
+
+```bash
+singularity shell ogs-ompi-2.1.3.sif
+# in container:
+ogs --version
+# OR directly run from host
+singularity exec ogs-ompi-2.1.3.sif ogs local/path/to/square_1e0.prj
+```
+
+## All options
+
+All options for current builtin recipes:
+
+```
+$ ogscm compiler.py mpi.py ogs.py --help
+Evaluating compiler.py
+Evaluating mpi.py
+Evaluating ogs.py
+usage: ogscm [-h] [--version] [--out OUT] [--file FILE] [--print] [--format {docker,singularity}] [--base_image BASE_IMAGE] [--runtime_base_image RUNTIME_BASE_IMAGE]
+ [--cpu-target {a64fx,aarch64,arm,broadwell,bulldozer,cannonlake,cascadelake,core2,excavator,haswell,i686,icelake,ivybridge,k10,mic_knl,nehalem,nocona,pentium2,pentium3,pentium4,piledriver,power7,power8,power8le,power9,power9le,ppc,ppc64,ppc64le,ppcle,prescott,sandybridge,skylake,skylake_avx512,sparc,sparc64,steamroller,thunderx2,westmere,x86,x86_64,zen,zen2}]
+ [--build] [--build_args BUILD_ARGS] [--upload] [--registry REGISTRY] [--tag TAG] [--convert] [--sif_file SIF_FILE] [--convert-enroot] [--enroot-bundle] [--enroot_file ENROOT_FILE] [--force]
+ [--runtime-only] [--clean] [--deploy [DEPLOY]] [--pip [package ...]] [--packages [packages ...]] [--compiler COMPILER] [--compiler_version COMPILER_VERSION] [--fortran] [--iwyy] [--ompi OMPI]
+ [--mpi_benchmarks] [--mpi_no_entrypoint] [--pm {system,off}] [--ogs OGS] [--cmake_args CMAKE_ARGS] [--cmake_preset CMAKE_PRESET] [--cmake_preset_file CMAKE_PRESET_FILE] [--ccache]
+ [--cpmcache] [--parallel PARALLEL] [--gui] [--docs] [--cvode] [--cppcheck] [--gcovr] [--mfront] [--insitu] [--dev] [--mkl] [--petsc_configure_args PETSC_CONFIGURE_ARGS]
+ [--version_file VERSION_FILE] [--boost-sourceforge] [--keep-ogs-source] [--keep-ogs-build] [--run-ctest]
+ recipe [recipe ...]
+
+positional arguments:
+ recipe
+
+optional arguments:
+ -h, --help show this help message and exit
+ --version show program's version number and exit
+ --out OUT Output directory (default: _out)
+ --file FILE Overwrite output recipe file name (default: )
+ --print, -P Print the definition to stdout (default: False)
+
+General image config:
+ --format {docker,singularity}
+ --base_image BASE_IMAGE
+ The base image. (default: ubuntu:20.04)
+ --runtime_base_image RUNTIME_BASE_IMAGE
+ The runtime base image. (default: )
+ --cpu-target {a64fx,aarch64,arm,broadwell,bulldozer,cannonlake,cascadelake,core2,excavator,haswell,i686,icelake,ivybridge,k10,mic_knl,nehalem,nocona,pentium2,pentium3,pentium4,piledriver,power7,power8,power8le,power9,power9le,ppc,ppc64,ppc64le,ppcle,prescott,sandybridge,skylake,skylake_avx512,sparc,sparc64,steamroller,thunderx2,westmere,x86,x86_64,zen,zen2}
+ The CPU microarchitecture to optimize for (archspec). (default: ivybridge)
+
+Image build options:
+ --build, -B Build the images from the definition files (default: False)
+ --build_args BUILD_ARGS
+ Arguments to the build command. Have to be quoted and **must** start with a space. E.g. --build_args ' --no-cache' (default: )
+ --upload, -U Upload Docker image to registry (default: False)
+ --registry REGISTRY The docker registry the image is tagged and uploaded to. (default: registry.opengeosys.org/ogs/ogs)
+ --tag TAG The full docker image tag. Overwrites --registry. (default: )
+ --convert, -C Convert Docker image to Singularity image (default: False)
+ --sif_file SIF_FILE Overwrite output singularity image file name (default: )
+ --convert-enroot, -E Convert Docker image to enroot image (default: False)
+ --enroot-bundle Convert enroot image to enroot bundle (default: False)
+ --enroot_file ENROOT_FILE
+ Overwrite output enroot image file name (default: )
+ --force Forces overwriting of image files! (default: False)
+ --runtime-only, -R Generate multi-stage Dockerfiles for small runtime images (default: False)
+
+Maintenance:
+ --clean Cleans up generated files in default directories. (default: False)
+
+Image deployment:
+ --deploy [DEPLOY], -D [DEPLOY]
+ Deploys to all configured hosts (in config/deploy_hosts.yml) with no additional arguments or to the specified host. Implies --build and --convert arguments. (default: )
+
+Packages to install:
+ --pip [package ...] Install additional Python packages (default: [])
+ --packages [packages ...]
+ Install additional OS packages (default: [])
+
+compiler.py:
+ --compiler COMPILER The compiler to use. Possible options: off, gcc, clang (default: gcc)
+ --compiler_version COMPILER_VERSION
+ Compiler version. (default: )
+ --fortran Install fortran compiler. (default: False)
+ --iwyy Install include-what-you-use (requires clang compiler) (default: False)
+
+mpi.py:
+ --ompi OMPI OpenMPI version, e.g. 2.1.1, 2.1.5, 3.0.1, 3.1.2 (default: 4.0.6)
+ --mpi_benchmarks Installs OSU MPI benchmarks and mpi_bw, mpi_ring, mpi_hello (default: False)
+ --mpi_no_entrypoint Disables mpi entrypoint. (Use with ogs_jupyter.py recipe) (default: False)
+
+ogs.py:
+ --pm {system,off} Package manager to install third-party dependencies (default: system)
+ --ogs OGS OGS repo on gitlab.opengeosys.org in the form 'user/repo@branch' OR 'user/repo@@commit' to checkout a specific commit OR a path to a local subdirectory to the git cloned OGS
+ sources OR 'off' to disable OGS building OR 'clean' to disable OGS and all its dev dependencies (default: ogs/ogs@master)
+ --cmake_args CMAKE_ARGS
+ CMake argument set has to be quoted and **must** start with a space. e.g. --cmake_args ' -DFIRST=TRUE -DFOO=BAR' (default: )
+ --cmake_preset CMAKE_PRESET
+ A CMake configuration preset to use. (default: release)
+ --cmake_preset_file CMAKE_PRESET_FILE
+ A CMake (user) presets file as a local file path. (default: None)
+ --ccache Enables ccache build caching. (Docker-only) (default: False)
+ --cpmcache Enables CPM source caching. (Docker-only) (default: False)
+ --parallel PARALLEL, -j PARALLEL
+ The number of cores to use for compilation. (default: 8)
+ --gui Builds the GUI (Data Explorer) (default: False)
+ --docs Setup documentation requirements (Doxygen) (default: False)
+ --cvode Install and configure with cvode (default: False)
+ --cppcheck Install cppcheck (default: False)
+ --gcovr Install gcovr (default: False)
+ --mfront Install tfel and build OGS with -DOGS_USE_MFRONT=ON (default: False)
+ --insitu Builds with insitu capabilities (default: False)
+ --dev Installs development tools (vim, gdb) (default: False)
+ --mkl Use MKL. By setting this option, you agree to the [Intel End User License Agreement](https://software.intel.com/en-us/articles/end-user-license-agreement). (default: False)
+ --petsc_configure_args PETSC_CONFIGURE_ARGS
+ PETSc configuration arguments; has to be quoted. (default: --with-fc=0 --download-f2cblaslapack=1)
+ --version_file VERSION_FILE
+ OGS versions.json file (default: None)
+ --boost-sourceforge Boolean flag to specify whether Boost should be downloaded from SourceForge rather than the current Boost repository. (default: False)
+ --keep-ogs-source Boolean flag to specify whether the OGS source directory should be preserved. (default: False)
+ --keep-ogs-build Boolean flag to specify whether the OGS build directory should be preserved. (default: False)
+ --run-ctest Boolean flag to specify whether to run the OGS ctest-target. (default: False)
+```
+
+## Advanced usage
+
+### Build OGS from local git repo
+
+You can use the ogs-container-maker to build a container image from your current source code on your host machine:
+
+```
+virtualenv .venv
+source .venv/bin/activate
+pip install ogscm
+ogscm compiler.py ogs.py -B -C -R --ogs [path to ogs sources]
+```
+
+### Deploy image files
+
+- Requires `rsync`
+- Rename the file `config/deploy_hosts_example.yml` to `config/deploy_hosts.yml`
+- `host` has to be a SSH host to which you have passwordless access
+- Deploy to the host with `... -D myhost`
+
+
+## PyPi Publication
+
+- Bump version in `pyproject.py` and run `poetry install`
+- Create tag
+- Push to GitLab (`git push --tags`)
+
+
+%package help
+Summary: Development documents and examples for ogscm
+Provides: python3-ogscm-doc
+%description help
+# OGS Container Maker
+
+[![PyPI version](https://badge.fury.io/py/ogscm.svg)](https://badge.fury.io/py/ogscm)
+
+## General usage
+
+### Installation
+
+```bash
+virtualenv ~/.venv/ogs-container-maker
+source ~/.venv/ogs-container-maker/bin/activate
+pip install ogscm
+```
+
+If you build images with Docker (`--build`-parameter, see below) you need to make sure that you have [setup Docker to be runnable without `sudo`](https://docs.docker.com/engine/install/linux-postinstall/#manage-docker-as-a-non-root-user)!
+
+
+Apple ARM specific:
+
+```bash
+export DOCKER_BUILDKIT=1
+docker buildx create --use --name=qemu
+docker buildx inspect --bootstrap
+```
+
+### Generate container definition
+
+OGS Container Maker has builtin *recipes*. You need to specify the recipes to use as command arguments. Each of recipes adds options to the tool. Typically you want to start with a compiler. Add the `compiler.py` recipe and the `--help`-flag to get more options:
+
+```bash
+$ ogscm compiler.py --help
+...
+compiler.py:
+ --compiler COMPILER The compiler to use. Possible options: off, gcc,
+ clang (default: gcc)
+ --compiler_version COMPILER_VERSION
+ Compiler version. (default: )
+ --iwyy Install include-what-you-use (requires clang
+ compiler) (default: False)
+```
+
+After specifying the compiler recipe (and optionally setting a non-default compiler and version) you may want to add the `ogs.py` recipe:
+
+```bash
+$ ogscm compiler.py ogs.py --help
+...
+ogs.py:
+ --pm {system,off}
+ Package manager to install third-party dependencies
+ (default: conan)
+ --ogs OGS OGS repo on gitlab.opengeosys.org in the form
+ 'user/repo@branch' OR 'user/repo@@commit' to
+ checkout a specific commit OR a path to a local
+ subdirectory to the git cloned OGS sources OR 'off'
+ to disable OGS building OR 'clean' to disable OGS
+ and all its dev dependencies (default:
+ ogs/ogs@master)
+ --cmake_args CMAKE_ARGS
+ CMake argument set has to be quoted and **must**
+ start with a space. e.g. --cmake_args '
+ -DFIRST=TRUE -DFOO=BAR' (default: )
+...
+```
+
+Please note that the order of the recipes given on the command line is important. The typical order for the current builtin recipes is `compiler.py mpi.py ogs.py ogs_jupyter.py`.
+
+To generate a Dockerfile with the default parameters:
+
+```bash
+$ ogscm compiler.py ogs.py
+Evaluating compiler.py
+Evaluating ogs.py
+Created definition _out/docker/gcc/default/ogs-d18c786e/conan/Dockerfile
+```
+
+With some options (and the `mpi.py`-recipe):
+
+```bash
+$ ogscm compiler.py mpi.py ogs.py --ompi 4.0.5 --cmake_args ' -DOGS_BUILD_PROCESSES=LiquidFlow'
+Evaluating compiler.py
+Evaluating mpi.py
+Evaluating ogs.py
+Created definition _out/docker/gcc/10/openmpi/4.0.5/ogs-d18c786e/conan/cmake-702517b3/Dockerfile
+```
+
+### Build image
+
+Add the `--build`-flag.
+
+Convert Docker image to Singularity image:
+
+Add the `--convert`-flag (requires Singularity 3.x).
+
+### Run
+
+```bash
+docker run --it --rm ogs-ompi-2.1.3
+# in container:
+ogs --version
+```
+
+```bash
+singularity shell ogs-ompi-2.1.3.sif
+# in container:
+ogs --version
+# OR directly run from host
+singularity exec ogs-ompi-2.1.3.sif ogs local/path/to/square_1e0.prj
+```
+
+## All options
+
+All options for current builtin recipes:
+
+```
+$ ogscm compiler.py mpi.py ogs.py --help
+Evaluating compiler.py
+Evaluating mpi.py
+Evaluating ogs.py
+usage: ogscm [-h] [--version] [--out OUT] [--file FILE] [--print] [--format {docker,singularity}] [--base_image BASE_IMAGE] [--runtime_base_image RUNTIME_BASE_IMAGE]
+ [--cpu-target {a64fx,aarch64,arm,broadwell,bulldozer,cannonlake,cascadelake,core2,excavator,haswell,i686,icelake,ivybridge,k10,mic_knl,nehalem,nocona,pentium2,pentium3,pentium4,piledriver,power7,power8,power8le,power9,power9le,ppc,ppc64,ppc64le,ppcle,prescott,sandybridge,skylake,skylake_avx512,sparc,sparc64,steamroller,thunderx2,westmere,x86,x86_64,zen,zen2}]
+ [--build] [--build_args BUILD_ARGS] [--upload] [--registry REGISTRY] [--tag TAG] [--convert] [--sif_file SIF_FILE] [--convert-enroot] [--enroot-bundle] [--enroot_file ENROOT_FILE] [--force]
+ [--runtime-only] [--clean] [--deploy [DEPLOY]] [--pip [package ...]] [--packages [packages ...]] [--compiler COMPILER] [--compiler_version COMPILER_VERSION] [--fortran] [--iwyy] [--ompi OMPI]
+ [--mpi_benchmarks] [--mpi_no_entrypoint] [--pm {system,off}] [--ogs OGS] [--cmake_args CMAKE_ARGS] [--cmake_preset CMAKE_PRESET] [--cmake_preset_file CMAKE_PRESET_FILE] [--ccache]
+ [--cpmcache] [--parallel PARALLEL] [--gui] [--docs] [--cvode] [--cppcheck] [--gcovr] [--mfront] [--insitu] [--dev] [--mkl] [--petsc_configure_args PETSC_CONFIGURE_ARGS]
+ [--version_file VERSION_FILE] [--boost-sourceforge] [--keep-ogs-source] [--keep-ogs-build] [--run-ctest]
+ recipe [recipe ...]
+
+positional arguments:
+ recipe
+
+optional arguments:
+ -h, --help show this help message and exit
+ --version show program's version number and exit
+ --out OUT Output directory (default: _out)
+ --file FILE Overwrite output recipe file name (default: )
+ --print, -P Print the definition to stdout (default: False)
+
+General image config:
+ --format {docker,singularity}
+ --base_image BASE_IMAGE
+ The base image. (default: ubuntu:20.04)
+ --runtime_base_image RUNTIME_BASE_IMAGE
+ The runtime base image. (default: )
+ --cpu-target {a64fx,aarch64,arm,broadwell,bulldozer,cannonlake,cascadelake,core2,excavator,haswell,i686,icelake,ivybridge,k10,mic_knl,nehalem,nocona,pentium2,pentium3,pentium4,piledriver,power7,power8,power8le,power9,power9le,ppc,ppc64,ppc64le,ppcle,prescott,sandybridge,skylake,skylake_avx512,sparc,sparc64,steamroller,thunderx2,westmere,x86,x86_64,zen,zen2}
+ The CPU microarchitecture to optimize for (archspec). (default: ivybridge)
+
+Image build options:
+ --build, -B Build the images from the definition files (default: False)
+ --build_args BUILD_ARGS
+ Arguments to the build command. Have to be quoted and **must** start with a space. E.g. --build_args ' --no-cache' (default: )
+ --upload, -U Upload Docker image to registry (default: False)
+ --registry REGISTRY The docker registry the image is tagged and uploaded to. (default: registry.opengeosys.org/ogs/ogs)
+ --tag TAG The full docker image tag. Overwrites --registry. (default: )
+ --convert, -C Convert Docker image to Singularity image (default: False)
+ --sif_file SIF_FILE Overwrite output singularity image file name (default: )
+ --convert-enroot, -E Convert Docker image to enroot image (default: False)
+ --enroot-bundle Convert enroot image to enroot bundle (default: False)
+ --enroot_file ENROOT_FILE
+ Overwrite output enroot image file name (default: )
+ --force Forces overwriting of image files! (default: False)
+ --runtime-only, -R Generate multi-stage Dockerfiles for small runtime images (default: False)
+
+Maintenance:
+ --clean Cleans up generated files in default directories. (default: False)
+
+Image deployment:
+ --deploy [DEPLOY], -D [DEPLOY]
+ Deploys to all configured hosts (in config/deploy_hosts.yml) with no additional arguments or to the specified host. Implies --build and --convert arguments. (default: )
+
+Packages to install:
+ --pip [package ...] Install additional Python packages (default: [])
+ --packages [packages ...]
+ Install additional OS packages (default: [])
+
+compiler.py:
+ --compiler COMPILER The compiler to use. Possible options: off, gcc, clang (default: gcc)
+ --compiler_version COMPILER_VERSION
+ Compiler version. (default: )
+ --fortran Install fortran compiler. (default: False)
+ --iwyy Install include-what-you-use (requires clang compiler) (default: False)
+
+mpi.py:
+ --ompi OMPI OpenMPI version, e.g. 2.1.1, 2.1.5, 3.0.1, 3.1.2 (default: 4.0.6)
+ --mpi_benchmarks Installs OSU MPI benchmarks and mpi_bw, mpi_ring, mpi_hello (default: False)
+ --mpi_no_entrypoint Disables mpi entrypoint. (Use with ogs_jupyter.py recipe) (default: False)
+
+ogs.py:
+ --pm {system,off} Package manager to install third-party dependencies (default: system)
+ --ogs OGS OGS repo on gitlab.opengeosys.org in the form 'user/repo@branch' OR 'user/repo@@commit' to checkout a specific commit OR a path to a local subdirectory to the git cloned OGS
+ sources OR 'off' to disable OGS building OR 'clean' to disable OGS and all its dev dependencies (default: ogs/ogs@master)
+ --cmake_args CMAKE_ARGS
+ CMake argument set has to be quoted and **must** start with a space. e.g. --cmake_args ' -DFIRST=TRUE -DFOO=BAR' (default: )
+ --cmake_preset CMAKE_PRESET
+ A CMake configuration preset to use. (default: release)
+ --cmake_preset_file CMAKE_PRESET_FILE
+ A CMake (user) presets file as a local file path. (default: None)
+ --ccache Enables ccache build caching. (Docker-only) (default: False)
+ --cpmcache Enables CPM source caching. (Docker-only) (default: False)
+ --parallel PARALLEL, -j PARALLEL
+ The number of cores to use for compilation. (default: 8)
+ --gui Builds the GUI (Data Explorer) (default: False)
+ --docs Setup documentation requirements (Doxygen) (default: False)
+ --cvode Install and configure with cvode (default: False)
+ --cppcheck Install cppcheck (default: False)
+ --gcovr Install gcovr (default: False)
+ --mfront Install tfel and build OGS with -DOGS_USE_MFRONT=ON (default: False)
+ --insitu Builds with insitu capabilities (default: False)
+ --dev Installs development tools (vim, gdb) (default: False)
+ --mkl Use MKL. By setting this option, you agree to the [Intel End User License Agreement](https://software.intel.com/en-us/articles/end-user-license-agreement). (default: False)
+ --petsc_configure_args PETSC_CONFIGURE_ARGS
+ PETSc configuration arguments; has to be quoted. (default: --with-fc=0 --download-f2cblaslapack=1)
+ --version_file VERSION_FILE
+ OGS versions.json file (default: None)
+ --boost-sourceforge Boolean flag to specify whether Boost should be downloaded from SourceForge rather than the current Boost repository. (default: False)
+ --keep-ogs-source Boolean flag to specify whether the OGS source directory should be preserved. (default: False)
+ --keep-ogs-build Boolean flag to specify whether the OGS build directory should be preserved. (default: False)
+ --run-ctest Boolean flag to specify whether to run the OGS ctest-target. (default: False)
+```
+
+## Advanced usage
+
+### Build OGS from local git repo
+
+You can use the ogs-container-maker to build a container image from your current source code on your host machine:
+
+```
+virtualenv .venv
+source .venv/bin/activate
+pip install ogscm
+ogscm compiler.py ogs.py -B -C -R --ogs [path to ogs sources]
+```
+
+### Deploy image files
+
+- Requires `rsync`
+- Rename the file `config/deploy_hosts_example.yml` to `config/deploy_hosts.yml`
+- `host` has to be a SSH host to which you have passwordless access
+- Deploy to the host with `... -D myhost`
+
+
+## PyPi Publication
+
+- Bump version in `pyproject.py` and run `poetry install`
+- Create tag
+- Push to GitLab (`git push --tags`)
+
+
+%prep
+%autosetup -n ogscm-2.4.8
+
+%build
+%py3_build
+
+%install
+%py3_install
+install -d -m755 %{buildroot}/%{_pkgdocdir}
+if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi
+if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi
+if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi
+if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi
+pushd %{buildroot}
+if [ -d usr/lib ]; then
+ find usr/lib -type f -printf "\"/%h/%f\"\n" >> filelist.lst
+fi
+if [ -d usr/lib64 ]; then
+ find usr/lib64 -type f -printf "\"/%h/%f\"\n" >> filelist.lst
+fi
+if [ -d usr/bin ]; then
+ find usr/bin -type f -printf "\"/%h/%f\"\n" >> filelist.lst
+fi
+if [ -d usr/sbin ]; then
+ find usr/sbin -type f -printf "\"/%h/%f\"\n" >> filelist.lst
+fi
+touch doclist.lst
+if [ -d usr/share/man ]; then
+ find usr/share/man -type f -printf "\"/%h/%f.gz\"\n" >> doclist.lst
+fi
+popd
+mv %{buildroot}/filelist.lst .
+mv %{buildroot}/doclist.lst .
+
+%files -n python3-ogscm -f filelist.lst
+%dir %{python3_sitelib}/*
+
+%files help -f doclist.lst
+%{_docdir}/*
+
+%changelog
+* Tue Jun 20 2023 Python_Bot <Python_Bot@openeuler.org> - 2.4.8-1
+- Package Spec generated