From 99ba37ba58b2d0bbd6dc3b8bdaabf4d40c449d97 Mon Sep 17 00:00:00 2001 From: Alexander Barth Date: Thu, 8 Aug 2024 10:10:55 +0200 Subject: [PATCH 01/22] Take into account that attach_dimscales can fail when dimensions and variables are named inconsistently (Unidata/netcdf-c#2962) --- libhdf5/nc4hdf.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/libhdf5/nc4hdf.c b/libhdf5/nc4hdf.c index 105d5880fb..bb2de5bf64 100644 --- a/libhdf5/nc4hdf.c +++ b/libhdf5/nc4hdf.c @@ -1449,7 +1449,9 @@ attach_dimscales(NC_GRP_INFO_T *grp) dsid = ((NC_HDF5_VAR_INFO_T *)(var->dim[d]->coord_var->format_var_info))->hdf_datasetid; else dsid = ((NC_HDF5_DIM_INFO_T *)var->dim[d]->format_dim_info)->hdf_dimscaleid; - assert(dsid > 0); + + if (dsid <= 0) + return NC_EDIMSCALE; /* Attach the scale. */ if (H5DSattach_scale(hdf5_var->hdf_datasetid, dsid, d) < 0) From e872dfe03b49db9a1d979b08c2699f4b45957e86 Mon Sep 17 00:00:00 2001 From: Ed Date: Wed, 14 Aug 2024 07:19:23 -0600 Subject: [PATCH 02/22] adding and building tst_zstd.c --- nc_test4/CMakeLists.txt | 5 +++ nc_test4/Makefile.am | 14 +++++--- nc_test4/tst_zstd.c | 78 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 93 insertions(+), 4 deletions(-) create mode 100644 nc_test4/tst_zstd.c diff --git a/nc_test4/CMakeLists.txt b/nc_test4/CMakeLists.txt index 33a105f5b2..4df3684b63 100644 --- a/nc_test4/CMakeLists.txt +++ b/nc_test4/CMakeLists.txt @@ -102,6 +102,11 @@ IF(HAVE_H5Z_SZIP) ENDIF() ENDIF() +IF(HAVE_ZSTD) + BUILD_BIN_TEST(tst_zstd) +# add_sh_test(nc_test4 run_zstd_test) +ENDIF() + # Copy some test files from current source dir to out-of-tree build dir. FILE(GLOB COPY_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.nc ${CMAKE_CURRENT_SOURCE_DIR}/ref_bzip2.c ${CMAKE_CURRENT_SOURCE_DIR}/*.sh ${CMAKE_CURRENT_SOURCE_DIR}/*.h5 ${CMAKE_CURRENT_SOURCE_DIR}/*.cdl) diff --git a/nc_test4/Makefile.am b/nc_test4/Makefile.am index 6d1c0e2e44..584e739d55 100644 --- a/nc_test4/Makefile.am +++ b/nc_test4/Makefile.am @@ -11,10 +11,10 @@ include $(top_srcdir)/lib_flags.am # Un comment to use a more verbose test driver -#SH_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver-verbose -#sh_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver-verbose -#LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver-verbose -#TESTS_ENVIRONMENT = export SETX=1; +SH_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver-verbose +sh_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver-verbose +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver-verbose +TESTS_ENVIRONMENT = export SETX=1; TEST_EXTENSIONS = .sh @@ -113,6 +113,12 @@ endif # NETCDF_ENABLE_PLUGINS endif # USE_HDF5 endif # NETCDF_BUILD_UTILITIES +# Zstandard tests. +if HAVE_ZSTD +check_PROGRAMS += tst_zstd +#TESTS += run_zstd_test.sh +endif # HAVE_ZSTD + # This are extra tests that will only be run if netcdf-4 is configured # with --enable-parallel-tests. if TEST_PARALLEL4 diff --git a/nc_test4/tst_zstd.c b/nc_test4/tst_zstd.c new file mode 100644 index 0000000000..7ae201fbf6 --- /dev/null +++ b/nc_test4/tst_zstd.c @@ -0,0 +1,78 @@ +/* This is part of the netCDF package. + Copyright 2018 University Corporation for Atmospheric Research/Unidata + See COPYRIGHT file for conditions of use. + + Test netcdf-4 variables. + Ed Hartnett, 8/7/24 +*/ + +#include "nc_tests.h" +#include "err_macros.h" +#include "netcdf.h" + +#define FILE_NAME "tst_zstd.nc" +#define VAR_FLOAT_NAME "GALE_data" +#define VAR_DOUBLE_NAME "ERICA_data" +#define NDIM2 2 +#define DIM1_NAME "x" +#define DIM1_LEN 2 +#define DIM2_NAME "y" +#define DIM2_LEN 3 + +int +main(int argc, char **argv) +{ + int ncid, dimids[NDIM2]; + int float_varid, double_varid; + float float_in[DIM1_LEN][DIM2_LEN], float_out[DIM1_LEN][DIM2_LEN] = {{-.1f, 9999.99f, 100.001f},{-.1f, 9999.99f, 100.001f}}; + double double_in[DIM1_LEN][DIM2_LEN], double_out[DIM1_LEN][DIM2_LEN] = {{0.02, .1128, 1090.1},{0.02, .1128, 1090.1}}; + int i, j, ret; + + + printf("\n*** Testing netcdf-4 zstd compression.\n"); + + printf("*** testing netcdf-4 zstd with float..."); + { + int nvars_in, varids_in[2]; + + /* Create a netcdf file with one dim and two vars. */ + if (nc_create(FILE_NAME, NC_NETCDF4, &ncid)) ERR; + if (nc_def_dim(ncid, DIM1_NAME, DIM1_LEN, &dimids[0])) ERR; + if (nc_def_dim(ncid, DIM2_NAME, DIM2_LEN, &dimids[1])) ERR; + if (nc_def_var(ncid, VAR_FLOAT_NAME, NC_FLOAT, 2, dimids, &float_varid)) ERR; + if (nc_def_var(ncid, VAR_DOUBLE_NAME, NC_DOUBLE, 2, dimids, &double_varid)) ERR; + if ((ret = nc_def_var_zstandard(ncid, float_varid, 4))) + { + printf("error: %s\n", nc_strerror(ret)); + ERR; + } + if (nc_def_var_zstandard(ncid, double_varid, 4)) ERR; + if (nc_put_var_float(ncid, float_varid, (float *)float_out)) ERR; + if (nc_put_var_double(ncid, double_varid, (double *)double_out)) ERR; + if (nc_close(ncid)) ERR; + + /* Open the file and make sure nc_inq_varids yields correct + * result. */ + if (nc_open(FILE_NAME, NC_NOWRITE, &ncid)) ERR; + if (nc_inq_varids(ncid, &nvars_in, varids_in)) ERR; + if (nvars_in != 2 || varids_in[0] != 0 || varids_in[1] != 1) ERR; + if (nc_get_var_float(ncid, float_varid, (float *)float_in)) ERR; + if (nc_get_var_double(ncid, double_varid, (double *)double_in)) ERR; + for (i = 0; i < DIM1_LEN; i++) + { + for (j = 0; j < DIM2_LEN; j++) + { + if (float_in[i][j] != float_out[i][j]) ERR; + if (double_in[i][j] != double_out[i][j]) ERR; + } + } + + + if (nc_close(ncid)) ERR; + } + + SUMMARIZE_ERR; + SUMMARIZE_ERR; + + FINAL_RESULTS; +} From eb8caa0fb23d8e3b7a9715482099dccda77a847d Mon Sep 17 00:00:00 2001 From: Ed Date: Wed, 14 Aug 2024 08:54:11 -0600 Subject: [PATCH 03/22] adding run_zstd_test --- nc_test4/Makefile.am | 2 +- nc_test4/run_zstd_test.sh | 31 +++++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) create mode 100755 nc_test4/run_zstd_test.sh diff --git a/nc_test4/Makefile.am b/nc_test4/Makefile.am index 584e739d55..4776403801 100644 --- a/nc_test4/Makefile.am +++ b/nc_test4/Makefile.am @@ -116,7 +116,7 @@ endif # NETCDF_BUILD_UTILITIES # Zstandard tests. if HAVE_ZSTD check_PROGRAMS += tst_zstd -#TESTS += run_zstd_test.sh +TESTS += run_zstd_test.sh endif # HAVE_ZSTD # This are extra tests that will only be run if netcdf-4 is configured diff --git a/nc_test4/run_zstd_test.sh b/nc_test4/run_zstd_test.sh new file mode 100755 index 0000000000..bcfd60f184 --- /dev/null +++ b/nc_test4/run_zstd_test.sh @@ -0,0 +1,31 @@ +#!/bin/sh + +# This .in file is processed at build time into a shell that runs some +# zstd for netCDF. + +# Ed Hartnett, 8/10/24 + +set -e + +if test "x$srcdir" = x ; then srcdir=`pwd`; fi +. ../test_common.sh + +# Load the findplugins function +. ${builddir}/findplugin.sh +echo "findplugin.sh loaded" +echo "${HDF5_PLUGIN_DIR}" + +findplugin h5zstd +echo "HDF5_PLUGIN_DIR=$HDF5_PLUGIN_DIR" +./tst_zstd + +echo +echo "Testing Zstandard compression..." + +export HDF5_PLUGIN_PATH="${HDF5_PLUGIN_DIR}" +echo "set HDF5_PLUGIN_PATH: ${HDF5_PLUGIN_PATH}" + +echo "SUCCESS!" + + + From 4a2b8ff466e3cae94669e92ce1e439f491d308f9 Mon Sep 17 00:00:00 2001 From: Ed Date: Wed, 14 Aug 2024 09:15:29 -0600 Subject: [PATCH 04/22] adding run_zstd_test --- nc_test4/run_zstd_test.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/nc_test4/run_zstd_test.sh b/nc_test4/run_zstd_test.sh index bcfd60f184..2b66bcc582 100755 --- a/nc_test4/run_zstd_test.sh +++ b/nc_test4/run_zstd_test.sh @@ -17,7 +17,6 @@ echo "${HDF5_PLUGIN_DIR}" findplugin h5zstd echo "HDF5_PLUGIN_DIR=$HDF5_PLUGIN_DIR" -./tst_zstd echo echo "Testing Zstandard compression..." @@ -25,6 +24,8 @@ echo "Testing Zstandard compression..." export HDF5_PLUGIN_PATH="${HDF5_PLUGIN_DIR}" echo "set HDF5_PLUGIN_PATH: ${HDF5_PLUGIN_PATH}" +./tst_zstd + echo "SUCCESS!" From 218bf47a0839f9025d4013409f7141d1463888e7 Mon Sep 17 00:00:00 2001 From: Ed Date: Wed, 14 Aug 2024 10:24:53 -0600 Subject: [PATCH 05/22] adding run_zstd_test --- configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index 041b70a4bd..9f5238d13b 100644 --- a/configure.ac +++ b/configure.ac @@ -2102,7 +2102,7 @@ AC_ARG_WITH([plugin-dir], [AS_HELP_STRING([--with-plugin-dir= Date: Wed, 14 Aug 2024 12:35:56 -0600 Subject: [PATCH 06/22] adding run_zstd_test --- nc_test4/Makefile.am | 2 ++ 1 file changed, 2 insertions(+) diff --git a/nc_test4/Makefile.am b/nc_test4/Makefile.am index 4776403801..52dfbd2065 100644 --- a/nc_test4/Makefile.am +++ b/nc_test4/Makefile.am @@ -114,10 +114,12 @@ endif # USE_HDF5 endif # NETCDF_BUILD_UTILITIES # Zstandard tests. +if NETCDF_ENABLE_PLUGINS if HAVE_ZSTD check_PROGRAMS += tst_zstd TESTS += run_zstd_test.sh endif # HAVE_ZSTD +endif # NETCDF_ENABLE_PLUGINS # This are extra tests that will only be run if netcdf-4 is configured # with --enable-parallel-tests. From ba9e14b5a7730fbe2f287dad03cc382cca4dfe94 Mon Sep 17 00:00:00 2001 From: Ed Date: Wed, 14 Aug 2024 12:53:00 -0600 Subject: [PATCH 07/22] debugging run_zstd_test --- nc_test4/Makefile.am | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/nc_test4/Makefile.am b/nc_test4/Makefile.am index 52dfbd2065..9503b960da 100644 --- a/nc_test4/Makefile.am +++ b/nc_test4/Makefile.am @@ -11,10 +11,10 @@ include $(top_srcdir)/lib_flags.am # Un comment to use a more verbose test driver -SH_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver-verbose -sh_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver-verbose -LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver-verbose -TESTS_ENVIRONMENT = export SETX=1; +# SH_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver-verbose +# sh_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver-verbose +# LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver-verbose +# TESTS_ENVIRONMENT = export SETX=1; TEST_EXTENSIONS = .sh From a8dd82c74a4640776eed85bfc1b29312a3a7a7af Mon Sep 17 00:00:00 2001 From: Ed Date: Wed, 14 Aug 2024 13:11:49 -0600 Subject: [PATCH 08/22] debugging run_zstd_test --- nc_test4/Makefile.am | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/nc_test4/Makefile.am b/nc_test4/Makefile.am index 9503b960da..be76c6d881 100644 --- a/nc_test4/Makefile.am +++ b/nc_test4/Makefile.am @@ -137,16 +137,15 @@ ref_tst_interops4.nc CMakeLists.txt run_grp_rename.sh \ run_empty_vlen_test.sh ref_hdf5_compat1.nc ref_hdf5_compat2.nc \ ref_hdf5_compat3.nc tst_misc.sh tdset.h5 tst_szip.sh ref_szip.h5 \ ref_szip.cdl tst_filter.sh bzip2.cdl noop.cdl ref_filtered.cdl \ -ref_unfiltered.cdl ref_bzip2.c ref_unfilteredvv.cdl \ -ref_filteredvv.cdl ref_multi.cdl \ -ref_ncgenF.cdl ref_nccopyF.cdl \ -ref_filter_repeat.txt ref_fillonly.cdl test_fillonly.sh \ -ref_filter_order_create.txt ref_filter_order_read.txt \ -ref_any.cdl tst_specific_filters.sh tst_unknown.sh \ -tst_virtual_datasets.c noop1.cdl unknown.cdl \ -tst_broken_files.c ref_bloscx.cdl tst_bloscfail.sh \ -tst_fixedstring.sh ref_fixedstring.h5 ref_fixedstring.cdl \ -tst_filterinstall.sh tst_filter_vlen.sh tst_filter_misc.sh +ref_unfiltered.cdl ref_bzip2.c ref_unfilteredvv.cdl \ +ref_filteredvv.cdl ref_multi.cdl ref_ncgenF.cdl ref_nccopyF.cdl \ +ref_filter_repeat.txt ref_fillonly.cdl test_fillonly.sh \ +ref_filter_order_create.txt ref_filter_order_read.txt ref_any.cdl \ +tst_specific_filters.sh tst_unknown.sh tst_virtual_datasets.c \ +noop1.cdl unknown.cdl tst_broken_files.c ref_bloscx.cdl \ +tst_bloscfail.sh tst_fixedstring.sh ref_fixedstring.h5 \ +ref_fixedstring.cdl tst_filterinstall.sh tst_filter_vlen.sh \ +tst_filter_misc.sh run_zstd_test.sh CLEANFILES = tst_mpi_parallel.bin cdm_sea_soundings.nc bm_chunking.nc \ tst_floats_1D.cdl floats_1D_3.nc floats_1D.cdl tst_*.nc tmp_*.txt \ From bded163c380e8d2223ba9be72e23c8d55f8ea2e5 Mon Sep 17 00:00:00 2001 From: Ed Date: Wed, 14 Aug 2024 13:29:52 -0600 Subject: [PATCH 09/22] debugging ncdump build problem --- ncdump/CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/ncdump/CMakeLists.txt b/ncdump/CMakeLists.txt index 74f3fbf653..663c1f64c6 100644 --- a/ncdump/CMakeLists.txt +++ b/ncdump/CMakeLists.txt @@ -251,6 +251,7 @@ endif() set_tests_properties(ncdump_tst_nccopy3 PROPERTIES DEPENDS "ncdump_tst_calendars;ncdump_run_utf8_tests;ncdump_tst_output;ncdump_tst_64bit;ncdump_run_tests;ncdump_tst_lengths") + set_tests_properties(ncdump_tst_nccopy3 ncdump_tst_output PROPERTIES RUN_SERIAL TRUE) endif() From c93d6cc7cd6f8fa7d523a1e30da704193ad16a1c Mon Sep 17 00:00:00 2001 From: Ed Date: Wed, 14 Aug 2024 14:07:22 -0600 Subject: [PATCH 10/22] adding run_zstd_test.sh to cmake build --- nc_test4/CMakeLists.txt | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/nc_test4/CMakeLists.txt b/nc_test4/CMakeLists.txt index 4df3684b63..8463992aa7 100644 --- a/nc_test4/CMakeLists.txt +++ b/nc_test4/CMakeLists.txt @@ -102,12 +102,13 @@ IF(HAVE_H5Z_SZIP) ENDIF() ENDIF() -IF(HAVE_ZSTD) - BUILD_BIN_TEST(tst_zstd) -# add_sh_test(nc_test4 run_zstd_test) +IF(USE_HDF5 AND NETCDF_ENABLE_FILTER_TESTING) + IF(HAVE_ZSTD) + BUILD_BIN_TEST(tst_zstd) + add_sh_test(nc_test4 run_zstd_test) + ENDIF() ENDIF() - # Copy some test files from current source dir to out-of-tree build dir. FILE(GLOB COPY_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.nc ${CMAKE_CURRENT_SOURCE_DIR}/ref_bzip2.c ${CMAKE_CURRENT_SOURCE_DIR}/*.sh ${CMAKE_CURRENT_SOURCE_DIR}/*.h5 ${CMAKE_CURRENT_SOURCE_DIR}/*.cdl) FILE(COPY ${COPY_FILES} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/) From 78b762d6d3554688272fdfad96a1b9a5d2cd078e Mon Sep 17 00:00:00 2001 From: Ed Date: Wed, 14 Aug 2024 14:24:06 -0600 Subject: [PATCH 11/22] adding run_zstd_test.sh to cmake build --- CMakeLists.txt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3a644ef583..90571d7ab1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -423,7 +423,7 @@ if(NC_EXTRA_DEPS) foreach(_DEP ${DEPS_LIST}) string(REGEX REPLACE "^-l" "" _LIB ${_DEP}) FIND_LIBRARY("${_LIB}_DEP" NAMES "${_LIB}" "lib${_LIB}") - message(${${_LIB}_DEP}) + message(STATUS ${${_LIB}_DEP}) if("${${_LIB}_DEP}" STREQUAL "${_LIB}_DEP-NOTFOUND") message(FATAL_ERROR "Error finding ${_LIB}.") else() @@ -431,7 +431,7 @@ if(NC_EXTRA_DEPS) endif() set(EXTRA_DEPS ${EXTRA_DEPS} "${${_LIB}_DEP}") endforeach() - message("Extra deps: ${EXTRA_DEPS}") + message(STATUS "Extra deps: ${EXTRA_DEPS}") list(REMOVE_DUPLICATES EXTRA_DEPS) set(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} ${EXTRA_DEPS}) endif() @@ -663,7 +663,7 @@ if(ENABLE_PLUGIN_INSTALL) set(PLUGIN_INSTALL_DIR "/usr/local/hdf5/lib/plugin") endif() endif() - message("Defaulting to -DPLUGIN_INSTALL_DIR=${PLUGIN_INSTALL_DIR}") + message(STATUS "Defaulting to -DPLUGIN_INSTALL_DIR=${PLUGIN_INSTALL_DIR}") endif() endif() @@ -678,7 +678,7 @@ if(ENABLE_PLUGIN_INSTALL) # Get last element list(GET PATH_LIST -1 PLUGIN_INSTALL_DIR) set(PLUGIN_INSTALL_DIR_SETTING "${PLUGIN_INSTALL_DIR}") - message("Final value of-DPLUGIN_INSTALL_DIR=${PLUGIN_INSTALL_DIR}") + message(STATUS "Final value of-DPLUGIN_INSTALL_DIR=${PLUGIN_INSTALL_DIR}") else() # No option specified unset(PLUGIN_INSTALL_DIR) unset(PLUGIN_INSTALL_DIR CACHE) From cb4e705c3c6413379df6a377d0b65efd2b248d38 Mon Sep 17 00:00:00 2001 From: Ed Date: Wed, 14 Aug 2024 14:31:18 -0600 Subject: [PATCH 12/22] debugging cmake build --- CMakeLists.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 90571d7ab1..9ee579dc41 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -685,6 +685,8 @@ else() # No option specified set(PLUGIN_INSTALL_DIR_SETTING "N.A.") endif() +message(STATUS "Final value of-DPLUGIN_INSTALL_DIR=${PLUGIN_INSTALL_DIR}") + # Try to enable NCZarr zip support option(NETCDF_ENABLE_NCZARR_ZIP "Enable NCZarr ZIP support." ${NETCDF_ENABLE_NCZARR}) From 8de29b980d50f6916efa475c38b699e0b9fe2e45 Mon Sep 17 00:00:00 2001 From: Ed Date: Wed, 14 Aug 2024 14:37:39 -0600 Subject: [PATCH 13/22] debugging cmake build --- CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 9ee579dc41..a96c68825b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -624,7 +624,7 @@ option(NETCDF_ENABLE_FILTER_BLOSC "Enable use of blosc compression library if it option(NETCDF_ENABLE_FILTER_ZSTD "Enable use of Zstd compression library if it is available." ON) # If user wants, then install selected plugins (default on) -set(PLUGIN_INSTALL_DIR "NO" CACHE STRING "Whether and where we should install plugins; defaults to yes") +set(PLUGIN_INSTALL_DIR "YES" CACHE STRING "Whether and where we should install plugins; defaults to yes") # This is ugly, but seems necessary because of CMake's boolean structure set(boolval FALSE) @@ -685,7 +685,7 @@ else() # No option specified set(PLUGIN_INSTALL_DIR_SETTING "N.A.") endif() -message(STATUS "Final value of-DPLUGIN_INSTALL_DIR=${PLUGIN_INSTALL_DIR}") +message(STATUS "ENABLE_PLUGIN_INSTALL=${ENABLE_PLUGIN_INSTALL} PLUGIN_INSTALL_DIR=${PLUGIN_INSTALL_DIR}") # Try to enable NCZarr zip support option(NETCDF_ENABLE_NCZARR_ZIP "Enable NCZarr ZIP support." ${NETCDF_ENABLE_NCZARR}) From 7f987b78428a421c63062e0a0a3527b52447ff3d Mon Sep 17 00:00:00 2001 From: Ed Date: Wed, 14 Aug 2024 14:52:34 -0600 Subject: [PATCH 14/22] debugging cmake build --- nc_test4/run_zstd_test.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/nc_test4/run_zstd_test.sh b/nc_test4/run_zstd_test.sh index 2b66bcc582..b6834e2064 100755 --- a/nc_test4/run_zstd_test.sh +++ b/nc_test4/run_zstd_test.sh @@ -16,12 +16,13 @@ echo "findplugin.sh loaded" echo "${HDF5_PLUGIN_DIR}" findplugin h5zstd -echo "HDF5_PLUGIN_DIR=$HDF5_PLUGIN_DIR" - echo echo "Testing Zstandard compression..." export HDF5_PLUGIN_PATH="${HDF5_PLUGIN_DIR}" +echo "HDF5_PLUGIN_PATH=$HDF5_PLUGIN_PATH" +ls -l "${HDF5_PLUGIN_PATH}" + echo "set HDF5_PLUGIN_PATH: ${HDF5_PLUGIN_PATH}" ./tst_zstd From ed5fadc869eb20546380bd8b345fe5614f363c57 Mon Sep 17 00:00:00 2001 From: Ed Date: Thu, 15 Aug 2024 11:41:40 -0600 Subject: [PATCH 15/22] turning on more output in tests --- nc_test4/Makefile.am | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/nc_test4/Makefile.am b/nc_test4/Makefile.am index be76c6d881..2d5fdc420f 100644 --- a/nc_test4/Makefile.am +++ b/nc_test4/Makefile.am @@ -11,10 +11,10 @@ include $(top_srcdir)/lib_flags.am # Un comment to use a more verbose test driver -# SH_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver-verbose -# sh_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver-verbose -# LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver-verbose -# TESTS_ENVIRONMENT = export SETX=1; +SH_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver-verbose +sh_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver-verbose +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver-verbose +TESTS_ENVIRONMENT = export SETX=1; TEST_EXTENSIONS = .sh From 4659af942f5573e8485c855290a1a2714822e87e Mon Sep 17 00:00:00 2001 From: Ed Date: Fri, 16 Aug 2024 07:46:28 -0600 Subject: [PATCH 16/22] fixed cmake nccopy4 dependency --- ncdump/CMakeLists.txt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/ncdump/CMakeLists.txt b/ncdump/CMakeLists.txt index 663c1f64c6..8b86dbd900 100644 --- a/ncdump/CMakeLists.txt +++ b/ncdump/CMakeLists.txt @@ -250,8 +250,7 @@ endif() endif() set_tests_properties(ncdump_tst_nccopy3 PROPERTIES DEPENDS - "ncdump_tst_calendars;ncdump_run_utf8_tests;ncdump_tst_output;ncdump_tst_64bit;ncdump_run_tests;ncdump_tst_lengths") - set_tests_properties(ncdump_tst_nccopy3 ncdump_tst_output PROPERTIES RUN_SERIAL TRUE) + "ncdump_tst_calendars;ncdump_run_utf8_tests;ncdump_tst_output;ncdump_tst_64bit;ncdump_run_tests;ncdump_tst_lengths") endif() @@ -272,6 +271,8 @@ endif() add_sh_test(ncdump tst_ncgen4) add_sh_test(ncdump tst_netcdf4_4) add_sh_test(ncdump tst_nccopy4) + set_tests_properties(ncdump_tst_nccopy4 PROPERTIES DEPENDS + "ncdump_ncgen_tests;ncdump_tst_ncgen4;ncdump_tst_fillbug;ncdump_tst_netcdf4_4;ncdump_tst_h_scalar;ncdump_tst_netcdf4") add_sh_test(ncdump tst_calendars_nc4) set_tests_properties(ncdump_tst_nccopy4 PROPERTIES DEPENDS "ncdump_run_ncgen_tests;ncdump_tst_output;ncdump_tst_ncgen4;ncdump_sh_tst_fillbug;ncdump_tst_netcdf4_4;ncdump_tst_h_scalar;tst_comp;tst_comp2;tst_nans;tst_opaque_data;tst_create_files;tst_special_atts") From a016fb079ba9aa608d73f115a1cd87b2b0f4dcca Mon Sep 17 00:00:00 2001 From: Ed Date: Fri, 16 Aug 2024 12:25:25 -0600 Subject: [PATCH 17/22] fixing plugin name in CMake on cygwin --- plugins/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/CMakeLists.txt b/plugins/CMakeLists.txt index 4378360c3c..0912cd824e 100644 --- a/plugins/CMakeLists.txt +++ b/plugins/CMakeLists.txt @@ -11,7 +11,7 @@ if(WIN32) set(PLUGINPRE "__nc") elseif(CYGWIN) set(PLUGINEXT "dll") - set(PLUGINPRE "lib__nc") + set(PLUGINPRE "cyg__nc") else() set(PLUGINPRE "lib__nc") if(APPLE) From 770870b2e2a8bd4f1222d236708b120f9222346f Mon Sep 17 00:00:00 2001 From: Ed Date: Fri, 16 Aug 2024 15:20:46 -0600 Subject: [PATCH 18/22] trying to fix problem with nccopy4 dependencies --- ncdump/CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ncdump/CMakeLists.txt b/ncdump/CMakeLists.txt index 8b86dbd900..394d27490e 100644 --- a/ncdump/CMakeLists.txt +++ b/ncdump/CMakeLists.txt @@ -272,10 +272,10 @@ endif() add_sh_test(ncdump tst_netcdf4_4) add_sh_test(ncdump tst_nccopy4) set_tests_properties(ncdump_tst_nccopy4 PROPERTIES DEPENDS - "ncdump_ncgen_tests;ncdump_tst_ncgen4;ncdump_tst_fillbug;ncdump_tst_netcdf4_4;ncdump_tst_h_scalar;ncdump_tst_netcdf4") + "ncdump_ncgen_tests;ncdump_tst_ncgen4;ncdump_tst_fillbug;ncdump_tst_netcdf4_4;ncdump_tst_h_scalar;ncdump_tst_netcdf4;ncdump_run_ncgen_tests;ncdump_tst_output;ncdump_tst_ncgen4;ncdump_sh_tst_fillbug;tst_comp;tst_comp2;tst_nans;tst_opaque_data;tst_create_files;tst_special_atts") add_sh_test(ncdump tst_calendars_nc4) - set_tests_properties(ncdump_tst_nccopy4 PROPERTIES DEPENDS "ncdump_run_ncgen_tests;ncdump_tst_output;ncdump_tst_ncgen4;ncdump_sh_tst_fillbug;ncdump_tst_netcdf4_4;ncdump_tst_h_scalar;tst_comp;tst_comp2;tst_nans;tst_opaque_data;tst_create_files;tst_special_atts") + set_tests_properties(ncdump_tst_nccopy4 PROPERTIES DEPENDS "") set_tests_properties(ncdump_tst_nccopy5 PROPERTIES DEPENDS "ncdump_tst_nccopy4") endif(USE_HDF5) From c52d54a5a3bbcaf7e7a92e126c44e026eb70978e Mon Sep 17 00:00:00 2001 From: Edward Hartnett Date: Sat, 17 Aug 2024 05:06:59 -0600 Subject: [PATCH 19/22] working on cmake dependency in ncdump --- ncdump/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ncdump/CMakeLists.txt b/ncdump/CMakeLists.txt index 394d27490e..42358e9c67 100644 --- a/ncdump/CMakeLists.txt +++ b/ncdump/CMakeLists.txt @@ -272,7 +272,7 @@ endif() add_sh_test(ncdump tst_netcdf4_4) add_sh_test(ncdump tst_nccopy4) set_tests_properties(ncdump_tst_nccopy4 PROPERTIES DEPENDS - "ncdump_ncgen_tests;ncdump_tst_ncgen4;ncdump_tst_fillbug;ncdump_tst_netcdf4_4;ncdump_tst_h_scalar;ncdump_tst_netcdf4;ncdump_run_ncgen_tests;ncdump_tst_output;ncdump_tst_ncgen4;ncdump_sh_tst_fillbug;tst_comp;tst_comp2;tst_nans;tst_opaque_data;tst_create_files;tst_special_atts") + "ncdump_ncgen_tests;ncdump_tst_ncgen4;ncdump_tst_fillbug;ncdump_tst_netcdf4_4;ncdump_tst_h_scalar;ncdump_tst_netcdf4;ncdump_run_ncgen_tests;ncdump_tst_output;ncdump_tst_ncgen4;ncdump_sh_tst_fillbug;tst_comp;tst_comp2;tst_nans;tst_opaque_data;tst_create_files;tst_special_atts;ncdump_tst_nccopy3") add_sh_test(ncdump tst_calendars_nc4) set_tests_properties(ncdump_tst_nccopy4 PROPERTIES DEPENDS "") From 05f65065dac8c17ef1109c80223ce1c19af61ae4 Mon Sep 17 00:00:00 2001 From: Edward Hartnett Date: Sat, 17 Aug 2024 05:14:14 -0600 Subject: [PATCH 20/22] working on cmake dependency in ncdump --- ncdump/CMakeLists.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ncdump/CMakeLists.txt b/ncdump/CMakeLists.txt index 42358e9c67..255c41a998 100644 --- a/ncdump/CMakeLists.txt +++ b/ncdump/CMakeLists.txt @@ -251,6 +251,7 @@ endif() set_tests_properties(ncdump_tst_nccopy3 PROPERTIES DEPENDS "ncdump_tst_calendars;ncdump_run_utf8_tests;ncdump_tst_output;ncdump_tst_64bit;ncdump_run_tests;ncdump_tst_lengths") + set_tests_properties(ncdump_tst_nccopy3 PROPERTIES RUN_SERIAL TRUE) endif() @@ -273,6 +274,7 @@ endif() add_sh_test(ncdump tst_nccopy4) set_tests_properties(ncdump_tst_nccopy4 PROPERTIES DEPENDS "ncdump_ncgen_tests;ncdump_tst_ncgen4;ncdump_tst_fillbug;ncdump_tst_netcdf4_4;ncdump_tst_h_scalar;ncdump_tst_netcdf4;ncdump_run_ncgen_tests;ncdump_tst_output;ncdump_tst_ncgen4;ncdump_sh_tst_fillbug;tst_comp;tst_comp2;tst_nans;tst_opaque_data;tst_create_files;tst_special_atts;ncdump_tst_nccopy3") + set_tests_properties(ncdump_tst_nccopy4 PROPERTIES RUN_SERIAL TRUE) add_sh_test(ncdump tst_calendars_nc4) set_tests_properties(ncdump_tst_nccopy4 PROPERTIES DEPENDS "") From 71947c64dc0cc6e59154aaabd63a5aa624753fe5 Mon Sep 17 00:00:00 2001 From: Edward Hartnett Date: Sat, 17 Aug 2024 05:53:23 -0600 Subject: [PATCH 21/22] turned off verbose test output --- nc_test4/Makefile.am | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/nc_test4/Makefile.am b/nc_test4/Makefile.am index 2d5fdc420f..be76c6d881 100644 --- a/nc_test4/Makefile.am +++ b/nc_test4/Makefile.am @@ -11,10 +11,10 @@ include $(top_srcdir)/lib_flags.am # Un comment to use a more verbose test driver -SH_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver-verbose -sh_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver-verbose -LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver-verbose -TESTS_ENVIRONMENT = export SETX=1; +# SH_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver-verbose +# sh_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver-verbose +# LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver-verbose +# TESTS_ENVIRONMENT = export SETX=1; TEST_EXTENSIONS = .sh From 55309972e89746ec6c5fc1634995503c71e8e967 Mon Sep 17 00:00:00 2001 From: Ward Fisher Date: Mon, 19 Aug 2024 13:47:00 -0600 Subject: [PATCH 22/22] o Added NETCDF_ENABLE_PLUGINS option to cmake based build. o Added information related to plugins, plugin install location to post-build summary. --- CMakeLists.txt | 41 +++++++++++++++++++++++------------------ configure.ac | 3 ++- libnetcdf.settings.in | 3 +++ nc-config.cmake.in | 2 +- plugins/CMakeLists.txt | 4 ++-- 5 files changed, 31 insertions(+), 22 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index e8749a0596..1622f6a686 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -618,22 +618,26 @@ set(REMOTETESTSERVERS "remotetest.unidata.ucar.edu" CACHE STRING "test servers t set(REMOTETESTSERVERS "remotetest.unidata.ucar.edu" CACHE STRING "test servers to use for remote test") # Locate some compressors +option(NETCDF_ENABLE_PLUGINS "Enable netCDF Plugins." ON) option(NETCDF_ENABLE_FILTER_SZIP "Enable use of Szip compression library if it is available. Required if NETCDF_ENABLE_NCZARR is true." ON) option(NETCDF_ENABLE_FILTER_BZ2 "Enable use of Bz2 compression library if it is available." ON) option(NETCDF_ENABLE_FILTER_BLOSC "Enable use of blosc compression library if it is available." ON) option(NETCDF_ENABLE_FILTER_ZSTD "Enable use of Zstd compression library if it is available." ON) # If user wants, then install selected plugins (default on) -set(PLUGIN_INSTALL_DIR "YES" CACHE STRING "Whether and where we should install plugins; defaults to yes") +set(NETCDF_PLUGIN_INSTALL_DIR "YES" CACHE STRING "Whether and where we should install plugins; defaults to yes") +if(NOT NETCDF_ENABLE_PLUGINS) + unset(NETCDF_PLUGIN_INSTALL_DIR CACHE) +endif() # This is ugly, but seems necessary because of CMake's boolean structure set(boolval FALSE) -if(DEFINED PLUGIN_INSTALL_DIR) - booleanize(${PLUGIN_INSTALL_DIR} boolval) +if(DEFINED NETCDF_PLUGIN_INSTALL_DIR) + booleanize(${NETCDF_PLUGIN_INSTALL_DIR} boolval) if(boolval) set(ENABLE_PLUGIN_INSTALL YES) # No actual value was specified - unset(PLUGIN_INSTALL_DIR CACHE) + unset(NETCDF_PLUGIN_INSTALL_DIR CACHE) else() if(boolval STREQUAL "NOTFOUND") # Must be an actual value @@ -648,44 +652,44 @@ endif() # Ensure no defined plugin dir if not enabled if(NOT ENABLE_PLUGIN_INSTALL) - unset(PLUGIN_INSTALL_DIR CACHE) + unset(NETCDF_PLUGIN_INSTALL_DIR CACHE) endif() if(ENABLE_PLUGIN_INSTALL) - if(NOT DEFINED PLUGIN_INSTALL_DIR) + if(NOT DEFINED NETCDF_PLUGIN_INSTALL_DIR) # Default to HDF5_PLUGIN_PATH or its default directories if(DEFINED ENV{HDF5_PLUGIN_PATH}) - set(PLUGIN_INSTALL_DIR "$ENV{HDF5_PLUGIN_PATH}") + set(NETCDF_PLUGIN_INSTALL_DIR "$ENV{HDF5_PLUGIN_PATH}") else() if(ISMSVC OR ISMINGW) - set(PLUGIN_INSTALL_DIR "$ENV{ALLUSERSPROFILE}\\hdf5\\lib\\plugin") + set(NETCDF_PLUGIN_INSTALL_DIR "$ENV{ALLUSERSPROFILE}\\hdf5\\lib\\plugin") else() - set(PLUGIN_INSTALL_DIR "/usr/local/hdf5/lib/plugin") + set(NETCDF_PLUGIN_INSTALL_DIR "/usr/local/hdf5/lib/plugin") endif() endif() - message(STATUS "Defaulting to -DPLUGIN_INSTALL_DIR=${PLUGIN_INSTALL_DIR}") + message(STATUS "Defaulting to -DPLUGIN_INSTALL_DIR=${NETCDF_PLUGIN_INSTALL_DIR}") endif() endif() if(ENABLE_PLUGIN_INSTALL) # Use the lowest priority dir in the path if(NOT ISMSVC AND NOT ISMINGW) - string(REPLACE ":" ";" PATH_LIST ${PLUGIN_INSTALL_DIR}) + string(REPLACE ":" ";" PATH_LIST ${NETCDF_PLUGIN_INSTALL_DIR}) else() - set(PATH_LIST ${PLUGIN_INSTALL_DIR}) + set(PATH_LIST ${NETCDF_PLUGIN_INSTALL_DIR}) endif() # Get last element - list(GET PATH_LIST -1 PLUGIN_INSTALL_DIR) - set(PLUGIN_INSTALL_DIR_SETTING "${PLUGIN_INSTALL_DIR}") - message(STATUS "Final value of-DPLUGIN_INSTALL_DIR=${PLUGIN_INSTALL_DIR}") + list(GET PATH_LIST -1 NETCDF_PLUGIN_INSTALL_DIR) + set(PLUGIN_INSTALL_DIR_SETTING "${NETCDF_PLUGIN_INSTALL_DIR}") + message(STATUS "Final value of-DPLUGIN_INSTALL_DIR=${NETCDF_PLUGIN_INSTALL_DIR}") else() # No option specified - unset(PLUGIN_INSTALL_DIR) - unset(PLUGIN_INSTALL_DIR CACHE) + unset(NETCDF_PLUGIN_INSTALL_DIR) + unset(NETCDF_PLUGIN_INSTALL_DIR CACHE) set(PLUGIN_INSTALL_DIR_SETTING "N.A.") endif() -message(STATUS "ENABLE_PLUGIN_INSTALL=${ENABLE_PLUGIN_INSTALL} PLUGIN_INSTALL_DIR=${PLUGIN_INSTALL_DIR}") +message(STATUS "ENABLE_PLUGIN_INSTALL=${ENABLE_PLUGIN_INSTALL} PLUGIN_INSTALL_DIR=${NETCDF_PLUGIN_INSTALL_DIR}") # Try to enable NCZarr zip support option(NETCDF_ENABLE_NCZARR_ZIP "Enable NCZarr ZIP support." ${NETCDF_ENABLE_NCZARR}) @@ -1698,6 +1702,7 @@ is_enabled(NETCDF_ENABLE_S3_INTERNAL HAS_S3_INTERNAL) is_enabled(HAS_HDF5_ROS3 HAS_HDF5_ROS3) is_enabled(NETCDF_ENABLE_NCZARR HAS_NCZARR) is_enabled(NETCDF_ENABLE_NCZARR_ZIP HAS_NCZARR_ZIP) +is_enabled(NETCDF_ENABLE_PLUGINS HAS_PLUGINS) is_enabled(NETCDF_ENABLE_QUANTIZE HAS_QUANTIZE) is_enabled(NETCDF_ENABLE_LOGGING HAS_LOGGING) is_enabled(NETCDF_ENABLE_FILTER_TESTING DO_FILTER_TESTS) diff --git a/configure.ac b/configure.ac index 9f5238d13b..6ed7fdd05d 100644 --- a/configure.ac +++ b/configure.ac @@ -2035,6 +2035,7 @@ AC_SUBST(HAS_HDF5_ROS3,[$has_hdf5_ros3]) AC_SUBST(HAS_NCZARR,[$enable_nczarr]) AC_SUBST(NETCDF_ENABLE_S3_TESTING,[$with_s3_testing]) AC_SUBST(HAS_NCZARR_ZIP,[$enable_nczarr_zip]) +AC_SUBST(HAS_PLUGINS, [$enable_plugins]) AC_SUBST(HAS_QUANTIZE,[$enable_quantize]) AC_SUBST(HAS_LOGGING,[$enable_logging]) AC_SUBST(DO_FILTER_TESTS,[$enable_filter_testing]) @@ -2142,7 +2143,7 @@ AM_CONDITIONAL([ENABLE_PLUGIN_DIR], [test "x$enable_plugin_dir" = xyes]) AC_SUBST([PLUGIN_INSTALL_DIR], [$with_plugin_dir]) # Better value for libnetcdf.settings AC_SUBST([PLUGIN_INSTALL_DIR_SETTING], [$with_plugin_dir_setting]) - +AC_SUBST(NETCDF_PLUGIN_INSTALL_DIR, [$PLUGIN_INSTALL_DIR]) # Access netcdf specific version of config.h AH_BOTTOM([#include "ncconfigure.h"]) diff --git a/libnetcdf.settings.in b/libnetcdf.settings.in index d459aa714a..4cf899a47b 100644 --- a/libnetcdf.settings.in +++ b/libnetcdf.settings.in @@ -50,6 +50,9 @@ MMap Support: @HAS_MMAP@ ERANGE Fill Support: @HAS_ERANGE_FILL@ Relaxed Boundary Check: @RELAX_COORD_BOUND@ +Plugins Enabled: @HAS_PLUGINS@ +Plugin Install Dir: @NETCDF_PLUGIN_INSTALL_DIR@ + Quantization: @HAS_QUANTIZE@ Logging: @HAS_LOGGING@ SZIP Write Support: @HAS_SZLIB_WRITE@ diff --git a/nc-config.cmake.in b/nc-config.cmake.in index 5eda94d20c..121f996f02 100644 --- a/nc-config.cmake.in +++ b/nc-config.cmake.in @@ -8,7 +8,7 @@ prefix="@CMAKE_INSTALL_PREFIX@" exec_prefix="@CMAKE_INSTALL_PREFIX@" libdir="@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBDIR@" includedir="@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_INCLUDEDIR@" -plugindir="@PLUGIN_INSTALL_DIR@" +plugindir="@NETCDF_PLUGIN_INSTALL_DIR@" cc="@CMAKE_C_COMPILER@" cflags="-I@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_INCLUDEDIR@" diff --git a/plugins/CMakeLists.txt b/plugins/CMakeLists.txt index 0912cd824e..09ccf4b943 100644 --- a/plugins/CMakeLists.txt +++ b/plugins/CMakeLists.txt @@ -124,8 +124,8 @@ if(ENABLE_PLUGIN_INSTALL) macro(installplugin PLUG) set(INSTALLED_PLUGIN_LIB "${PLUGINPRE}${PLUG}.${PLUGINEXT}") - message(STATUS "Installing: ${INSTALLED_PLUGIN_LIB} into ${PLUGIN_INSTALL_DIR}") - install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/${INSTALLED_PLUGIN_LIB} DESTINATION ${PLUGIN_INSTALL_DIR}) + message(STATUS "Installing: ${INSTALLED_PLUGIN_LIB} into ${NETCDF_PLUGIN_INSTALL_DIR}") + install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/${INSTALLED_PLUGIN_LIB} DESTINATION ${NETCDF_PLUGIN_INSTALL_DIR}) endmacro() install(DIRECTORY DESTINATION ${PLUGIN_INSTALL_DIR})