From 9b937c16dade02a3d664f235ba04543ae70e9499 Mon Sep 17 00:00:00 2001 From: Matthieu Date: Wed, 26 Feb 2025 11:28:04 +0100 Subject: [PATCH 01/15] add: climtools uenv --- recipes/climtools/25.2/gh200/compilers.yaml | 5 ++++ recipes/climtools/25.2/gh200/config.yaml | 6 +++++ .../climtools/25.2/gh200/environments.yaml | 21 +++++++++++++++++ recipes/climtools/25.2/gh200/modules.yaml | 23 +++++++++++++++++++ 4 files changed, 55 insertions(+) create mode 100644 recipes/climtools/25.2/gh200/compilers.yaml create mode 100644 recipes/climtools/25.2/gh200/config.yaml create mode 100644 recipes/climtools/25.2/gh200/environments.yaml create mode 100644 recipes/climtools/25.2/gh200/modules.yaml diff --git a/recipes/climtools/25.2/gh200/compilers.yaml b/recipes/climtools/25.2/gh200/compilers.yaml new file mode 100644 index 0000000..281fae8 --- /dev/null +++ b/recipes/climtools/25.2/gh200/compilers.yaml @@ -0,0 +1,5 @@ +bootstrap: + spec: gcc@12.3 +gcc: + specs: + - gcc@13 diff --git a/recipes/climtools/25.2/gh200/config.yaml b/recipes/climtools/25.2/gh200/config.yaml new file mode 100644 index 0000000..3537708 --- /dev/null +++ b/recipes/climtools/25.2/gh200/config.yaml @@ -0,0 +1,6 @@ +name: climtools +spack: + commit: releases/v0.23 + repo: https://github.com/spack/spack.git +store: /user-environment +description: C2SM climate tools diff --git a/recipes/climtools/25.2/gh200/environments.yaml b/recipes/climtools/25.2/gh200/environments.yaml new file mode 100644 index 0000000..20f9275 --- /dev/null +++ b/recipes/climtools/25.2/gh200/environments.yaml @@ -0,0 +1,21 @@ +gcc-env: + compiler: + - toolchain: gcc + spec: gcc + mpi: + spec: cray-mpich@8.1.30 + gpu: false + unify: true + specs: + - ncview + - cdo + - nco + - python@3.13 + - eccodes +tools +aec +openmp jp2k=jasper + views: + default: + link: roots + uenv: + add_compilers: true + prefix_paths: + LD_LIBRARY_PATH: [lib, lib64] diff --git a/recipes/climtools/25.2/gh200/modules.yaml b/recipes/climtools/25.2/gh200/modules.yaml new file mode 100644 index 0000000..623307b --- /dev/null +++ b/recipes/climtools/25.2/gh200/modules.yaml @@ -0,0 +1,23 @@ +modules: + # Paths to check when creating modules for all module sets + prefix_inspections: + bin: + - PATH + lib: + - LD_LIBRARY_PATH + lib64: + - LD_LIBRARY_PATH + + default: + arch_folder: false + # Where to install modules + roots: + tcl: /user-environment/modules + tcl: + all: + autoload: none + hash_length: 0 + exclude_implicits: true + exclude: ['%gcc@7.5.0', 'gcc %gcc@7.5.0'] + projections: + all: '{name}/{version}' From 5c993db8022b234b0064cbea435223a7fa23491b Mon Sep 17 00:00:00 2001 From: Matthieu Date: Wed, 26 Feb 2025 11:34:46 +0100 Subject: [PATCH 02/15] add: climtools in pipeline --- config.yaml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/config.yaml b/config.yaml index 0922ead..5cbee7d 100644 --- a/config.yaml +++ b/config.yaml @@ -52,3 +52,10 @@ uenvs: deploy: balfrin: [a100] develop: False + climtools: + "25.2": + recipes: + gh200: '25.2/gh200' + deploy: + santis: [gh200] + develop: False From 15937d9c3a0d0faf0667cd7eed38291f63b98d7c Mon Sep 17 00:00:00 2001 From: Matthieu Date: Wed, 26 Feb 2025 22:56:54 +0100 Subject: [PATCH 03/15] add(climtools): hdf5 and netcdf explicitely --- recipes/climtools/25.2/gh200/environments.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/recipes/climtools/25.2/gh200/environments.yaml b/recipes/climtools/25.2/gh200/environments.yaml index 20f9275..0cac29c 100644 --- a/recipes/climtools/25.2/gh200/environments.yaml +++ b/recipes/climtools/25.2/gh200/environments.yaml @@ -7,6 +7,9 @@ gcc-env: gpu: false unify: true specs: + - hdf5 + - netcdf-c + - netcdf-cxx4 - ncview - cdo - nco From b5b0b788df2a98c5eaef6bdbda0ce5b01654e85a Mon Sep 17 00:00:00 2001 From: Matthieu Date: Thu, 27 Feb 2025 11:01:21 +0100 Subject: [PATCH 04/15] add: explicit versions + eccodes recipe for 2.36.4 --- .../climtools/25.2/gh200/environments.yaml | 19 +- .../eccodes/cmake_install_rpath.patch | 11 + .../packages/eccodes/openjpeg_jasper.patch | 39 ++ .../gh200/repo/packages/eccodes/package.py | 385 ++++++++++++++++++ .../gh200/repo/packages/eccodes/readme.md | 1 + 5 files changed, 448 insertions(+), 7 deletions(-) create mode 100644 recipes/climtools/25.2/gh200/repo/packages/eccodes/cmake_install_rpath.patch create mode 100644 recipes/climtools/25.2/gh200/repo/packages/eccodes/openjpeg_jasper.patch create mode 100644 recipes/climtools/25.2/gh200/repo/packages/eccodes/package.py create mode 100644 recipes/climtools/25.2/gh200/repo/packages/eccodes/readme.md diff --git a/recipes/climtools/25.2/gh200/environments.yaml b/recipes/climtools/25.2/gh200/environments.yaml index 0cac29c..7e9c120 100644 --- a/recipes/climtools/25.2/gh200/environments.yaml +++ b/recipes/climtools/25.2/gh200/environments.yaml @@ -7,14 +7,19 @@ gcc-env: gpu: false unify: true specs: - - hdf5 - - netcdf-c - - netcdf-cxx4 - - ncview - - cdo - - nco + # Info about versions for later update: + # - the eccodes version is pinned to match the icon/25.2 recipe + # - the python version is set to the latest minor one (3.13) + # - other versions where just picked by the spack concretizer + # and then pinned to it in a second stage + - hdf5@1.14.5 +szip +hl + - netcdf-c@4.9.2 + - netcdf-cxx4@4.3.1 + - ncview@2.1.9 + - cdo@2.4.4 + - nco@5.2.4 - python@3.13 - - eccodes +tools +aec +openmp jp2k=jasper + - eccodes@2.36.4 +tools +aec +openmp jp2k=jasper views: default: link: roots diff --git a/recipes/climtools/25.2/gh200/repo/packages/eccodes/cmake_install_rpath.patch b/recipes/climtools/25.2/gh200/repo/packages/eccodes/cmake_install_rpath.patch new file mode 100644 index 0000000..7e2b250 --- /dev/null +++ b/recipes/climtools/25.2/gh200/repo/packages/eccodes/cmake_install_rpath.patch @@ -0,0 +1,11 @@ +--- a/cmake/ecbuild_append_to_rpath.cmake ++++ b/cmake/ecbuild_append_to_rpath.cmake +@@ -31,7 +31,7 @@ function( _path_append var path ) + else() + list( FIND ${var} ${path} _found ) + if( _found EQUAL "-1" ) +- set( ${var} "${${var}}:${path}" PARENT_SCOPE ) ++ set( ${var} "${${var}};${path}" PARENT_SCOPE ) + endif() + endif() + endfunction() diff --git a/recipes/climtools/25.2/gh200/repo/packages/eccodes/openjpeg_jasper.patch b/recipes/climtools/25.2/gh200/repo/packages/eccodes/openjpeg_jasper.patch new file mode 100644 index 0000000..5793f56 --- /dev/null +++ b/recipes/climtools/25.2/gh200/repo/packages/eccodes/openjpeg_jasper.patch @@ -0,0 +1,39 @@ +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -43,6 +43,18 @@ ecbuild_add_option( FEATURE JPG + DESCRIPTION "support for JPG decoding/encoding" + DEFAULT ON + ) ++# Options related to JPG. The Jasper and OpenJPEG libraries ++ecbuild_add_option( FEATURE JPG_LIBJASPER ++ DESCRIPTION "Support for JPG decoding/encoding with the Jasper library" ++ CONDITION ENABLE_JPG ++ DEFAULT ON ++) ++ecbuild_add_option( FEATURE JPG_LIBOPENJPEG ++ DESCRIPTION "Support for JPG decoding/encoding with the OpenJPEG library" ++ CONDITION ENABLE_JPG ++ DEFAULT ON ++) ++ + + ecbuild_add_option( FEATURE PNG + DESCRIPTION "support for PNG decoding/encoding" +@@ -144,7 +156,7 @@ if( ENABLE_JPG ) + + find_package( OpenJPEG ) + +- if( JASPER_FOUND ) ++ if( JASPER_FOUND AND ENABLE_JPG_LIBJASPER ) + list( APPEND ECCODES_TPLS Jasper ) + set( HAVE_JPEG 1 ) + set( HAVE_LIBJASPER 1 ) +@@ -152,7 +164,7 @@ if( ENABLE_JPG ) + string(REGEX REPLACE "^([0-9]+)\\.[0-9]+\\.[0-9]+.*" "\\1" JASPER_VERSION_MAJOR "${JASPER_VERSION_STRING}") + endif() + +- if( OPENJPEG_FOUND ) ++ if( OPENJPEG_FOUND AND ENABLE_JPG_LIBOPENJPEG ) + list( APPEND ECCODES_TPLS OpenJPEG ) + set( HAVE_JPEG 1 ) + set( HAVE_LIBOPENJPEG 1 ) diff --git a/recipes/climtools/25.2/gh200/repo/packages/eccodes/package.py b/recipes/climtools/25.2/gh200/repo/packages/eccodes/package.py new file mode 100644 index 0000000..aeb4692 --- /dev/null +++ b/recipes/climtools/25.2/gh200/repo/packages/eccodes/package.py @@ -0,0 +1,385 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + + +from spack.package import * + +_definitions = { + # German Meteorological Service (Deutscher Wetterdienst, DWD): + "edzw": { + "conflicts": {"when": "@:2.19.1,2.22.0,2.24.0:"}, + "resources": [ + { + "when": "@2.20.0", + "url": "http://opendata.dwd.de/weather/lib/grib/eccodes_definitions.edzw-2.20.0-1.tar.gz", + "sha256": "a92932f8a13c33cba65d3a33aa06c7fb4a37ed12a78e9abe2c5e966402b99af4", + }, + { + "when": "@2.21.0", + "url": "http://opendata.dwd.de/weather/lib/grib/eccodes_definitions.edzw-2.21.0-3.tar.bz2", + "sha256": "046f1f6450abb3b44c31dee6229f4aab06ca0d3576e27e93e05ccb7cd6e2d9d9", + }, + { + "when": "@2.22.1", + "url": "http://opendata.dwd.de/weather/lib/grib/eccodes_definitions.edzw-2.22.1-1.tar.bz2", + "sha256": "be73102a0dcabb236bacd2a70c7b5475f673fda91b49e34df61bef0fa5ad3389", + }, + { + "when": "@2.23.0", + "url": "http://opendata.dwd.de/weather/lib/grib/eccodes_definitions.edzw-2.23.0-4.tar.bz2", + "sha256": "c5db32861c7d23410aed466ffef3ca661410d252870a3949442d3ecb176aa338", + }, + ], + } +} + + +class Eccodes(CMakePackage): + """ecCodes is a package developed by ECMWF for processing meteorological + data in GRIB (1/2), BUFR (3/4) and GTS header formats.""" + + homepage = "https://software.ecmwf.int/wiki/display/ECC/ecCodes+Home" + url = "https://confluence.ecmwf.int/download/attachments/45757960/eccodes-2.2.0-Source.tar.gz?api=v2" + git = "https://github.com/ecmwf/eccodes.git" + list_url = "https://confluence.ecmwf.int/display/ECC/Releases" + + maintainers("skosukhin", "victoria-cherkas", "dominichofer", "climbfuji") + + license("Apache-2.0") + + version("develop", branch="develop") + version("2.36.4", + sha256="198ccb26e8df96544c668ea6853ea153535ab78b10c43339a678f271337aa0da", + url="https://github.com/ecmwf/eccodes/archive/refs/tags/2.36.4.tar.gz" + ) + version("2.34.0", sha256="3cd208c8ddad132789662cf8f67a9405514bfefcacac403c0d8c84507f303aba") + version("2.33.0", sha256="bdcec8ce63654ec6803400c507f01220a9aa403a45fa6b5bdff7fdcc44fd7daf") + version("2.32.1", sha256="ad2ac1bf36577b1d35c4a771b4d174a06f522a1e5ef6c1f5e53a795fb624863e") + version("2.32.0", sha256="b57e8eeb0eba0c05d66fda5527c4ffa84b5ab35c46bcbc9a2227142973ccb8e6") + version("2.31.0", sha256="808ecd2c11fbf2c3f9fc7a36f8c2965b343f3151011b58a1d6e7cc2e6b3cac5d") + version("2.25.0", sha256="8975131aac54d406e5457706fd4e6ba46a8cc9c7dd817a41f2aa64ce1193c04e") + version("2.24.2", sha256="c60ad0fd89e11918ace0d84c01489f21222b11d6cad3ff7495856a0add610403") + version("2.23.0", sha256="cbdc8532537e9682f1a93ddb03440416b66906a4cc25dec3cbd73940d194bf0c") + version("2.22.1", sha256="75c7ee96469bb30b0c8f7edbdc4429ece4415897969f75c36173545242bc9e85") + version("2.21.0", sha256="da0a0bf184bb436052e3eae582defafecdb7c08cdaab7216780476e49b509755") + version("2.20.0", sha256="207a3d7966e75d85920569b55a19824673e8cd0b50db4c4dac2d3d52eacd7985") + version("2.19.1", sha256="9964bed5058e873d514bd4920951122a95963128b12f55aa199d9afbafdd5d4b") + version("2.18.0", sha256="d88943df0f246843a1a062796edbf709ef911de7269648eef864be259e9704e3") + version("2.13.0", sha256="c5ce1183b5257929fc1f1c8496239e52650707cfab24f4e0e1f1a471135b8272") + version("2.5.0", sha256="18ab44bc444168fd324d07f7dea94f89e056f5c5cd973e818c8783f952702e4e") + version("2.2.0", sha256="1a4112196497b8421480e2a0a1164071221e467853486577c4f07627a702f4c3") + + # we are still using spack v0.21 v0.22, so comment these out for now + #depends_on("c", type="build") # generated + #depends_on("cxx", type="build") # generated + #depends_on("fortran", type="build") # generated + + variant("tools", default=False, description="Build the command line tools") + variant("netcdf", default=False, description="Enable GRIB to NetCDF conversion tool") + variant( + "jp2k", + default="openjpeg", + values=("openjpeg", "jasper", "none"), + description="Specify JPEG2000 decoding/encoding backend", + ) + variant("png", default=False, description="Enable PNG support for decoding/encoding") + variant( + "aec", default=True, description="Enable Adaptive Entropy Coding for decoding/encoding" + ) + variant("pthreads", default=False, description="Enable POSIX threads") + variant("openmp", default=False, description="Enable OpenMP threads") + variant( + "memfs", default=False, description="Enable memory based access to definitions/samples" + ) + variant("fortran", default=False, description="Enable the Fortran support") + variant("shared", default=True, description="Build shared versions of the libraries") + + variant( + "extra_definitions", + values=any_combination_of(*_definitions.keys()), + description="List of extra definitions to install", + ) + + depends_on("netcdf-c", when="+netcdf") + # Cannot be built with openjpeg@2.0.x. + depends_on("openjpeg@1.5.0:1.5,2.1.0:2.3", when="jp2k=openjpeg") + # Additional constraint for older versions. + depends_on("openjpeg@:2.1", when="@:2.16 jp2k=openjpeg") + + with when("jp2k=jasper"): + depends_on("jasper") + # jasper 3.x compat from commit 86f0b35f1a8492cb16f82fb976a0a5acd2986ac2 + depends_on("jasper@:2", when="@:2.25.0") + + depends_on("libpng", when="+png") + depends_on("libaec", when="+aec") + # Can be built with Python 2 or Python 3. + depends_on("python", when="+memfs", type="build") + + depends_on("cmake@3.6:", type="build") + depends_on("cmake@3.12:", when="@2.19:", type="build") + + # TODO: ecbuild was only used for the @develop branch + # however, testing 2.36.4, it appears to be a requirement. + # this might be because they package the software differently in GitHub + # (they normally provide releases as tar balls on Confluence) + depends_on("ecbuild", type="build") + #depends_on("ecbuild", type="build", when="@develop") + + conflicts("+openmp", when="+pthreads", msg="Cannot enable both POSIX threads and OMP") + + conflicts( + "+netcdf", + when="~tools", + msg="Cannot enable the NetCDF conversion tool " "when the command line tools are disabled", + ) + + conflicts( + "~tools", + when="@:2.18.0", + msg="The command line tools can be disabled " "only starting version 2.19.0", + ) + + for center, definitions in _definitions.items(): + kwargs = definitions.get("conflicts", None) + if kwargs: + conflicts("extra_definitions={0}".format(center), **kwargs) + for kwargs in definitions.get("resources", []): + resource( + name=center, + destination="spack-definitions", + placement="definitions.{0}".format(center), + **kwargs, + ) + + # Enforce linking against the specified JPEG2000 backend, see also + # https://github.com/ecmwf/eccodes/commit/2c10828495900ff3d80d1e570fe96c1df16d97fb + patch("openjpeg_jasper.patch", when="@:2.16") + + # CMAKE_INSTALL_RPATH must be a semicolon-separated list. + patch("cmake_install_rpath.patch", when="@:2.10") + + # Fix a bug preventing cmake from finding NetCDF: + patch( + "https://github.com/ecmwf/ecbuild/commit/3916c7d22575c45166fcc89edcbe02a6e9b81aa2.patch?full_index=1", + sha256="9dcc4affaaa850d4b7247baa939d0f9ffedea132369f1afc3f248dbf720386c9", + when="@:2.4.0+netcdf", + ) + + @when("%nag+fortran") + def patch(self): + # A number of Fortran source files assume that the kinds of integer and + # real variables are specified in bytes. However, the NAG compiler + # accepts such code only with an additional compiler flag -kind=byte. + # We do not simply add the flag because all user applications would + # have to be compiled with this flag too, which goes against one of the + # purposes of using the NAG compiler: make sure the code does not + # contradict the Fortran standards. The following logic could have been + # implemented as regular patch files, which would, however, be quite + # large. We would also have to introduce several versions of each patch + # file to support different versions of the package. + + patch_kind_files = [ + "fortran/eccodes_f90_head.f90", + "fortran/eccodes_f90_tail.f90", + "fortran/grib_f90_head.f90", + "fortran/grib_f90_tail.f90", + "fortran/grib_types.f90", + ] + + patch_unix_ext_files = [] + + if self.run_tests: + patch_kind_files.extend( + [ + "examples/F90/grib_print_data.f90", + "examples/F90/grib_print_data_static.f90", + # Files that need patching only when the extended regression + # tests are enabled, which we disable unconditionally: + # 'examples/F90/bufr_attributes.f90', + # 'examples/F90/bufr_expanded.f90', + # 'examples/F90/bufr_get_keys.f90', + # 'examples/F90/bufr_read_scatterometer.f90', + # 'examples/F90/bufr_read_synop.f90', + # 'examples/F90/bufr_read_temp.f90', + # 'examples/F90/bufr_read_tempf.f90', + # 'examples/F90/bufr_read_tropical_cyclone.f90', + # 'examples/F90/grib_clone.f90', + # 'examples/F90/grib_get_data.f90', + # 'examples/F90/grib_nearest.f90', + # 'examples/F90/grib_precision.f90', + # 'examples/F90/grib_read_from_file.f90', + # 'examples/F90/grib_samples.f90', + # 'examples/F90/grib_set_keys.f90' + ] + ) + + patch_unix_ext_files.extend( + [ + "examples/F90/bufr_ecc-1284.f90", + "examples/F90/grib_set_data.f90", + "examples/F90/grib_set_packing.f90", + # Files that need patching only when the extended regression + # tests are enabled, which we disable unconditionally: + # 'examples/F90/bufr_copy_data.f90', + # 'examples/F90/bufr_get_string_array.f90', + # 'examples/F90/bufr_keys_iterator.f90', + # 'examples/F90/get_product_kind.f90', + # 'examples/F90/grib_count_messages_multi.f90' + ] + ) + + kwargs = {"string": False, "backup": False, "ignore_absent": True} + + # Return the kind and not the size: + filter_file( + r"(^\s*kind_of_double\s*=\s*)(\d{1,2})(\s*$)", + "\\1kind(real\\2)\\3", + "fortran/grib_types.f90", + **kwargs, + ) + filter_file( + r"(^\s*kind_of_\w+\s*=\s*)(\d{1,2})(\s*$)", + "\\1kind(x\\2)\\3", + "fortran/grib_types.f90", + **kwargs, + ) + + # Replace integer kinds: + for size, r in [(2, 4), (4, 9), (8, 18)]: + filter_file( + r"(^\s*integer\((?:kind=)?){0}(\).*)".format(size), + "\\1selected_int_kind({0})\\2".format(r), + *patch_kind_files, + **kwargs, + ) + + # Replace real kinds: + for size, p, r in [(4, 6, 37), (8, 15, 307)]: + filter_file( + r"(^\s*real\((?:kind=)?){0}(\).*)".format(size), + "\\1selected_real_kind({0}, {1})\\2".format(p, r), + *patch_kind_files, + **kwargs, + ) + + # Enable getarg and exit subroutines: + filter_file( + r"(^\s*program\s+\w+)(\s*$)", + "\\1; use f90_unix_env; use f90_unix_proc\\2", + *patch_unix_ext_files, + **kwargs, + ) + + @property + def libs(self): + libraries = [] + + query_parameters = self.spec.last_query.extra_parameters + + if "shared" in query_parameters: + shared = True + elif "static" in query_parameters: + shared = False + else: + shared = "+shared" in self.spec + + # Return Fortran library if requested: + return_fortran = "fortran" in query_parameters + # Return C library if either requested or the Fortran library is not + # requested (to avoid overlinking) or the static libraries are + # requested: + return_c = "c" in query_parameters or not (return_fortran and shared) + # Return MEMFS library only if enabled and the static libraries are + # requested: + return_memfs = "+memfs" in self.spec and not shared + + if return_fortran: + libraries.append("libeccodes_f90") + + if return_c: + libraries.append("libeccodes") + + if return_memfs: + libraries.append("libeccodes_memfs") + + libs = find_libraries(libraries, root=self.prefix, shared=shared, recursive=True) + + if libs and len(libs) == len(libraries): + return libs + + msg = "Unable to recursively locate {0} {1} libraries in {2}" + raise spack.error.NoLibrariesError( + msg.format("shared" if shared else "static", self.spec.name, self.spec.prefix) + ) + + @run_before("cmake") + def check_fortran(self): + if "+fortran" in self.spec and self.compiler.fc is None: + raise InstallError("Fortran interface requires a Fortran compiler!") + + def cmake_args(self): + jp2k = self.spec.variants["jp2k"].value + + args = [ + self.define_from_variant("ENABLE_BUILD_TOOLS", "tools"), + self.define_from_variant("ENABLE_NETCDF", "netcdf"), + self.define("ENABLE_JPG", jp2k != "none"), + self.define("ENABLE_JPG_LIBJASPER", jp2k == "jasper"), + self.define("ENABLE_JPG_LIBOPENJPEG", jp2k == "openjpeg"), + self.define_from_variant("ENABLE_PNG", "png"), + self.define_from_variant("ENABLE_AEC", "aec"), + self.define_from_variant("ENABLE_ECCODES_THREADS", "pthreads"), + self.define_from_variant("ENABLE_ECCODES_OMP_THREADS", "openmp"), + self.define_from_variant("ENABLE_MEMFS", "memfs"), + self.define( + "ENABLE_PYTHON{0}".format("2" if self.spec.satisfies("@2.20.0:") else ""), False + ), + self.define_from_variant("ENABLE_FORTRAN", "fortran"), + self.define("BUILD_SHARED_LIBS", "BOTH" if "+shared" in self.spec else "OFF"), + self.define("ENABLE_TESTS", self.run_tests), + # Examples are not installed and are just part of the test suite: + self.define("ENABLE_EXAMPLES", self.run_tests), + # Unconditionally disable the extended regression tests, since they + # download additional data (~134MB): + self.define("ENABLE_EXTRA_TESTS", False), + ] + + if self.spec.satisfies("+netcdf"): + # Prevent possible overriding by environment variables NETCDF_ROOT, NETCDF_DIR, and + # NETCDF_PATH: + args.append(self.define("NETCDF_PATH", self.spec["netcdf-c"].prefix)) + # Prevent overriding by environment variable HDF5_ROOT (starting version 2.14.0, + # ecCodes is shipped with ecBuild 3.1.0+, which does not seem to rely on the HDF5_ROOT + # variable): + if self.spec.satisfies("@:2.13"): + args.append(self.define("HDF5_ROOT", self.spec["hdf5"].prefix)) + + if jp2k == "openjpeg": + args.append(self.define("OPENJPEG_PATH", self.spec["openjpeg"].prefix)) + + if self.spec.satisfies("+png"): + args.append(self.define("ZLIB_ROOT", self.spec["zlib-api"].prefix)) + + if self.spec.satisfies("+aec"): + # Prevent overriding by environment variables AEC_DIR and AEC_PATH: + args.append(self.define("AEC_DIR", self.spec["libaec"].prefix)) + + return args + + @run_after("install") + def install_extra_definitions(self): + for center in self.spec.variants["extra_definitions"].value: + if center != "none": + center_dir = "definitions.{0}".format(center) + install_tree( + join_path(self.stage.source_path, "spack-definitions", center_dir), + join_path(self.prefix.share.eccodes, center_dir), + ) + + def check(self): + # https://confluence.ecmwf.int/display/ECC/ecCodes+installation + with working_dir(self.build_directory): + ctest() diff --git a/recipes/climtools/25.2/gh200/repo/packages/eccodes/readme.md b/recipes/climtools/25.2/gh200/repo/packages/eccodes/readme.md new file mode 100644 index 0000000..9678342 --- /dev/null +++ b/recipes/climtools/25.2/gh200/repo/packages/eccodes/readme.md @@ -0,0 +1 @@ +copied from mainline spack November 5 2024 so that we can add eccodes 2.36.0 for mch production From 0211aeca294088d0e94cd986c8b7502b34fb0d68 Mon Sep 17 00:00:00 2001 From: Matthieu Date: Thu, 27 Feb 2025 13:55:59 +0100 Subject: [PATCH 05/15] ref: downgrade spack, unpin versions - use the same spack version as spack-c2sm. This downgrades cdo to 2.4.0 and only allows python 3.12 - unpin package versions, only document what they were concretized to. --- recipes/climtools/25.2/gh200/config.yaml | 2 +- .../climtools/25.2/gh200/environments.yaml | 19 +++++++++---------- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/recipes/climtools/25.2/gh200/config.yaml b/recipes/climtools/25.2/gh200/config.yaml index 3537708..9d8945f 100644 --- a/recipes/climtools/25.2/gh200/config.yaml +++ b/recipes/climtools/25.2/gh200/config.yaml @@ -1,6 +1,6 @@ name: climtools spack: - commit: releases/v0.23 + commit: releases/v0.22 repo: https://github.com/spack/spack.git store: /user-environment description: C2SM climate tools diff --git a/recipes/climtools/25.2/gh200/environments.yaml b/recipes/climtools/25.2/gh200/environments.yaml index 7e9c120..946e110 100644 --- a/recipes/climtools/25.2/gh200/environments.yaml +++ b/recipes/climtools/25.2/gh200/environments.yaml @@ -8,17 +8,16 @@ gcc-env: unify: true specs: # Info about versions for later update: - # - the eccodes version is pinned to match the icon/25.2 recipe - # - the python version is set to the latest minor one (3.13) + # - the eccodes version is pinned to 2.36.4 to match the icon/25.2 recipe + # - the python minor version is set to the latest possible spack accepts # - other versions where just picked by the spack concretizer - # and then pinned to it in a second stage - - hdf5@1.14.5 +szip +hl - - netcdf-c@4.9.2 - - netcdf-cxx4@4.3.1 - - ncview@2.1.9 - - cdo@2.4.4 - - nco@5.2.4 - - python@3.13 + - hdf5 +szip +hl # concretized to @1.14.3 + - netcdf-c # concretized to @4.9.2 + - netcdf-cxx4 # concretized to @4.3.1 + - ncview # concretized to @2.1.9 + - cdo # concretized to @2.4.0 + - nco # concretized to @5.1.9 + - python@3.12 # concretized to @3.12.1 - eccodes@2.36.4 +tools +aec +openmp jp2k=jasper views: default: From 3605d2bb5bb081d7c6cf855e228912454ca0417e Mon Sep 17 00:00:00 2001 From: Matthieu Date: Thu, 27 Feb 2025 14:22:18 +0100 Subject: [PATCH 06/15] add: git-lfs --- recipes/climtools/25.2/gh200/environments.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/climtools/25.2/gh200/environments.yaml b/recipes/climtools/25.2/gh200/environments.yaml index 946e110..672ab8e 100644 --- a/recipes/climtools/25.2/gh200/environments.yaml +++ b/recipes/climtools/25.2/gh200/environments.yaml @@ -19,6 +19,7 @@ gcc-env: - nco # concretized to @5.1.9 - python@3.12 # concretized to @3.12.1 - eccodes@2.36.4 +tools +aec +openmp jp2k=jasper + - git-lfs # concretized to @3.3.0 views: default: link: roots From 0035c9183ebb7d2fe87fb0aa743b3cde1e878652 Mon Sep 17 00:00:00 2001 From: Matthieu Date: Thu, 27 Feb 2025 14:52:56 +0100 Subject: [PATCH 07/15] ref: remove comments about concretized versions --- recipes/climtools/25.2/gh200/environments.yaml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/recipes/climtools/25.2/gh200/environments.yaml b/recipes/climtools/25.2/gh200/environments.yaml index 672ab8e..656ccda 100644 --- a/recipes/climtools/25.2/gh200/environments.yaml +++ b/recipes/climtools/25.2/gh200/environments.yaml @@ -11,15 +11,15 @@ gcc-env: # - the eccodes version is pinned to 2.36.4 to match the icon/25.2 recipe # - the python minor version is set to the latest possible spack accepts # - other versions where just picked by the spack concretizer - - hdf5 +szip +hl # concretized to @1.14.3 - - netcdf-c # concretized to @4.9.2 - - netcdf-cxx4 # concretized to @4.3.1 - - ncview # concretized to @2.1.9 - - cdo # concretized to @2.4.0 - - nco # concretized to @5.1.9 - - python@3.12 # concretized to @3.12.1 + - hdf5 +szip +hl + - netcdf-c + - netcdf-cxx4 + - ncview + - cdo + - nco + - python@3.12 - eccodes@2.36.4 +tools +aec +openmp jp2k=jasper - - git-lfs # concretized to @3.3.0 + - git-lfs views: default: link: roots From 78484da0b01adefd4cc80acd0349b7ca37393e44 Mon Sep 17 00:00:00 2001 From: Matthieu Date: Thu, 6 Mar 2025 11:40:54 +0100 Subject: [PATCH 08/15] add(climtools): icontools Try to use ${GITLAB_DKRZ_TOKEN} through GIT_CONFIG_XXX env vars in the pipeline in order to clone the private icontools repo. --- ci/ci.yml | 5 +++++ .../climtools/{25.2 => 25.3}/gh200/compilers.yaml | 0 recipes/climtools/{25.2 => 25.3}/gh200/config.yaml | 0 .../climtools/{25.2 => 25.3}/gh200/environments.yaml | 9 ++++++--- recipes/climtools/{25.2 => 25.3}/gh200/modules.yaml | 0 recipes/climtools/25.3/gh200/pre-install | 12 ++++++++++++ .../repo/packages/eccodes/cmake_install_rpath.patch | 0 .../repo/packages/eccodes/openjpeg_jasper.patch | 0 .../gh200/repo/packages/eccodes/package.py | 0 .../gh200/repo/packages/eccodes/readme.md | 0 10 files changed, 23 insertions(+), 3 deletions(-) rename recipes/climtools/{25.2 => 25.3}/gh200/compilers.yaml (100%) rename recipes/climtools/{25.2 => 25.3}/gh200/config.yaml (100%) rename recipes/climtools/{25.2 => 25.3}/gh200/environments.yaml (73%) rename recipes/climtools/{25.2 => 25.3}/gh200/modules.yaml (100%) create mode 100644 recipes/climtools/25.3/gh200/pre-install rename recipes/climtools/{25.2 => 25.3}/gh200/repo/packages/eccodes/cmake_install_rpath.patch (100%) rename recipes/climtools/{25.2 => 25.3}/gh200/repo/packages/eccodes/openjpeg_jasper.patch (100%) rename recipes/climtools/{25.2 => 25.3}/gh200/repo/packages/eccodes/package.py (100%) rename recipes/climtools/{25.2 => 25.3}/gh200/repo/packages/eccodes/readme.md (100%) diff --git a/ci/ci.yml b/ci/ci.yml index 7fbe0d4..072fbaf 100644 --- a/ci/ci.yml +++ b/ci/ci.yml @@ -1,3 +1,8 @@ +env: + GIT_CONFIG_COUNT: 1 + GIT_CONFIG_KEY_0: url.https://oauth2:${GITLAB_DKRZ_TOKEN}@gitlab.dkrz.de/.insteadOf + GIT_CONFIG_VALUE_0: "git@gitlab.dkrz.de:" + stages: - configure - run diff --git a/recipes/climtools/25.2/gh200/compilers.yaml b/recipes/climtools/25.3/gh200/compilers.yaml similarity index 100% rename from recipes/climtools/25.2/gh200/compilers.yaml rename to recipes/climtools/25.3/gh200/compilers.yaml diff --git a/recipes/climtools/25.2/gh200/config.yaml b/recipes/climtools/25.3/gh200/config.yaml similarity index 100% rename from recipes/climtools/25.2/gh200/config.yaml rename to recipes/climtools/25.3/gh200/config.yaml diff --git a/recipes/climtools/25.2/gh200/environments.yaml b/recipes/climtools/25.3/gh200/environments.yaml similarity index 73% rename from recipes/climtools/25.2/gh200/environments.yaml rename to recipes/climtools/25.3/gh200/environments.yaml index 656ccda..34590db 100644 --- a/recipes/climtools/25.2/gh200/environments.yaml +++ b/recipes/climtools/25.3/gh200/environments.yaml @@ -10,16 +10,19 @@ gcc-env: # Info about versions for later update: # - the eccodes version is pinned to 2.36.4 to match the icon/25.2 recipe # - the python minor version is set to the latest possible spack accepts - # - other versions where just picked by the spack concretizer + # - netcdf versions are pinned for "documentation" as they could be sensitive + # but should be updated to the latest possible - hdf5 +szip +hl - - netcdf-c - - netcdf-cxx4 + - netcdf-c@4.9.2 + - netcdf-cxx4@4.3.1 + - netcdf-fortran@4.6.1 - ncview - cdo - nco - python@3.12 - eccodes@2.36.4 +tools +aec +openmp jp2k=jasper - git-lfs + - icontools@2.5.2 views: default: link: roots diff --git a/recipes/climtools/25.2/gh200/modules.yaml b/recipes/climtools/25.3/gh200/modules.yaml similarity index 100% rename from recipes/climtools/25.2/gh200/modules.yaml rename to recipes/climtools/25.3/gh200/modules.yaml diff --git a/recipes/climtools/25.3/gh200/pre-install b/recipes/climtools/25.3/gh200/pre-install new file mode 100644 index 0000000..adc3b38 --- /dev/null +++ b/recipes/climtools/25.3/gh200/pre-install @@ -0,0 +1,12 @@ +#!/bin/bash + +packages=("icontools") +SPACK_C2SM_TAG="v0.22.2.2" + +git clone -b ${SPACK_C2SM_TAG} https://github.com/C2SM/spack-c2sm.git + +for package in "${packages[@]}"; do + cp -r spack-c2sm/repos/c2sm/packages/"${package}" store/repo/packages +done + +rm -rf spack-c2sm diff --git a/recipes/climtools/25.2/gh200/repo/packages/eccodes/cmake_install_rpath.patch b/recipes/climtools/25.3/gh200/repo/packages/eccodes/cmake_install_rpath.patch similarity index 100% rename from recipes/climtools/25.2/gh200/repo/packages/eccodes/cmake_install_rpath.patch rename to recipes/climtools/25.3/gh200/repo/packages/eccodes/cmake_install_rpath.patch diff --git a/recipes/climtools/25.2/gh200/repo/packages/eccodes/openjpeg_jasper.patch b/recipes/climtools/25.3/gh200/repo/packages/eccodes/openjpeg_jasper.patch similarity index 100% rename from recipes/climtools/25.2/gh200/repo/packages/eccodes/openjpeg_jasper.patch rename to recipes/climtools/25.3/gh200/repo/packages/eccodes/openjpeg_jasper.patch diff --git a/recipes/climtools/25.2/gh200/repo/packages/eccodes/package.py b/recipes/climtools/25.3/gh200/repo/packages/eccodes/package.py similarity index 100% rename from recipes/climtools/25.2/gh200/repo/packages/eccodes/package.py rename to recipes/climtools/25.3/gh200/repo/packages/eccodes/package.py diff --git a/recipes/climtools/25.2/gh200/repo/packages/eccodes/readme.md b/recipes/climtools/25.3/gh200/repo/packages/eccodes/readme.md similarity index 100% rename from recipes/climtools/25.2/gh200/repo/packages/eccodes/readme.md rename to recipes/climtools/25.3/gh200/repo/packages/eccodes/readme.md From 8d4231b9d9b6ada7f041085cf2c02c0c34a734ad Mon Sep 17 00:00:00 2001 From: Matthieu Date: Thu, 6 Mar 2025 11:47:35 +0100 Subject: [PATCH 09/15] fix: missing CI config for climtools/25.3 --- config.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config.yaml b/config.yaml index 5cbee7d..e4bdac0 100644 --- a/config.yaml +++ b/config.yaml @@ -53,9 +53,9 @@ uenvs: balfrin: [a100] develop: False climtools: - "25.2": + "25.3": recipes: - gh200: '25.2/gh200' + gh200: '25.3/gh200' deploy: santis: [gh200] develop: False From 7b80fb55637d744fdbb289686f08be1934634962 Mon Sep 17 00:00:00 2001 From: Matthieu Date: Thu, 6 Mar 2025 21:26:00 +0100 Subject: [PATCH 10/15] test: change CI env var scope --- ci/ci.yml | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/ci/ci.yml b/ci/ci.yml index 072fbaf..ebf2837 100644 --- a/ci/ci.yml +++ b/ci/ci.yml @@ -1,8 +1,3 @@ -env: - GIT_CONFIG_COUNT: 1 - GIT_CONFIG_KEY_0: url.https://oauth2:${GITLAB_DKRZ_TOKEN}@gitlab.dkrz.de/.insteadOf - GIT_CONFIG_VALUE_0: "git@gitlab.dkrz.de:" - stages: - configure - run @@ -25,6 +20,9 @@ generated-pipeline: variables: CSCS_NOTIFICATION_CONTEXT: "$system-$uarch-$uenv" PARENT_PIPELINE_ID: "$CI_PIPELINE_ID" + GIT_CONFIG_COUNT: 1 + GIT_CONFIG_KEY_0: url.https://oauth2:${GITLAB_DKRZ_TOKEN}@gitlab.dkrz.de/.insteadOf + GIT_CONFIG_VALUE_0: "git@gitlab.dkrz.de:" trigger: include: - artifact: pipeline.yml From 3850a3291774939846fa2a996d5f7e71614c5ba9 Mon Sep 17 00:00:00 2001 From: Matthieu Date: Thu, 27 Mar 2025 16:25:26 +0100 Subject: [PATCH 11/15] ref: climtools 25.3 -> 25.2 --- recipes/climtools/{25.3 => 25.2}/gh200/compilers.yaml | 0 recipes/climtools/{25.3 => 25.2}/gh200/config.yaml | 0 recipes/climtools/{25.3 => 25.2}/gh200/environments.yaml | 0 recipes/climtools/{25.3 => 25.2}/gh200/modules.yaml | 0 recipes/climtools/{25.3 => 25.2}/gh200/pre-install | 0 .../gh200/repo/packages/eccodes/cmake_install_rpath.patch | 0 .../gh200/repo/packages/eccodes/openjpeg_jasper.patch | 0 .../{25.3 => 25.2}/gh200/repo/packages/eccodes/package.py | 0 .../{25.3 => 25.2}/gh200/repo/packages/eccodes/readme.md | 0 9 files changed, 0 insertions(+), 0 deletions(-) rename recipes/climtools/{25.3 => 25.2}/gh200/compilers.yaml (100%) rename recipes/climtools/{25.3 => 25.2}/gh200/config.yaml (100%) rename recipes/climtools/{25.3 => 25.2}/gh200/environments.yaml (100%) rename recipes/climtools/{25.3 => 25.2}/gh200/modules.yaml (100%) rename recipes/climtools/{25.3 => 25.2}/gh200/pre-install (100%) rename recipes/climtools/{25.3 => 25.2}/gh200/repo/packages/eccodes/cmake_install_rpath.patch (100%) rename recipes/climtools/{25.3 => 25.2}/gh200/repo/packages/eccodes/openjpeg_jasper.patch (100%) rename recipes/climtools/{25.3 => 25.2}/gh200/repo/packages/eccodes/package.py (100%) rename recipes/climtools/{25.3 => 25.2}/gh200/repo/packages/eccodes/readme.md (100%) diff --git a/recipes/climtools/25.3/gh200/compilers.yaml b/recipes/climtools/25.2/gh200/compilers.yaml similarity index 100% rename from recipes/climtools/25.3/gh200/compilers.yaml rename to recipes/climtools/25.2/gh200/compilers.yaml diff --git a/recipes/climtools/25.3/gh200/config.yaml b/recipes/climtools/25.2/gh200/config.yaml similarity index 100% rename from recipes/climtools/25.3/gh200/config.yaml rename to recipes/climtools/25.2/gh200/config.yaml diff --git a/recipes/climtools/25.3/gh200/environments.yaml b/recipes/climtools/25.2/gh200/environments.yaml similarity index 100% rename from recipes/climtools/25.3/gh200/environments.yaml rename to recipes/climtools/25.2/gh200/environments.yaml diff --git a/recipes/climtools/25.3/gh200/modules.yaml b/recipes/climtools/25.2/gh200/modules.yaml similarity index 100% rename from recipes/climtools/25.3/gh200/modules.yaml rename to recipes/climtools/25.2/gh200/modules.yaml diff --git a/recipes/climtools/25.3/gh200/pre-install b/recipes/climtools/25.2/gh200/pre-install similarity index 100% rename from recipes/climtools/25.3/gh200/pre-install rename to recipes/climtools/25.2/gh200/pre-install diff --git a/recipes/climtools/25.3/gh200/repo/packages/eccodes/cmake_install_rpath.patch b/recipes/climtools/25.2/gh200/repo/packages/eccodes/cmake_install_rpath.patch similarity index 100% rename from recipes/climtools/25.3/gh200/repo/packages/eccodes/cmake_install_rpath.patch rename to recipes/climtools/25.2/gh200/repo/packages/eccodes/cmake_install_rpath.patch diff --git a/recipes/climtools/25.3/gh200/repo/packages/eccodes/openjpeg_jasper.patch b/recipes/climtools/25.2/gh200/repo/packages/eccodes/openjpeg_jasper.patch similarity index 100% rename from recipes/climtools/25.3/gh200/repo/packages/eccodes/openjpeg_jasper.patch rename to recipes/climtools/25.2/gh200/repo/packages/eccodes/openjpeg_jasper.patch diff --git a/recipes/climtools/25.3/gh200/repo/packages/eccodes/package.py b/recipes/climtools/25.2/gh200/repo/packages/eccodes/package.py similarity index 100% rename from recipes/climtools/25.3/gh200/repo/packages/eccodes/package.py rename to recipes/climtools/25.2/gh200/repo/packages/eccodes/package.py diff --git a/recipes/climtools/25.3/gh200/repo/packages/eccodes/readme.md b/recipes/climtools/25.2/gh200/repo/packages/eccodes/readme.md similarity index 100% rename from recipes/climtools/25.3/gh200/repo/packages/eccodes/readme.md rename to recipes/climtools/25.2/gh200/repo/packages/eccodes/readme.md From 78c5395a1305d19bb29ba3a76bf63de6f1b12d8a Mon Sep 17 00:00:00 2001 From: Matthieu Date: Thu, 3 Apr 2025 16:56:41 +0200 Subject: [PATCH 12/15] test: try new CI version with env var --- ci/ci.yml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/ci/ci.yml b/ci/ci.yml index ebf2837..28ce280 100644 --- a/ci/ci.yml +++ b/ci/ci.yml @@ -7,7 +7,7 @@ pipeline-configure: tags: [languard-k8s-lightweight] image: docker.io/python:latest script: - - git clone https://github.com/eth-cscs/uenv-pipeline.git + - git clone --branch=build-variables https://github.com/eth-cscs/uenv-pipeline.git - ./uenv-pipeline/configure-pipeline -c./config.yaml -r./recipes -s$system -u$uenv -a$uarch -o./pipeline.yml artifacts: paths: @@ -20,9 +20,6 @@ generated-pipeline: variables: CSCS_NOTIFICATION_CONTEXT: "$system-$uarch-$uenv" PARENT_PIPELINE_ID: "$CI_PIPELINE_ID" - GIT_CONFIG_COUNT: 1 - GIT_CONFIG_KEY_0: url.https://oauth2:${GITLAB_DKRZ_TOKEN}@gitlab.dkrz.de/.insteadOf - GIT_CONFIG_VALUE_0: "git@gitlab.dkrz.de:" trigger: include: - artifact: pipeline.yml From 0fa99768578f83ee158e643fa4fe3d62c368d556 Mon Sep 17 00:00:00 2001 From: Matthieu Date: Thu, 3 Apr 2025 16:59:47 +0200 Subject: [PATCH 13/15] fix: roll back to 25.2 --- config.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config.yaml b/config.yaml index e4bdac0..5cbee7d 100644 --- a/config.yaml +++ b/config.yaml @@ -53,9 +53,9 @@ uenvs: balfrin: [a100] develop: False climtools: - "25.3": + "25.2": recipes: - gh200: '25.3/gh200' + gh200: '25.2/gh200' deploy: santis: [gh200] develop: False From b1dbf913db008b5863f6bb4aaf318a88eb1f13be Mon Sep 17 00:00:00 2001 From: Matthieu Date: Fri, 4 Apr 2025 20:56:00 +0200 Subject: [PATCH 14/15] fix: spack version that fixes module issues --- recipes/climtools/25.2/gh200/config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/climtools/25.2/gh200/config.yaml b/recipes/climtools/25.2/gh200/config.yaml index 9d8945f..4f55595 100644 --- a/recipes/climtools/25.2/gh200/config.yaml +++ b/recipes/climtools/25.2/gh200/config.yaml @@ -1,6 +1,6 @@ name: climtools spack: - commit: releases/v0.22 + commit: v0.22.3 repo: https://github.com/spack/spack.git store: /user-environment description: C2SM climate tools From f9453699a543317a51864bdcf584d883733f0b90 Mon Sep 17 00:00:00 2001 From: bcumming Date: Wed, 4 Jun 2025 12:58:40 +0200 Subject: [PATCH 15/15] env. variable forwarding was merged to uenv-pipeline - no need to use a branch --- ci/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/ci.yml b/ci/ci.yml index 28ce280..7fbe0d4 100644 --- a/ci/ci.yml +++ b/ci/ci.yml @@ -7,7 +7,7 @@ pipeline-configure: tags: [languard-k8s-lightweight] image: docker.io/python:latest script: - - git clone --branch=build-variables https://github.com/eth-cscs/uenv-pipeline.git + - git clone https://github.com/eth-cscs/uenv-pipeline.git - ./uenv-pipeline/configure-pipeline -c./config.yaml -r./recipes -s$system -u$uenv -a$uarch -o./pipeline.yml artifacts: paths: