2018-01-17 02:00:09 +08:00
|
|
|
#!/bin/bash
|
|
|
|
|
|
|
|
# Define a function that attempts to locate a
|
|
|
|
# plugin with a given canonical name.
|
|
|
|
# Assumptions:
|
2021-09-03 07:04:26 +08:00
|
|
|
# 1. plugins is a top-level directory, possibly in "build"
|
2018-01-17 02:00:09 +08:00
|
|
|
# Inputs:
|
|
|
|
# $1 is the canonical name
|
|
|
|
# $2 is 1 if we are running under cmake
|
|
|
|
# $3 is 1 if we are running using Visual Studio, blank otherwise
|
|
|
|
# $4 is the build type; only used if $3 is 1
|
|
|
|
# Outputs:
|
|
|
|
# return code is 0 is success, 1 if failed
|
|
|
|
# Variable HDF5_PLUGIN_LIB is set to the library file name
|
Support installation of filters into user-specified location
re: https://github.com/Unidata/netcdf-c/issues/2294
Ed Hartnett suggested that the netcdf library installation process
be extended to install the standard filters into a user specified
location. The user can then set HDF5_PLUGIN_PATH to that location.
This PR provides that capability using:
````
configure option: --with-plugin-dir=<absolute directory path>
cmake option: -DPLUGIN_INSTALL_DIR=<absolute directory path>
````
Currently, the following plugins are always installed, if
available: bzip2, zstd, blosc.
If NCZarr is enabled, then additional plugins are installed:
fletcher32, shuffle, deflate, szip.
Additionally, the necessary codec support is installed
for each of the above filters that is installed.
## Changes:
1. Cleanup handling of built-in bzip2.
2. Add documentation to docs/filters.md
3. Re-factor the NCZarr codec libraries
4. Add a test, although it can only be exercised after
the library is installed, so it cannot be used during
normal testing.
5. Cleanup use of HDF5_PLUGIN_PATH in the filter test cases.
2022-04-30 04:31:55 +08:00
|
|
|
# Variable HDF5_PLUGIN_DIR is set to the absolute path to the
|
2018-01-17 02:00:09 +08:00
|
|
|
# directory containing the plugin library file
|
|
|
|
# Local variables are prefixed with FP_
|
2018-01-17 04:28:30 +08:00
|
|
|
#
|
|
|
|
# Note: we assume that the use of the CMAKE_BUILD_TYPE
|
|
|
|
# is obviated by setting the LIBRARY_OUTPUT_DIRECTORY
|
|
|
|
# variables: see hdf5plugins/CMakeLists.txt
|
2018-01-17 02:00:09 +08:00
|
|
|
|
2022-05-15 06:05:48 +08:00
|
|
|
# Define location of execution
|
|
|
|
TOPSRCDIR='@abs_top_srcdir@'
|
|
|
|
TOPBUILDDIR='@abs_top_builddir@'
|
2018-01-17 02:00:09 +08:00
|
|
|
|
2022-05-15 06:05:48 +08:00
|
|
|
# Need info from test_common
|
|
|
|
if test "x$srcdir" = x ; then srcdir=`pwd`; fi
|
|
|
|
. ${TOPBUILDDIR}/test_common.sh
|
2018-01-17 02:00:09 +08:00
|
|
|
|
2022-05-15 06:05:48 +08:00
|
|
|
findpluginext() {
|
|
|
|
# Infer the expected plugin shared library extension
|
|
|
|
# Note: will fail if used before plugins is built
|
|
|
|
# Also assumes that misc filter is always built
|
|
|
|
# Approach is to use find to see what is in plugins directory.
|
|
|
|
TSO=`find ${TOPBUILDDIR}/plugins -name '*misc.so'`
|
2022-05-20 12:00:40 +08:00
|
|
|
TDY=`find ${TOPBUILDDIR}/plugins -name '*misc.dylib'`
|
2022-05-15 06:05:48 +08:00
|
|
|
TCYG=`find ${TOPBUILDDIR}/plugins -name 'cyg*misc.dll'`
|
2022-07-01 22:14:54 +08:00
|
|
|
TMING=`find ${TOPBUILDDIR}/plugins -name lib*misc.dll`
|
2022-05-15 06:05:48 +08:00
|
|
|
TDLL=`find ${TOPBUILDDIR}/plugins -name '*misc.dll'`
|
|
|
|
if test "x$TSO" != x ; then
|
|
|
|
FP_PLUGIN_EXT="so"
|
2022-05-20 12:00:40 +08:00
|
|
|
FP_PLUGIN_PRE="lib__nc"
|
2022-05-15 06:05:48 +08:00
|
|
|
elif test "x$TDY" != x ; then
|
2022-05-20 12:00:40 +08:00
|
|
|
FP_PLUGIN_EXT="dylib"
|
|
|
|
FP_PLUGIN_PRE="lib__nc"
|
2022-05-15 06:05:48 +08:00
|
|
|
elif test "x$TCYG" != x ; then
|
|
|
|
FP_PLUGIN_EXT="dll"
|
2022-07-01 22:14:54 +08:00
|
|
|
FP_PLUGIN_PRE="cyg__nc"
|
|
|
|
elif test "x$TMING" != x ; then
|
|
|
|
FP_PLUGIN_EXT="dll"
|
|
|
|
FP_PLUGIN_PRE="lib__nc"
|
2022-05-15 06:05:48 +08:00
|
|
|
elif test "x$TDLL" != x ; then
|
|
|
|
FP_PLUGIN_EXT="dll"
|
2022-05-20 12:00:40 +08:00
|
|
|
FP_PLUGIN_PRE="__nc"
|
2022-05-15 06:05:48 +08:00
|
|
|
else # unknown
|
|
|
|
unset FP_PLUGIN_EXT
|
|
|
|
unset FP_PLUGIN_PRE
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
|
|
|
findplugindir() {
|
Support installation of filters into user-specified location
re: https://github.com/Unidata/netcdf-c/issues/2294
Ed Hartnett suggested that the netcdf library installation process
be extended to install the standard filters into a user specified
location. The user can then set HDF5_PLUGIN_PATH to that location.
This PR provides that capability using:
````
configure option: --with-plugin-dir=<absolute directory path>
cmake option: -DPLUGIN_INSTALL_DIR=<absolute directory path>
````
Currently, the following plugins are always installed, if
available: bzip2, zstd, blosc.
If NCZarr is enabled, then additional plugins are installed:
fletcher32, shuffle, deflate, szip.
Additionally, the necessary codec support is installed
for each of the above filters that is installed.
## Changes:
1. Cleanup handling of built-in bzip2.
2. Add documentation to docs/filters.md
3. Re-factor the NCZarr codec libraries
4. Add a test, although it can only be exercised after
the library is installed, so it cannot be used during
normal testing.
5. Cleanup use of HDF5_PLUGIN_PATH in the filter test cases.
2022-04-30 04:31:55 +08:00
|
|
|
FP_PLUGIN_DIR=
|
2018-01-17 02:00:09 +08:00
|
|
|
# Figure out the path to where the lib is stored
|
|
|
|
# This can probably be simplified
|
2021-09-03 07:04:26 +08:00
|
|
|
|
|
|
|
CURWD=`pwd`
|
|
|
|
cd ${TOPBUILDDIR}/plugins
|
|
|
|
FP_PLUGINS=`pwd`
|
|
|
|
cd ${CURWD}
|
|
|
|
|
2018-01-17 02:00:09 +08:00
|
|
|
# Case 1: Cmake with Visual Studio
|
|
|
|
if test "x$FP_ISCMAKE" != x -a "x${FP_ISMSVC}" != x ; then
|
2021-09-03 07:04:26 +08:00
|
|
|
# Case 1a: ignore the build type directory
|
2022-05-15 06:05:48 +08:00
|
|
|
if test -e "${FP_PLUGINS}/${FP_PLUGIN_LIB}" ; then
|
Support installation of filters into user-specified location
re: https://github.com/Unidata/netcdf-c/issues/2294
Ed Hartnett suggested that the netcdf library installation process
be extended to install the standard filters into a user specified
location. The user can then set HDF5_PLUGIN_PATH to that location.
This PR provides that capability using:
````
configure option: --with-plugin-dir=<absolute directory path>
cmake option: -DPLUGIN_INSTALL_DIR=<absolute directory path>
````
Currently, the following plugins are always installed, if
available: bzip2, zstd, blosc.
If NCZarr is enabled, then additional plugins are installed:
fletcher32, shuffle, deflate, szip.
Additionally, the necessary codec support is installed
for each of the above filters that is installed.
## Changes:
1. Cleanup handling of built-in bzip2.
2. Add documentation to docs/filters.md
3. Re-factor the NCZarr codec libraries
4. Add a test, although it can only be exercised after
the library is installed, so it cannot be used during
normal testing.
5. Cleanup use of HDF5_PLUGIN_PATH in the filter test cases.
2022-04-30 04:31:55 +08:00
|
|
|
FP_PLUGIN_DIR="${FP_PLUGINS}"
|
2021-09-03 07:04:26 +08:00
|
|
|
fi
|
2018-01-17 02:00:09 +08:00
|
|
|
else # Case 2: automake
|
|
|
|
# Case 2a: look in .libs
|
2022-05-15 06:05:48 +08:00
|
|
|
if test -e "${FP_PLUGINS}/.libs" ; then
|
Support installation of filters into user-specified location
re: https://github.com/Unidata/netcdf-c/issues/2294
Ed Hartnett suggested that the netcdf library installation process
be extended to install the standard filters into a user specified
location. The user can then set HDF5_PLUGIN_PATH to that location.
This PR provides that capability using:
````
configure option: --with-plugin-dir=<absolute directory path>
cmake option: -DPLUGIN_INSTALL_DIR=<absolute directory path>
````
Currently, the following plugins are always installed, if
available: bzip2, zstd, blosc.
If NCZarr is enabled, then additional plugins are installed:
fletcher32, shuffle, deflate, szip.
Additionally, the necessary codec support is installed
for each of the above filters that is installed.
## Changes:
1. Cleanup handling of built-in bzip2.
2. Add documentation to docs/filters.md
3. Re-factor the NCZarr codec libraries
4. Add a test, although it can only be exercised after
the library is installed, so it cannot be used during
normal testing.
5. Cleanup use of HDF5_PLUGIN_PATH in the filter test cases.
2022-04-30 04:31:55 +08:00
|
|
|
FP_PLUGIN_DIR="${FP_PLUGINS}/.libs"
|
2018-01-17 02:00:09 +08:00
|
|
|
else # Case 2: look in FP_PLUGINS directly
|
2022-05-15 06:05:48 +08:00
|
|
|
if test -e "${FP_PLUGINS}" ; then
|
Support installation of filters into user-specified location
re: https://github.com/Unidata/netcdf-c/issues/2294
Ed Hartnett suggested that the netcdf library installation process
be extended to install the standard filters into a user specified
location. The user can then set HDF5_PLUGIN_PATH to that location.
This PR provides that capability using:
````
configure option: --with-plugin-dir=<absolute directory path>
cmake option: -DPLUGIN_INSTALL_DIR=<absolute directory path>
````
Currently, the following plugins are always installed, if
available: bzip2, zstd, blosc.
If NCZarr is enabled, then additional plugins are installed:
fletcher32, shuffle, deflate, szip.
Additionally, the necessary codec support is installed
for each of the above filters that is installed.
## Changes:
1. Cleanup handling of built-in bzip2.
2. Add documentation to docs/filters.md
3. Re-factor the NCZarr codec libraries
4. Add a test, although it can only be exercised after
the library is installed, so it cannot be used during
normal testing.
5. Cleanup use of HDF5_PLUGIN_PATH in the filter test cases.
2022-04-30 04:31:55 +08:00
|
|
|
FP_PLUGIN_DIR="${FP_PLUGINS}"
|
2018-01-17 02:00:09 +08:00
|
|
|
fi
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
# Verify
|
Support installation of filters into user-specified location
re: https://github.com/Unidata/netcdf-c/issues/2294
Ed Hartnett suggested that the netcdf library installation process
be extended to install the standard filters into a user specified
location. The user can then set HDF5_PLUGIN_PATH to that location.
This PR provides that capability using:
````
configure option: --with-plugin-dir=<absolute directory path>
cmake option: -DPLUGIN_INSTALL_DIR=<absolute directory path>
````
Currently, the following plugins are always installed, if
available: bzip2, zstd, blosc.
If NCZarr is enabled, then additional plugins are installed:
fletcher32, shuffle, deflate, szip.
Additionally, the necessary codec support is installed
for each of the above filters that is installed.
## Changes:
1. Cleanup handling of built-in bzip2.
2. Add documentation to docs/filters.md
3. Re-factor the NCZarr codec libraries
4. Add a test, although it can only be exercised after
the library is installed, so it cannot be used during
normal testing.
5. Cleanup use of HDF5_PLUGIN_PATH in the filter test cases.
2022-04-30 04:31:55 +08:00
|
|
|
if test "x$FP_PLUGIN_DIR" = x ; then
|
|
|
|
echo "***Fail: Could not locate a usable HDF5_PLUGIN_DIR"
|
2018-01-17 02:00:09 +08:00
|
|
|
return 1
|
|
|
|
fi
|
2022-05-15 06:05:48 +08:00
|
|
|
|
|
|
|
# Make local path
|
|
|
|
FP_PLUGIN_DIR=`${NCPATHCVT} -F $FP_PLUGIN_DIR`
|
|
|
|
HDF5_PLUGIN_DIR="$FP_PLUGIN_DIR"
|
|
|
|
}
|
|
|
|
|
|
|
|
findplugin() {
|
|
|
|
|
|
|
|
FP_NAME="$1"
|
|
|
|
|
|
|
|
FP_PLUGIN_LIB=
|
|
|
|
|
|
|
|
# Figure out the plugin file name
|
|
|
|
FP_PLUGIN_LIB="${FP_PLUGIN_PRE}${FP_NAME}.${FP_PLUGIN_EXT}"
|
|
|
|
|
|
|
|
# Verify
|
Support installation of filters into user-specified location
re: https://github.com/Unidata/netcdf-c/issues/2294
Ed Hartnett suggested that the netcdf library installation process
be extended to install the standard filters into a user specified
location. The user can then set HDF5_PLUGIN_PATH to that location.
This PR provides that capability using:
````
configure option: --with-plugin-dir=<absolute directory path>
cmake option: -DPLUGIN_INSTALL_DIR=<absolute directory path>
````
Currently, the following plugins are always installed, if
available: bzip2, zstd, blosc.
If NCZarr is enabled, then additional plugins are installed:
fletcher32, shuffle, deflate, szip.
Additionally, the necessary codec support is installed
for each of the above filters that is installed.
## Changes:
1. Cleanup handling of built-in bzip2.
2. Add documentation to docs/filters.md
3. Re-factor the NCZarr codec libraries
4. Add a test, although it can only be exercised after
the library is installed, so it cannot be used during
normal testing.
5. Cleanup use of HDF5_PLUGIN_PATH in the filter test cases.
2022-04-30 04:31:55 +08:00
|
|
|
if ! test -f "$FP_PLUGIN_DIR/$FP_PLUGIN_LIB" ; then
|
2018-01-17 02:00:09 +08:00
|
|
|
echo "***Fail: Could not locate a usable HDF5_PLUGIN_LIB"
|
|
|
|
return 1
|
|
|
|
fi
|
|
|
|
|
|
|
|
# Set the final output variables
|
|
|
|
HDF5_PLUGIN_LIB="$FP_PLUGIN_LIB"
|
Support installation of filters into user-specified location
re: https://github.com/Unidata/netcdf-c/issues/2294
Ed Hartnett suggested that the netcdf library installation process
be extended to install the standard filters into a user specified
location. The user can then set HDF5_PLUGIN_PATH to that location.
This PR provides that capability using:
````
configure option: --with-plugin-dir=<absolute directory path>
cmake option: -DPLUGIN_INSTALL_DIR=<absolute directory path>
````
Currently, the following plugins are always installed, if
available: bzip2, zstd, blosc.
If NCZarr is enabled, then additional plugins are installed:
fletcher32, shuffle, deflate, szip.
Additionally, the necessary codec support is installed
for each of the above filters that is installed.
## Changes:
1. Cleanup handling of built-in bzip2.
2. Add documentation to docs/filters.md
3. Re-factor the NCZarr codec libraries
4. Add a test, although it can only be exercised after
the library is installed, so it cannot be used during
normal testing.
5. Cleanup use of HDF5_PLUGIN_PATH in the filter test cases.
2022-04-30 04:31:55 +08:00
|
|
|
HDF5_PLUGIN_DIR="$FP_PLUGIN_DIR"
|
2018-01-17 02:00:09 +08:00
|
|
|
|
|
|
|
return 0
|
|
|
|
}
|
2022-05-15 06:05:48 +08:00
|
|
|
|
|
|
|
# init
|
|
|
|
unset HDF5_PLUGIN_DIR
|
|
|
|
findpluginext
|
|
|
|
findplugindir
|