diff --git a/.ci/bb/mistral-dkrz/test.all.pgi-19.9.0 b/.ci/bb/mistral-dkrz/test.all.pgi-19.9.0
deleted file mode 100755
index cf72c08cb5d2f4d2338573f90efa971bee825f83..0000000000000000000000000000000000000000
--- a/.ci/bb/mistral-dkrz/test.all.pgi-19.9.0
+++ /dev/null
@@ -1,48 +0,0 @@
-#!/bin/bash
-
-set -eu
-set -o pipefail
-
-script_dir=$(cd "$(dirname "$0")"; pwd)
-top_srcdir=$(cd "${script_dir}/../../.."; pwd)
-
-. "${script_dir}/utils.sh"
-init_pgi1990
-
-test -f "${top_srcdir}/configure" || "${top_srcdir}/autogen.sh"
-
-# The configure script does not check the 'lib64' subdirectory, therefore we
-# run it with '--with-eccodes' and the following flags. Note that fixing this
-# in the configure script might be tricky: the 'lib64' subdirectory should be
-# checked first but if it does not exist or does not contain the library, we
-# might end up linking to a library from the linker's default search path
-# (e.g. /usr/lib) instead of the one from "$with_eccodes/lib" because
-# "-L${with_eccodes}/lib64" would be ignored in that case:
-CPPFLAGS="-I${ECCODES_ROOT}/include"
-LDFLAGS="-L${ECCODES_ROOT}/lib64"
-
-# There is no libnetcdf.la file, therefore Libtool does not know how to link
-# to the right library:
-LDFLAGS+=" -L${HDF5_ROOT}/lib"
-
-"${top_srcdir}/configure" \
---disable-maintainer-mode \
---enable-cf-interface \
---enable-iso-c-interface \
---enable-mpi \
---enable-option-checking=fatal \
---enable-ppm-dist-array \
---with-eccodes \
---with-netcdf="${NETCDF_ROOT}" \
-CC="${MPICC}" \
-CPPFLAGS="${CPPFLAGS}" \
-FC="${MPIFC}" \
-LDFLAGS="${LDFLAGS}" \
-MPI_LAUNCH="${MPI_LAUNCH}" \
-PKG_CONFIG_PATH="${YAXT_ROOT}/lib/pkgconfig:${PPM_ROOT}/lib/pkgconfig"
-
-make -j8
-
-make -j8 check || { cat tests/test-suite.log; exit 1; }
-
-check_all_tests_passed tests/test-suite.log
diff --git a/.ci/bb/mistral-dkrz/utils.sh b/.ci/bb/mistral-dkrz/utils.sh
deleted file mode 100644
index f6962da4b7af777edb408b8f7614081cd0234f88..0000000000000000000000000000000000000000
--- a/.ci/bb/mistral-dkrz/utils.sh
+++ /dev/null
@@ -1,238 +0,0 @@
-#
-# Accepts a list of environment modules and loads them witch conflict
-# resolution.
-#
-switch_for_module ()
-{
-  for sfm_module in "$@"; do
-    sfm_module_full=
-    sfm_module_short=
-    case $sfm_module in
-      */*)
-        # The module is provided with the version part:
-        sfm_module_full=$sfm_module
-        sfm_module_short=`echo $sfm_module | sed 's%/[^/]*$%%'` ;;
-      *)
-        # Only the name of the module is provided, get the default version:
-        sfm_module_full=`module show $sfm_module 2>&1 | sed -n "s%^[^ \t]*/\\($sfm_module.*\\):%\\1%p"`
-        sfm_module_short=$sfm_module ;;
-    esac
-
-    # A space-separated list of modules that are already loaded:
-    sfm_loaded_full=`module -t list 2>&1 | tr '\n' ' ' | sed 's/^.*Modulefiles://' | sed 's/(default)//g'`
-
-    # Check whether the requested module if already loaded:
-    if test -n "$sfm_module_full"; then
-      case " $sfm_loaded_full " in
-        *" $sfm_module_full "*)
-          echo "module $sfm_module is already loaded"
-          continue ;;
-      esac
-    fi
-
-    # A list of modules in conflict:
-    sfm_conflicts=`module show $sfm_module 2>&1 | sed -n 's/^conflict\(.*\)/\1/p' | tr '\n\t' '  '`
-
-    # A list of loaded modules without version parts:
-    sfm_loaded_short=`echo "$sfm_loaded_full" | sed 's%\([^ ][^ ]*\)/[^ ]*%\1%g'`
-
-    # Add the short name of the module to the list of conflicts:
-    sfm_conflicts="$sfm_conflicts $sfm_module_short"
-
-    # A list of loaded modules that are in conflict with the requested module:
-    sfm_loaded_conflicts=
-    for sfm_conflict in $sfm_conflicts""; do
-      sfm_loaded_list=      
-      case $sfm_conflict in
-        */*)
-          # The conflict is specified with the version part:
-          sfm_loaded_list=$sfm_loaded_full ;;
-        *)
-          # The conflict is specified without the version part:
-          sfm_loaded_list=$sfm_loaded_short ;;
-      esac
-
-      # Check that the conflicted module is loaded:
-      case " $sfm_loaded_list " in
-        *" $sfm_conflict "*)
-          # The conflict is loaded, check whether it is already added to the
-          # list:
-          case " $sfm_loaded_conflicts " in
-            *" $sfm_conflict "*) ;;
-            *)
-              # The conflict is not in the list, append:
-              sfm_loaded_conflicts="$sfm_loaded_conflicts $sfm_conflict" ;;
-          esac
-        ;;
-      esac
-    done
-
-    # Calculate the number of modules that must be unloaded to before loading
-    # the requested module:
-    sfm_loaded_conflicts_count=`echo $sfm_loaded_conflicts | wc -w`
-
-    case $sfm_loaded_conflicts_count in
-      0)
-        # None of the conflicting modules is loaded:
-        sfm_cmd="module load $sfm_module" ;;
-      1)
-        # There is only one module that must be unloaded, use switch command:
-        sfm_cmd="module switch $sfm_loaded_conflicts $sfm_module" ;;
-      *)
-        # There is more than one module that must be unloaded, unload all of
-        # them and then load the requested one:
-        sfm_cmd="module unload $sfm_loaded_conflicts && module load $sfm_module" ;;
-    esac
-
-    echo "$sfm_cmd"
-    eval "$sfm_cmd"
-  done
-}
-
-#
-# Initializes the environment.
-#
-init_env ()
-{
-  saved_set=$-
-  set +eu
-  . /sw/rhel6-x64/etc/profile.mistral
-  module use /sw/spack-rhel6/spack/modules/linux-rhel6-haswell
-  set -${saved_set}
-  switch_for_module automake libtool autoconf
-}
-
-#
-# Sets variables for tests with GCC 6.4.0.
-#
-init_gcc640 ()
-{
-  init_env
-  switch_for_module gcc/6.4.0 openmpi/2.0.2p1_hpcx-gcc64
-
-  CC=gcc
-  CXX=g++
-  FC=gfortran
-  MPICC=mpicc
-  MPIFC=mpif90
-  MPI_LAUNCH="$(which mpirun)"
-
-  GRIBAPI_ROOT='/sw/rhel6-x64/grib_api/grib_api-1.15.0-gcc48'
-  NETCDF_ROOT='/sw/rhel6-x64/netcdf/netcdf_c-4.4.0-parallel-openmpi2-gcc64'
-  PPM_ROOT='/work/mh0287/m300488/cdi-pio-sw/ppm-1.0.6-gcc64'
-  YAXT_ROOT='/work/mh0287/m300488/cdi-pio-sw/yaxt-0.9.0-gcc64'
-}
-
-#
-# Sets variables for tests with Intel 17.0.6.
-#
-init_intel1706 ()
-{
-  init_env
-  switch_for_module gcc/6.4.0 intel/17.0.6 openmpi/2.0.2p1_hpcx-intel14
-
-  CC=icc
-  CXX=icpc
-  FC=ifort
-  MPICC=mpicc
-  MPIFC=mpif90
-  MPI_LAUNCH="$(which mpirun)"
-
-  GRIBAPI_ROOT='/sw/rhel6-x64/grib_api/grib_api-1.15.0-gcc48'
-  NETCDF_ROOT='/sw/rhel6-x64/netcdf/netcdf_c-4.4.0-parallel-openmpi2-intel14'
-  PPM_ROOT='/work/mh0287/m300488/cdi-pio-sw/ppm-1.0.6-intel17'
-  YAXT_ROOT='/work/mh0287/m300488/cdi-pio-sw/yaxt-0.9.0-intel17'
-
-  # Here we fix a never-ending story with Libtool overlinkning, absence of
-  # '*.la' files when they could help, and '-Wl,--disable/enable-new-dtags':
-  PNETCDF_ROOT='/sw/rhel6-x64/netcdf/parallel_netcdf-1.6.1-openmpi2-intel14'
-  export LD_LIBRARY_PATH="${PNETCDF_ROOT}/lib:${LD_LIBRARY_PATH-}"
-}
-
-#
-# Sets variables for tests with NAG 6.2.6223.
-#
-init_nag626223 ()
-{
-  init_env
-  switch_for_module gcc/6.4.0 nag/6.2
-
-  # There is no environment module for MPICH:
-  MPICH_ROOT='/mnt/lustre01/work/k20200/sw/spack/opt/spack/linux-rhel6-x86_64/nag-6.2/mpich-3.2.1-zxw7jhgz7qk4kim5jtziybfzigtiauxj'
-  export PATH="${MPICH_ROOT}/bin:${PATH-}"
-
-  CC=gcc
-  CXX=g++
-  FC=nagfor
-  MPICC=mpicc
-  MPIFC=mpif90
-  MPI_LAUNCH="$(which mpirun)"
-
-  ECCODES_ROOT='/mnt/lustre01/work/k20200/sw/spack/opt/spack/linux-rhel6-x86_64/nag-6.2/eccodes-2.5.0-givay23bqhgzreuk5um2wtjsumebwbt4'
-  NETCDF_ROOT='/mnt/lustre01/work/k20200/sw/spack/opt/spack/linux-rhel6-x86_64/gcc-8.3.0-works/netcdf-4.7.0-eftv5u36ogb5awbb27hffiiv5rib4kqj'
-  PPM_ROOT='/work/mh0287/m300488/cdi-pio-sw/ppm-1.0.6-nag62'
-  YAXT_ROOT='/work/mh0287/m300488/cdi-pio-sw/yaxt-0.9.0-nag62'
-
-  # Here we fix a never-ending story with Libtool overlinkning, absence of
-  # '*.la' files when they could help, and '-Wl,--disable/enable-new-dtags':
-  export LD_LIBRARY_PATH="${ECCODES_ROOT}/lib:${LD_LIBRARY_PATH-}"
-}
-
-#
-# Sets variables for tests with PGI 19.9.0.
-#
-init_pgi1990 ()
-{
-  init_env
-  switch_for_module pgi/19.9-spack openmpi/2.0.2p2-pgi-19.9
-
-  CC=pgcc
-  CXX=pgc++
-  FC=pgfortran
-  MPICC=mpicc
-  MPIFC=mpif90
-  MPI_LAUNCH="$(which orterun)"
-
-  ECCODES_ROOT='/sw/spack-rhel6/eccodes-2.19.1-cqlkd7'
-  NETCDF_ROOT='/sw/spack-rhel6/netcdf-c-4.7.4-22ody2'
-  PPM_ROOT='/work/mh0287/m300488/cdi-pio-sw/ppm-1.0.6-pgi19'
-  YAXT_ROOT='/work/mh0287/m300488/cdi-pio-sw/yaxt-0.9.0-pgi19'
-
-  # Here we fix a never-ending story with Libtool overlinkning, absence of
-  # '*.la' files when they could help, and '-Wl,--disable/enable-new-dtags':
-  HDF5_ROOT='/sw/spack-rhel6/hdf5-1.10.7-xynrbi'
-  export LD_LIBRARY_PATH="${ECCODES_ROOT}/lib64:${NETCDF_ROOT}/lib:${HDF5_ROOT}/lib:${LD_LIBRARY_PATH-}"
-}
-
-#
-# Accepts a path to a file containing the testsuite summary (either the
-# 'test-suite.log' or the standard output of the 'make check' command) and
-# checks whether all tests were run and passed.
-#
-check_all_tests_passed ()
-{
-  awk '/^# TOTAL: /{ total=$3 };
-       /^# PASS: /{ pass=$3 };
-       END {
-         if ( total == "" || total != pass ) {
-           print "ERROR: the total number of tests is not equal to the number of passed tests";
-           exit 1;
-         }
-       }' $1 >&2
-}
-
-#
-# Checks whether the current working directory or any of its subdirectories
-# contain a file and fails with an error message if that is the case.
-#
-check_no_files_in_cwd ()
-{
-  cnfic_files=`find . -type f 2>/dev/null`
-  if test -n "$cnfic_files"; then
-    {
-      echo "ERROR: the current working directory contains undeleted files:"
-      echo "$cnfic_files"
-    } >&2
-    exit 1
-  fi
-}