From f85a968b9581a73709ec0fdc74db2075cc8fd466 Mon Sep 17 00:00:00 2001 From: Magnus Ulimoen Date: Mon, 29 Jul 2024 11:46:05 +0200 Subject: [PATCH 1/8] Upgrade to netcdf c v4.9.3-rc2 --- .gitmodules | 2 +- netcdf-src/build.rs | 40 ++++++++++++++++++---------------------- netcdf-src/source | 2 +- 3 files changed, 20 insertions(+), 24 deletions(-) diff --git a/.gitmodules b/.gitmodules index 3414937..cb3040b 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,3 @@ [submodule "netcdf-src/source"] path = netcdf-src/source - url = https://github.com/magnusuMET/netcdf-c + url = https://github.com/Unidata/netcdf-c diff --git a/netcdf-src/build.rs b/netcdf-src/build.rs index 27d49a4..9e40d99 100644 --- a/netcdf-src/build.rs +++ b/netcdf-src/build.rs @@ -30,9 +30,9 @@ fn main() { let mut hdf5_lib = std::env::var("DEP_HDF5_LIBRARY").unwrap(); let mut hdf5_hl_lib = std::env::var("DEP_HDF5_HL_LIBRARY").unwrap(); + let hdf5_root = format!("{hdf5_incdir}/../"); #[cfg(unix)] { - let hdf5_root = format!("{hdf5_incdir}/../"); let mut hdf5_libdir = format!("{hdf5_root}/lib/"); if !std::path::Path::new(&hdf5_libdir).exists() { hdf5_libdir = format!("{hdf5_root}/lib64/"); @@ -46,32 +46,28 @@ fn main() { let mut netcdf_config = cmake::Config::new("source"); netcdf_config .define("BUILD_SHARED_LIBS", "OFF") - .define("NC_FIND_SHARED_LIBS", "OFF") - .define("BUILD_UTILITIES", "OFF") - .define("ENABLE_EXAMPLES", "OFF") - .define("ENABLE_DAP_REMOTE_TESTS", "OFF") - .define("ENABLE_TESTS", "OFF") - .define("ENABLE_EXTREME_NUMBERS", "OFF") - .define("ENABLE_PARALLEL_TESTS", "OFF") - .define("ENABLE_FILTER_TESTING", "OFF") + .define("NETCDF_FIND_SHARED_LIBS", "OFF") + .define("NETCDF_BUILD_UTILITIES", "OFF") + .define("NETCDF_ENABLE_EXAMPLES", "OFF") + .define("NETCDF_ENABLE_DAP_REMOTE_TESTS", "OFF") + .define("NETCDF_ENABLE_TESTS", "OFF") + .define("NETCDF_ENABLE_EXTREME_NUMBERS", "OFF") + .define("NETCDF_ENABLE_PARALLEL_TESTS", "OFF") + .define("NETCDF_ENABLE_FILTER_TESTING", "OFF") .define("ENABLE_BASH_SCRIPT_TESTING", "OFF") - .define("ENABLE_PLUGINS", "OFF") + .define("NETCDF_NETCDF_ENABLE_PLUGINS", "OFF") .define("PLUGIN_INSTALL_DIR", "OFF") // - .define("HDF5_VERSION", &hdf5_version) - .define("HDF5_C_LIBRARY", &hdf5_lib) - .define("HDF5_HL_LIBRARY", &hdf5_hl_lib) - .define("HDF5_INCLUDE_DIR", hdf5_incdir) + .define("HDF5_ROOT", &hdf5_root) // - .define("ENABLE_LIBXML2", "OFF") // Use bundled xml2 + .define("NETCDF_ENABLE_LIBXML2", "OFF") // Use bundled xml2 // - .define("ENABLE_PARALLEL4", "OFF") // TODO: Enable mpi support + .define("NETCDF_ENABLE_PARALLEL4", "OFF") // TODO: Enable mpi support // - .define("ENABLE_NCZARR", "OFF") // TODO: requires a bunch of deps + .define("NETCDF_ENABLE_NCZARR", "OFF") // TODO: requires a bunch of deps // - .define("ENABLE_DAP", "OFF") // TODO: feature flag, requires curl - .define("ENABLE_BYTERANGE", "OFF") // TODO: feature flag, requires curl - .define("ENABLE_DAP_REMOTE_TESTS", "OFF") + .define("NETCDF_ENABLE_DAP", "OFF") // TODO: feature flag, requires curl + .define("NETCDF_ENABLE_BYTERANGE", "OFF") // TODO: feature flag, requires curl // .profile("RelWithDebInfo"); // TODO: detect opt-level @@ -79,8 +75,8 @@ fn main() { netcdf_config.define("ZLIB_ROOT", format!("{zlib_include_dir}/..")); if feature!("DAP").is_ok() { - netcdf_config.define("ENABLE_DAP", "ON"); - netcdf_config.define("ENABLE_BYTERANGE", "ON"); + netcdf_config.define("NETCDF_ENABLE_DAP", "ON"); + netcdf_config.define("NETCDF_ENABLE_BYTERANGE", "ON"); } if feature!("MPI").is_ok() { diff --git a/netcdf-src/source b/netcdf-src/source index 9a488e4..451cba5 160000 --- a/netcdf-src/source +++ b/netcdf-src/source @@ -1 +1 @@ -Subproject commit 9a488e46e84f9511714bc19f6435f94303808962 +Subproject commit 451cba565a2db71f4abad215bbf3adbbb88f3b52 From d33cc5219d982eeac5def4275451640e4dad5b8f Mon Sep 17 00:00:00 2001 From: Magnus Ulimoen Date: Mon, 29 Jul 2024 11:47:44 +0200 Subject: [PATCH 2/8] Remove old HDF5 options (unused) --- netcdf-src/build.rs | 33 --------------------------------- 1 file changed, 33 deletions(-) diff --git a/netcdf-src/build.rs b/netcdf-src/build.rs index 9e40d99..e1ee275 100644 --- a/netcdf-src/build.rs +++ b/netcdf-src/build.rs @@ -4,44 +4,11 @@ macro_rules! feature { }; } -fn get_hdf5_version() -> String { - let (major, minor, patch) = std::env::vars() - .filter_map(|(key, value)| { - key.strip_prefix("DEP_HDF5_VERSION_").map(|key| { - assert_eq!(value, "1"); - let mut version = key.split('_'); - let major: usize = version.next().unwrap().parse().unwrap(); - let minor: usize = version.next().unwrap().parse().unwrap(); - let patch: usize = version.next().unwrap().parse().unwrap(); - - (major, minor, patch) - }) - }) - .max() - .expect("Crate hdf5 should have emitted a hdf5 version"); - - format!("{major}.{minor}.{patch}") -} - fn main() { println!("cargo::rerun-if-changed=build.rs"); let hdf5_incdir = std::env::var("DEP_HDF5_INCLUDE").unwrap(); - let mut hdf5_lib = std::env::var("DEP_HDF5_LIBRARY").unwrap(); - let mut hdf5_hl_lib = std::env::var("DEP_HDF5_HL_LIBRARY").unwrap(); - let hdf5_root = format!("{hdf5_incdir}/../"); - #[cfg(unix)] - { - let mut hdf5_libdir = format!("{hdf5_root}/lib/"); - if !std::path::Path::new(&hdf5_libdir).exists() { - hdf5_libdir = format!("{hdf5_root}/lib64/"); - } - hdf5_lib = format!("{hdf5_libdir}/{hdf5_lib}.a"); - hdf5_hl_lib = format!("{hdf5_libdir}/{hdf5_hl_lib}.a"); - } - - let hdf5_version = get_hdf5_version(); let mut netcdf_config = cmake::Config::new("source"); netcdf_config From 9adba602d8d8535d190be41ea26ef93a02804f59 Mon Sep 17 00:00:00 2001 From: Magnus Ulimoen Date: Mon, 29 Jul 2024 12:42:06 +0200 Subject: [PATCH 3/8] Ignore netcdf-src for rustfmt/clippy --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 54ac617..1ff9203 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -50,9 +50,9 @@ jobs: - name: Check formatting run: cargo fmt -- --check - name: Documentation - run: cargo doc --workspace --features netcdf/derive + run: cargo doc --workspace --features netcdf/derive --exclude netcdf-src - name: Clippy - run: cargo clippy --features netcdf/derive --workspace -- -D warnings + run: cargo clippy --features netcdf/derive --workspace --exclude netcdf-src -- -D warnings test_apt: name: test apt From f0462061b22b9eae7724c5af1ec3ce461f5d5af8 Mon Sep 17 00:00:00 2001 From: Magnus Ulimoen Date: Mon, 29 Jul 2024 12:50:26 +0200 Subject: [PATCH 4/8] Force static linking of hdf5 --- netcdf-src/Cargo.toml | 2 +- netcdf-src/build.rs | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/netcdf-src/Cargo.toml b/netcdf-src/Cargo.toml index 7961e31..417e5a2 100644 --- a/netcdf-src/Cargo.toml +++ b/netcdf-src/Cargo.toml @@ -33,7 +33,7 @@ dap = ["dep:link-cplusplus"] mpi = [] [dependencies] -hdf5-sys = { workspace = true, features = ["hl", "deprecated", "zlib"] } +hdf5-sys = { workspace = true, features = ["hl", "deprecated", "zlib", "static"] } libz-sys = { version = "1.0.25" } link-cplusplus = { version = "1.0.9", optional = true } diff --git a/netcdf-src/build.rs b/netcdf-src/build.rs index e1ee275..9d8d022 100644 --- a/netcdf-src/build.rs +++ b/netcdf-src/build.rs @@ -26,6 +26,7 @@ fn main() { .define("PLUGIN_INSTALL_DIR", "OFF") // .define("HDF5_ROOT", &hdf5_root) + .define("HDF5_USE_STATIC_LIBRARIES", "ON") // .define("NETCDF_ENABLE_LIBXML2", "OFF") // Use bundled xml2 // From f65050e993614a8c6362abd7cb785a73300e8e7b Mon Sep 17 00:00:00 2001 From: Magnus Ulimoen Date: Mon, 29 Jul 2024 13:11:07 +0200 Subject: [PATCH 5/8] Add feature 4.9.3 --- netcdf-sys/build.rs | 1 + netcdf/build.rs | 1 + 2 files changed, 2 insertions(+) diff --git a/netcdf-sys/build.rs b/netcdf-sys/build.rs index b8ef69d..5906de8 100644 --- a/netcdf-sys/build.rs +++ b/netcdf-sys/build.rs @@ -294,6 +294,7 @@ fn main() { Version::new(4, 9, 0), Version::new(4, 9, 1), Version::new(4, 9, 2), + Version::new(4, 9, 3), // Keep this list up to date with netcdf/build.rs ]; diff --git a/netcdf/build.rs b/netcdf/build.rs index 8d62f36..7943af6 100644 --- a/netcdf/build.rs +++ b/netcdf/build.rs @@ -20,6 +20,7 @@ fn main() { Version::new(4, 9, 0), Version::new(4, 9, 1), Version::new(4, 9, 2), + Version::new(4, 9, 3), // Keep this list up to date with netcdf-sys/build.rs ]; From d4113b82cb41e395e29dc04cfeb56aa0d92ec6f5 Mon Sep 17 00:00:00 2001 From: Magnus Ulimoen Date: Fri, 22 Nov 2024 15:09:32 +0100 Subject: [PATCH 6/8] Disable filter testing --- netcdf-src/build.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/netcdf-src/build.rs b/netcdf-src/build.rs index 9d8d022..cc17907 100644 --- a/netcdf-src/build.rs +++ b/netcdf-src/build.rs @@ -19,6 +19,7 @@ fn main() { .define("NETCDF_ENABLE_DAP_REMOTE_TESTS", "OFF") .define("NETCDF_ENABLE_TESTS", "OFF") .define("NETCDF_ENABLE_EXTREME_NUMBERS", "OFF") + .define("NETCDF_ENABLE_FILTER_TESTING", "OFF") .define("NETCDF_ENABLE_PARALLEL_TESTS", "OFF") .define("NETCDF_ENABLE_FILTER_TESTING", "OFF") .define("ENABLE_BASH_SCRIPT_TESTING", "OFF") From 2c15740f98d57f11e5c4980d667cb0c01723c133 Mon Sep 17 00:00:00 2001 From: Magnus Ulimoen Date: Mon, 9 Dec 2024 07:32:07 +0100 Subject: [PATCH 7/8] Use rc2 --- netcdf-src/source | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/netcdf-src/source b/netcdf-src/source index 451cba5..245e79c 160000 --- a/netcdf-src/source +++ b/netcdf-src/source @@ -1 +1 @@ -Subproject commit 451cba565a2db71f4abad215bbf3adbbb88f3b52 +Subproject commit 245e79c2d189388de668b4480f6ff91b3b29ad3d From cc765bfc35e9c979b57d147dc4b5c0109f796e83 Mon Sep 17 00:00:00 2001 From: Magnus Ulimoen Date: Tue, 18 Feb 2025 09:26:51 +0100 Subject: [PATCH 8/8] Use official release v4.9.3 --- netcdf-src/README.md | 2 +- netcdf-src/source | 2 +- netcdf-src/src/lib.rs | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/netcdf-src/README.md b/netcdf-src/README.md index f9e855b..3b98ef7 100644 --- a/netcdf-src/README.md +++ b/netcdf-src/README.md @@ -2,4 +2,4 @@ Dummy crate for building `netCDF` from source -The current pinned version is 4.9.2 +The current pinned version is 4.9.3 diff --git a/netcdf-src/source b/netcdf-src/source index 245e79c..3a6b1de 160000 --- a/netcdf-src/source +++ b/netcdf-src/source @@ -1 +1 @@ -Subproject commit 245e79c2d189388de668b4480f6ff91b3b29ad3d +Subproject commit 3a6b1debf1557f07b606ce3653e44f0d711203be diff --git a/netcdf-src/src/lib.rs b/netcdf-src/src/lib.rs index 4eb44da..ce2c3b2 100644 --- a/netcdf-src/src/lib.rs +++ b/netcdf-src/src/lib.rs @@ -1,6 +1,6 @@ //! Dummy crate for building `netCDF` from source //! -//! The current pinned version is 4.9.2 +//! The current pinned version is 4.9.3 #[cfg(feature = "dap")] extern crate link_cplusplus;