mirror of
https://github.com/Unidata/netcdf-c.git
synced 2024-12-09 08:11:38 +08:00
b02703aa24
After a long discussion, I implemented the rules at the end of that issue. They are documented in nccopy.1. Additionally, I added a new, per-variable, -c flag that allows for the direct setting of the chunking parameters for a variable. The form is -c var:c1,c2,...ck where var is the name of the variable (possibly a fully qualified name) and the ci are the chunksizes for that variable. It must be the case that the rank of the variable is k. If the new form is used as well as the old form, then the new form overrides the old form for the specified variable. Note that multiple occurrences of the new form -c flag may be specified. Misc. Other fixes 1. Added -M <size> option to nccopy to specify the minimum allowable chunksize. 2. Removed the unused variables from bigmeta.c (Issue https://github.com/Unidata/netcdf-c/issues/1079) 3. Fixed failure of nc_test4/tst_filter.sh by using the new -M flag (#1) to allow filter test on a small chunk size.
108 lines
3.0 KiB
Bash
108 lines
3.0 KiB
Bash
#!/bin/bash
|
|
|
|
# Define a function that attempts to locate a
|
|
# plugin with a given canonical name.
|
|
# Assumptions:
|
|
# 1. plugins is a top-level directory
|
|
# 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
|
|
# Variable HDF5_PLUGIN_PATH is setthe absolute path to the
|
|
# directory containing the plugin library file
|
|
# Local variables are prefixed with FP_
|
|
#
|
|
# Note: we assume that the use of the CMAKE_BUILD_TYPE
|
|
# is obviated by setting the LIBRARY_OUTPUT_DIRECTORY
|
|
# variables: see hdf5plugins/CMakeLists.txt
|
|
|
|
findplugin() {
|
|
|
|
FP_NAME="$1"
|
|
|
|
# Figure out the compiler (some values from ./configure)
|
|
FP_ISCMAKE=@ISCMAKE@
|
|
FP_ISMSVC=@MSVC@
|
|
|
|
# And topsrcdir
|
|
topbuilddir='@abs_top_builddir@'
|
|
|
|
# Are we operating under OS-X? (test using uname)
|
|
FP_OS=`uname | cut -d '_' -f 1`
|
|
if test "x$FP_OS" = xDarwin ; then FP_ISOSX=1; fi
|
|
|
|
# Are we operating under CYGWIN? (test using uname)
|
|
FP_OS=`uname | cut -d '_' -f 1`
|
|
if test "x$FP_OS" = xCYGWIN ; then FP_ISCYGWIN=1; fi
|
|
|
|
FP_PLUGINS="$topbuilddir/plugins"
|
|
|
|
FP_PLUGIN_LIB=
|
|
FP_PLUGIN_PATH=
|
|
|
|
# Figure out the plugin file name
|
|
# Test for visual studio before cygwin since both might be true
|
|
if test "x$FP_ISMSVC" != x ; then
|
|
FP_PLUGIN_LIB="${FP_NAME}.dll"
|
|
elif test "x$FP_ISCYGWIN" != x ; then
|
|
FP_PLUGIN_LIB="cyg${FP_NAME}.dll"
|
|
elif test "x$FP_ISOSX" != x ; then
|
|
FP_PLUGIN_LIB="lib${FP_NAME}.so" # Should this include the version number in the name?
|
|
else # Presumably some form on *nix"
|
|
FP_PLUGIN_LIB="lib${FP_NAME}.so"
|
|
fi
|
|
|
|
# Figure out the path to where the lib is stored
|
|
# This can probably be simplified
|
|
# Case 1: Cmake with Visual Studio
|
|
# Do not know where to look for a dylib
|
|
# Case 1: Cmake with Visual Studio
|
|
if test "x$FP_ISCMAKE" != x -a "x${FP_ISMSVC}" != x ; then
|
|
# Case 1a: ignore the build type directory
|
|
if test -f "${FP_PLUGINS}/${FP_PLUGIN_LIB}" ; then
|
|
FP_PLUGIN_PATH="${FP_PLUGINS}"
|
|
fi
|
|
else # Case 2: automake
|
|
# Case 2a: look in .libs
|
|
if test -f "${FP_PLUGINS}/.libs/${FP_PLUGIN_LIB}" ; then
|
|
FP_PLUGIN_PATH="${FP_PLUGINS}/.libs"
|
|
else # Case 2: look in FP_PLUGINS directly
|
|
if test -f "${FP_PLUGINS}/${FP_PLUGIN_LIB}" ; then
|
|
FP_PLUGIN_PATH="${FP_PLUGINS}"
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
# Verify
|
|
if test "x$FP_PLUGIN_PATH" = x ; then
|
|
echo "***Fail: Could not locate a usable HDF5_PLUGIN_PATH"
|
|
return 1
|
|
fi
|
|
if ! test -f "$FP_PLUGIN_PATH/$FP_PLUGIN_LIB" ; then
|
|
echo "***Fail: Could not locate a usable HDF5_PLUGIN_LIB"
|
|
return 1
|
|
fi
|
|
|
|
# If we are operating using both Visual Studio and Cygwin,
|
|
# then we need to convert the FP_PLUGIN_PATH to windows format
|
|
if test "x$FP_ISMSVC" != x -a "x$FP_ISCYGWIN" != x ; then
|
|
FP_PLUGIN_PATH=`cygpath -wl $FP_PLUGIN_PATH`
|
|
fi
|
|
|
|
# Set the final output variables
|
|
HDF5_PLUGIN_LIB="$FP_PLUGIN_LIB"
|
|
HDF5_PLUGIN_PATH="$FP_PLUGIN_PATH"
|
|
|
|
return 0
|
|
}
|
|
|
|
# debug
|
|
if test "x$1" != x ; then
|
|
findplugin
|
|
echo "HDF5_PLUGIN_PATH=|$FP_PLUGIN_PATH|"
|
|
fi
|