name = 'netCDF'
version = '4.9.3'

homepage = 'https://www.unidata.ucar.edu/software/netcdf/'
description = """NetCDF (network Common Data Form) is a set of software libraries
 and machine-independent data formats that support the creation, access, and sharing of array-oriented
 scientific data."""

toolchain = {'name': 'iimpi', 'version': '2025b'}
toolchainopts = {'pic': True, 'usempi': True, 'optarch': 'mavx2'}

source_urls = ['https://github.com/Unidata/%(namelower)s-c/archive/']
sources = ['v%(version)s.tar.gz']
patches = ['%(name)s-%(version_major_minor)s.0_skip-nasa-test.patch']
checksums = [
    {'v4.9.3.tar.gz': '990f46d49525d6ab5dc4249f8684c6deeaf54de6fec63a187e9fb382cc0ffdff'},
    {'netCDF-4.9.0_skip-nasa-test.patch': '19d99e03c048b037dc01f03f5b8ddc910ebaceb076d0f050540d348f26dfcd2a'},
]

builddependencies = [
    ('Autotools', '20250527'),
    ('CMake', '4.0.3'),
    ('Doxygen', '1.14.0'),
]
dependencies = [
    ('HDF5', '1.14.6'),
    ('cURL', '8.14.1'),
    ('Szip', '2.1.1'),
    ('bzip2', '1.0.8'),
    ('libxml2', '2.14.3'),
]

# disable Szip, zlib parallel I/O tests, since these can hang on some systems, e.g. generoso
# see: https://github.com/easybuilders/easybuild-easyconfigs/pull/16834
# and  https://github.com/easybuilders/easybuild-easyconfigs/pull/17107#issuecomment-1432947172
preconfigopts = (
    "sed -i"
    " -e 's|@MPIEXEC@ -n 4 ./tst_parallel5|echo \"skipped by EasyBuild\"|g'"
    " -e 's|@MPIEXEC@ -n 4 ./tst_parallel_zlib|echo \"skipped by EasyBuild\"|g'"
    " -e 's|@MPIEXEC@ -n 4 ./tst_parallel_compress|echo \"skipped by EasyBuild\"|g'"
    # disable check for H5 plugins
    " -e '10,23d'"
    " %(builddir)s/%(namelower)s-c-%(version)s/nc_test4/run_par_test.sh.in &&"
)

configopts = [
    "-DENABLE_DAP=OFF -DENABLE_DAP4=OFF -DENABLE_BYTERANGE=OFF -DENABLE_DAP_REMOTE_TESTS=OFF -DBUILD_SHARED_LIBS=OFF",
    "-DENABLE_DAP=OFF -DENABLE_DAP4=OFF -DENABLE_BYTERANGE=OFF -DENABLE_DAP_REMOTE_TESTS=OFF -DBUILD_SHARED_LIBS=ON",
]

# some tests try to start 16 MPI ranks, so we need to allow oversubscription to avoid failing tests
pretestopts = "PRTE_MCA_rmaps_default_mapping_policy=:oversubscribe "
runtest = 'test'

moduleclass = 'data'
