mirror of
https://github.com/Pmodules/Pmodules.git
synced 2026-06-27 10:03:08 +02:00
Merge branch '32-overlay-implementation' of gitlab.psi.ch:Pmodules/src into 32-overlay-implementation
This commit is contained in:
+176
-19
@@ -63,38 +63,195 @@ The old format of the variants file is simple but very limited and almost imposs
|
||||
|
||||
=== With a YAML variants file
|
||||
|
||||
==== Example of a variants file in YAML format
|
||||
.A YAML variants file
|
||||
Information is in the YAML configuration file:
|
||||
|
||||
==== General structure
|
||||
|
||||
name:: The name of the Pmodule without version. Example: `hdf5`
|
||||
group:: group the module is in. Example: `MPI`
|
||||
overlay:: (optional) overlay, defaults to `base` if not specified
|
||||
relstage:: (optional) default release stage. If not defined,
|
||||
it defaults to `unstable`,
|
||||
url:: (optional) download URL, Must be either define here or per
|
||||
version. The environment variables `$P`, `$V`, `$V_PKG` etc. can be used. The downloaded file is stored with the file name `$P-${V_PKG}.ext`. Whereby `ext` is derived from the URL.
|
||||
addon_sources:: (optional) array of sources for add-ons. Example: `git-lfs`
|
||||
use:: (optional) use flags.
|
||||
systems:: (optional) array of supported systems, defaults to any. Example: `[rhel6 rhel7]`.
|
||||
compilers:: (optional) array pf supported compilers, defaults to any. Example: `[gcc intel]`.
|
||||
compile-in-src:: (optional) compile in source tree, allowed vaules are `yes` and `no`, the default is `no`.
|
||||
configure-with:: (optional) If a software supports CMake and autotools, this specifies the tool to use. Allowed values are `autotools`, `cmake`, `auto`, `none`. The default is `auto`.
|
||||
versions:: array of `version` objects
|
||||
|
||||
==== Objects of type `addon_source`
|
||||
|
||||
name:: unique name
|
||||
url:: download URL.
|
||||
shasum:: (optional) SHA256 sum.
|
||||
|
||||
==== Objects of type `version`
|
||||
|
||||
dependencies:: other run-time dependencies, if any
|
||||
build_with:: dependencies required for building, if any
|
||||
overlay:: (optional) override the default. Example: `devel`.
|
||||
relstage:: (optional) override the default. Example: `unstable`.
|
||||
addon_sources:: (optional) array of sources for add-ons.
|
||||
systems:: (optional) override the default
|
||||
compilers:: (optional) override the default
|
||||
compile-in-src:: (optional) override the default
|
||||
configure-with:: (optional) override the default
|
||||
variants:: array of `variant` objects
|
||||
|
||||
==== Object of type `variant`
|
||||
with:: hierarchical dependencies, `with` must be specified only
|
||||
for hierarchical groups.
|
||||
dependencies:: other run-time dependencies, if any
|
||||
build_requires:: dependencies required for building, if any
|
||||
addon_sources:: (optional) array of sources for add-ons.
|
||||
use:: (optional) use flags
|
||||
overlay:: (optional) override the default. Example: `devel`.
|
||||
relstage:: (optional) override the default. Example: `unstable`.
|
||||
systems:: (optional) override the default
|
||||
compilers:: (optional) override the default
|
||||
|
||||
==== Example of a configuration files in YAML format
|
||||
|
||||
.YAML configuration file for serial HDF5
|
||||
====
|
||||
....
|
||||
name: hdf5
|
||||
group: MPI
|
||||
overlay: base
|
||||
relstage: stable
|
||||
url: https://support.hdfgroup.org/ftp/HDF5/releases/$P-${V_MAJOR}.${V_MINOR}/$P-${V_PKG}/src/$P-${V_PKG}.tar.gz
|
||||
systems: [rhel6,rhel7,rhel8]
|
||||
compilers: [gcc,intel,pgi]
|
||||
compile_in_sourcetree: no
|
||||
configure_with: auto
|
||||
|
||||
hdf5_serial/1.12.2:
|
||||
- with: gcc/{5.5.0,6.5.0,7.5.0,10.2.0,10.3.0}
|
||||
versions:
|
||||
1.12.2:
|
||||
shasum: 3016ea56a175d2ca7f2568c8016420f7a2aad8f95e214fe7fa5485f4b80fbe51
|
||||
variants:
|
||||
- group_deps:
|
||||
compiler:
|
||||
gcc: [5.5.0,6.5.0,7.5.0,10.2.0,10.3.0]
|
||||
intel: ....
|
||||
mpi:
|
||||
openmpi: [...]
|
||||
#hdf5:
|
||||
runtime_deps:
|
||||
cuda:10.0
|
||||
...
|
||||
build_deps:
|
||||
name:version
|
||||
|
||||
|
||||
|
||||
- with:
|
||||
- gcc: [8.5.0,9.5.0,11.3.0,12.1.0]
|
||||
relstage: unstable
|
||||
overlay: devel
|
||||
....
|
||||
====
|
||||
|
||||
.YAML configuration file for HDF5 (serial and parallel)
|
||||
====
|
||||
....
|
||||
name: hdf5
|
||||
overlay: base
|
||||
relstage: stable
|
||||
url: https://support.hdfgroup.org/ftp/HDF5/releases/$P-${V_MAJOR}.${V_MINOR}/$P-${V_PKG}/src/$P-${V_PKG}.tar.gz
|
||||
systems: [rhel6 rhel7 rhel8]
|
||||
compilers: [gcc intel pgi]
|
||||
compile_in_sourcetree: no
|
||||
configure_with: auto
|
||||
|
||||
versions:
|
||||
1.12.2:
|
||||
shasum: 3016ea56a175d2ca7f2568c8016420f7a2aad8f95e214fe7fa5485f4b80fbe51
|
||||
variants:
|
||||
- with:
|
||||
- gcc [5.5.0 6.5.0 7.5.0 10.2.0 10.3.0]
|
||||
group: Compiler
|
||||
- with:
|
||||
- gcc [8.5.0,9.5.0,11.3.0,12.1.0]
|
||||
- openmpi [4.0.5-2]
|
||||
group: MPI
|
||||
relstage: unstable
|
||||
overlay: devel
|
||||
....
|
||||
====
|
||||
|
||||
.YAML configuration file for Git with git-lfs
|
||||
====
|
||||
....
|
||||
name: git
|
||||
defaults:
|
||||
group: Tools
|
||||
overlay: base
|
||||
relstage: stable
|
||||
- with: gcc/{8.5.0,9.5.0,11.3.0,12.1.0}
|
||||
relstage: unstable
|
||||
overlay: devel
|
||||
url: https://mirrors.edge.kernel.org/pub/software/scm/$P/$P-${V_PKG}.tar.xz
|
||||
systems: [rhel6 rhel7 rhel8]
|
||||
compilers: [gcc]
|
||||
compile_in_sourcetree: yes
|
||||
configure_with: auto
|
||||
script: build
|
||||
|
||||
addons:
|
||||
git-lfs/3.2.0:
|
||||
- url: https://github.com/git-lfs/git-lfs/archive/refs/tags/v3.2.0.tar.gz
|
||||
shasum: f8e6bbe043b97db8a5c16da7289e149a3fed9f4d4f11cffcc6e517c7870cd9e5
|
||||
build_requires: [go/1.19]
|
||||
build_script: build-git-lfs
|
||||
|
||||
versions:
|
||||
2.37.2:
|
||||
shasum: 4c428908e3a2dca4174df6ef49acc995a4fdb1b45205a2c79794487a33bc06e5
|
||||
variants:
|
||||
- dependencies: TclTk/8.6.9
|
||||
build_requires: [perl/5.30.0 asciidoc/8.6.9-1 xmlto/0.0.28 gettext/0.19.8]
|
||||
relstage: unstable
|
||||
overlay: devel
|
||||
addons:
|
||||
git-lfs: 3.2.0
|
||||
|
||||
....
|
||||
====
|
||||
|
||||
==== Format specification
|
||||
.YAML format
|
||||
....
|
||||
relstage: <default-release-stage>
|
||||
overlay: <default-overlay>
|
||||
name: <Pmodule-name-without-version>
|
||||
source_url: "https://..."
|
||||
overlay: <opt-default-overlay>
|
||||
group: <default-group>
|
||||
systems: <default-systems>
|
||||
compilers: <supported-compilers>
|
||||
relstage: <opt-default-release-stage>
|
||||
systems: [opt-array-of-supported]
|
||||
compilers: [opt-array-of-supported-compilers]
|
||||
compile-in-src: yes|no
|
||||
configure-with: cmake|autotools|auto|none
|
||||
|
||||
<name>/<version>:
|
||||
- with: <hierarchical-build-dependencies>
|
||||
dependencies: <other-build-dependencies>
|
||||
relstate: <release-stage>
|
||||
overlay: <overlay>
|
||||
systems: <systems>
|
||||
...
|
||||
...
|
||||
versions:
|
||||
- <version1>:
|
||||
overlay: <overlay>
|
||||
group: <group>
|
||||
relstage: <release-stage>
|
||||
systems: [supported-systems]
|
||||
sources:
|
||||
- url: <url>
|
||||
shasum: <shasum>
|
||||
compilers: <default-list-of-supported-compilers>
|
||||
compile-in-src: yes|no
|
||||
configure-with: cmake|autotools|auto|none
|
||||
variants:
|
||||
- with:
|
||||
- gcc: [5.5.0,6.5.0,7.5.0,10.2.0,10.3.0]
|
||||
dependencies: [array-of-runtime-deps]
|
||||
build_requires: [array-of-build-deps]
|
||||
relstage: <release-stage>
|
||||
use: [array-of-use-flags]
|
||||
overlay: <overlay>
|
||||
...
|
||||
....
|
||||
==== Defaults
|
||||
Default values can be overriden per version/variant.
|
||||
|
||||
Reference in New Issue
Block a user