mirror of
https://github.com/Unidata/netcdf-c.git
synced 2024-12-27 08:49:16 +08:00
Merge branch 'master' into authfix.tmp
This commit is contained in:
commit
c1a9917f80
6
.github/workflows/run_tests.yml
vendored
6
.github/workflows/run_tests.yml
vendored
@ -14,7 +14,7 @@ jobs:
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
hdf5: [ 1.8.21, 1.10.7 ]
|
||||
hdf5: [ 1.8.21, 1.10.1, 1.10.7 ]
|
||||
|
||||
steps:
|
||||
|
||||
@ -62,7 +62,7 @@ jobs:
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
hdf5: [ 1.8.21, 1.10.7 ]
|
||||
hdf5: [ 1.8.21, 1.10.1, 1.10.7 ]
|
||||
use_nc4: [ nc3, nc4 ]
|
||||
use_dap: [ dap_off, dap_on ]
|
||||
use_nczarr: [ nczarr_off, nczarr_on ]
|
||||
@ -160,7 +160,7 @@ jobs:
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
hdf5: [ 1.8.21, 1.10.7 ]
|
||||
hdf5: [ 1.8.21, 1.10.1, 1.10.7 ]
|
||||
use_nc4: [ nc3, nc4 ]
|
||||
use_dap: [ dap_off, dap_on ]
|
||||
use_nczarr: [ nczarr_off, nczarr_on ]
|
||||
|
@ -26,18 +26,18 @@ set(PACKAGE "netCDF" CACHE STRING "")
|
||||
|
||||
SET(NC_VERSION_MAJOR 4)
|
||||
SET(NC_VERSION_MINOR 8)
|
||||
SET(NC_VERSION_PATCH 0)
|
||||
SET(NC_VERSION_PATCH 1)
|
||||
SET(NC_VERSION_NOTE "-development")
|
||||
SET(netCDF_VERSION ${NC_VERSION_MAJOR}.${NC_VERSION_MINOR}.${NC_VERSION_PATCH}${NC_VERSION_NOTE})
|
||||
SET(VERSION ${netCDF_VERSION})
|
||||
SET(NC_VERSION ${netCDF_VERSION})
|
||||
SET(netCDF_LIB_VERSION 18)
|
||||
SET(netCDF_SO_VERSION 18)
|
||||
SET(netCDF_LIB_VERSION 19)
|
||||
SET(netCDF_SO_VERSION 19)
|
||||
SET(PACKAGE_VERSION ${VERSION})
|
||||
|
||||
# Version of the dispatch table. This must match the value in
|
||||
# configure.ac.
|
||||
SET(NC_DISPATCH_VERSION 2)
|
||||
SET(NC_DISPATCH_VERSION 3)
|
||||
|
||||
# Get system configuration, Use it to determine osname, os release, cpu. These
|
||||
# will be used when committing to CDash.
|
||||
@ -163,8 +163,6 @@ SET(EXTRA_DEPS "")
|
||||
# Set CTest Properties
|
||||
################################
|
||||
|
||||
|
||||
|
||||
ENABLE_TESTING()
|
||||
INCLUDE(CTest)
|
||||
|
||||
@ -262,6 +260,7 @@ ENDIF()
|
||||
#####
|
||||
# System inspection checks
|
||||
#####
|
||||
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}/include)
|
||||
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/include)
|
||||
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/oc2)
|
||||
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/libsrc)
|
||||
@ -748,7 +747,7 @@ IF(USE_HDF5)
|
||||
SET(CMAKE_REQUIRED_LIBRARIES ${SZIP_LIBRARY} ${CMAKE_REQUIRED_LIBRARIES})
|
||||
MESSAGE(STATUS "HDF5 has szip.")
|
||||
ENDIF()
|
||||
|
||||
|
||||
# Find out if HDF5 was built with parallel support.
|
||||
# Do that by checking for the targets H5Pget_fapl_mpiposx and
|
||||
# H5Pget_fapl_mpio in ${HDF5_LIB}.
|
||||
@ -766,11 +765,39 @@ IF(USE_HDF5)
|
||||
|
||||
#Check to see if HDF5 library has collective metadata APIs, (HDF5 >= 1.10.0)
|
||||
CHECK_LIBRARY_EXISTS(${HDF5_C_LIBRARY_hdf5} H5Pset_all_coll_metadata_ops "" HDF5_HAS_COLL_METADATA_OPS)
|
||||
CHECK_LIBRARY_EXISTS(${HDF5_C_LIBRARY_hdf5} H5Pset_libver_bounds "" HAVE_H5PSET_LIBVER_BOUNDS)
|
||||
CHECK_LIBRARY_EXISTS(${HDF5_C_LIBRARY_hdf5} H5free_memory "" HAVE_H5FREE_MEMORY)
|
||||
CHECK_LIBRARY_EXISTS(${HDF5_C_LIBRARY_hdf5} H5allocate_memory "" HAVE_H5ALLOCATE_MEMORY)
|
||||
CHECK_LIBRARY_EXISTS(${HDF5_C_LIBRARY_hdf5} H5resize_memory "" HAVE_H5RESIZE_MEMORY)
|
||||
|
||||
##
|
||||
# Starting with libhdf5 1.12.0, we need to specify the option
|
||||
# `--with-default-api-version=v18` when configuring libhdf5. Otherwise,
|
||||
# the symbol H5Literate is not found. Check for this and return an error if it's not found.
|
||||
#
|
||||
# We first check for the symbol in the library, for versions 1.8.x and 1.10.x. If this fails,
|
||||
# we must then check for its usage as a macro (version 1.12.x).
|
||||
##
|
||||
|
||||
CHECK_LIBRARY_EXISTS(${HDF5_C_LIBRARY_hdf5} H5Literate "" HAVE_H5Literate)
|
||||
|
||||
IF(NOT HAVE_H5Literate)
|
||||
CHECK_C_SOURCE_COMPILES("#include <H5public.h>
|
||||
#if !(H5Literate_vers == 1)
|
||||
#error
|
||||
#endif
|
||||
int main() {int x = 1;}" HAVE_H5Literate_Macro)
|
||||
ELSE()
|
||||
SET(HAVE_H5Literate_Macro 1)
|
||||
ENDIF(NOT HAVE_H5Literate)
|
||||
|
||||
IF(NOT HAVE_H5Literate_Macro)
|
||||
MESSAGE(FATAL_ERROR "${HDF5_C_LIBRARY_hdf5} does not contain symbol '_H5Literate'. Please recompile your libhdf5 install using '--with-default-api-version=v18'.")
|
||||
ENDIF(NOT HAVE_H5Literate_Macro)
|
||||
|
||||
##
|
||||
# End H5Literate checks
|
||||
##
|
||||
|
||||
IF(HDF5_PARALLEL)
|
||||
SET(HDF5_CC h5pcc)
|
||||
ELSE()
|
||||
@ -804,11 +831,20 @@ IF(USE_HDF5)
|
||||
|
||||
# Check to see if HDF5 library is 1.10.6 or greater.
|
||||
# Used to control path name conversion
|
||||
IF(${HDF5_VERSION} VERSION_LESS "1.10.6")
|
||||
SET(HDF5_UTF8_PATHS FALSE)
|
||||
ELSE()
|
||||
SET(HDF5_UTF8_PATHS TRUE)
|
||||
ENDIF()
|
||||
# Check HDF5 version
|
||||
SET(HDF5_UTF8_PATHS OFF)
|
||||
CHECK_C_SOURCE_COMPILES("
|
||||
#include <H5public.h>
|
||||
int main() {
|
||||
#if (H5_VERS_MAJOR*10000 + H5_VERS_MINOR*100 + H5_VERS_RELEASE < 11006)
|
||||
choke me;
|
||||
#endif
|
||||
}" HDF5_VERSION_1106)
|
||||
|
||||
IF(HDF5_VERSION_1106)
|
||||
SET(HDF5_UTF8_PATHS ON)
|
||||
ENDIF(HDF5_VERSION_1106)
|
||||
|
||||
MESSAGE("-- Checking for HDF5 version 1.10.6 or later: ${HDF5_UTF8_PATHS}")
|
||||
|
||||
SET(H5_USE_16_API 1)
|
||||
@ -842,18 +878,6 @@ IF(USE_HDF5)
|
||||
#option to include HDF5 High Level header file (hdf5_hl.h) in case we are not doing a make install
|
||||
INCLUDE_DIRECTORIES(${HDF5_HL_INCLUDE_DIR})
|
||||
|
||||
# Check HDF5 version
|
||||
CHECK_C_SOURCE_COMPILES("
|
||||
#include <H5public.h>
|
||||
int main() {
|
||||
#if (H5_VERS_MAJOR*10000 + H5_VERS_MINOR*100 + H5_VERS_RELEASE < 11006)
|
||||
choke me;
|
||||
#endif
|
||||
}" HDF5_VERSION_1106)
|
||||
|
||||
IF(HDF5_VERSION_1106)
|
||||
SET(HDF5_UTF8_PATHS ON)
|
||||
ENDIF()
|
||||
|
||||
ENDIF(USE_HDF5)
|
||||
|
||||
@ -2207,6 +2231,19 @@ configure_file(
|
||||
${netCDF_BINARY_DIR}/include/netcdf_meta.h @ONLY)
|
||||
|
||||
#####
|
||||
# Create 'netcdf_dispatch.h' include file.
|
||||
#####
|
||||
configure_file(
|
||||
${netCDF_SOURCE_DIR}/include/netcdf_dispatch.h.in
|
||||
${netCDF_BINARY_DIR}/include/netcdf_dispatch.h @ONLY NEWLINE_STYLE LF)
|
||||
|
||||
# Used in the `configure_file` calls below
|
||||
SET(ISCMAKE "1")
|
||||
IF(MSVC)
|
||||
SET(ISMSVC "1")
|
||||
ENDIF()
|
||||
|
||||
####
|
||||
# Build test_common.sh
|
||||
#####
|
||||
SET(EXTRA_DIST ${EXTRA_DIST} ${CMAKE_CURRENT_SOURCE_DIR}/test_common.in)
|
||||
@ -2215,15 +2252,9 @@ SET(TOPBUILDDIR "${CMAKE_CURRENT_BINARY_DIR}")
|
||||
SET(ISMSVC "${MSVC}")
|
||||
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/test_common.in ${CMAKE_CURRENT_BINARY_DIR}/test_common.sh @ONLY NEWLINE_STYLE LF)
|
||||
|
||||
|
||||
#####
|
||||
# Build nc_test4/findplugin.sh
|
||||
#####
|
||||
SET(ISCMAKE "1")
|
||||
IF(MSVC)
|
||||
SET(ISMSVC "1")
|
||||
ENDIF()
|
||||
|
||||
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/nc_test4/findplugin.in ${CMAKE_CURRENT_BINARY_DIR}/nc_test4/findplugin.sh @ONLY NEWLINE_STYLE LF)
|
||||
|
||||
IF(ENABLE_EXAMPLES)
|
||||
|
@ -4,9 +4,13 @@ Release Notes {#RELEASE_NOTES}
|
||||
\brief Release notes file for the netcdf-c package.
|
||||
|
||||
This file contains a high-level description of this package's evolution. Releases are in reverse chronological order (most recent first). Note that, as of netcdf 4.2, the `netcdf-c++` and `netcdf-fortran` libraries have been separated into their own libraries.
|
||||
## 4.8.1 - TBD
|
||||
|
||||
## 4.8.0 - TBD
|
||||
* [Bug Fix] Corrected HDF5 version detection logic as described in [Github #1962](https://github.com/Unidata/netcdf-c/issues/1962).
|
||||
|
||||
## 4.8.0 - March 30, 2021
|
||||
|
||||
* [Enhancement] Bump the NC_DISPATCH_VERSION from 2 to 3, and as a side effect, unify the definition of NC_DISPATCH_VERSION so it only needs to be defined in CMakeLists.txt and configure.ac. See [Github #1945](https://github.com/Unidata/netcdf-c/pull/1945) for more information.
|
||||
* [Enhancement] Provide better cross platform path name management. This converts paths for various platforms (e.g. Windows, MSYS, etc.) so that they are in the proper format for the executing platform. See [Github #1958](https://github.com/Unidata/netcdf-c/pull/1958) for more information.
|
||||
* [Bug Fixes] The nccopy program was treating -d0 as turning deflation on rather than interpreting it as "turn off deflation". See [Github #1944](https://github.com/Unidata/netcdf-c/pull/1944) for more information.
|
||||
* [Enhancement] Add support for storing NCZarr data in zip files. See [Github #1942](https://github.com/Unidata/netcdf-c/pull/1942) for more information.
|
||||
|
@ -256,9 +256,6 @@ are set when opening a binary file on Windows. */
|
||||
/* Define to 1 if you have the `gettimeofday' function. */
|
||||
#cmakedefine HAVE_STRUCT_TIMESPEC 1
|
||||
|
||||
/* if true, netcdf4 file properties will be set using H5Pset_libver_bounds */
|
||||
#cmakedefine HAVE_H5PSET_LIBVER_BOUNDS 1
|
||||
|
||||
/* Define to 1 if you have the `H5Z_SZIP' function. */
|
||||
#cmakedefine HAVE_H5Z_SZIP 1
|
||||
|
||||
@ -463,6 +460,9 @@ with zip */
|
||||
/* Add extra properties to _NCProperties attribute */
|
||||
#cmakedefine NCPROPERTIES_EXTRA ${NCPROPERTIES_EXTRA}
|
||||
|
||||
/* Idspatch table version */
|
||||
#cmakedefine NC_DISPATCH_VERSION ${NC_DISPATCH_VERSION}
|
||||
|
||||
/* no IEEE float on this platform */
|
||||
#cmakedefine NO_IEEE_FLOAT 1
|
||||
|
||||
|
24
configure.ac
24
configure.ac
@ -10,7 +10,7 @@
|
||||
AC_PREREQ([2.59])
|
||||
|
||||
# Initialize with name, version, and support email address.
|
||||
AC_INIT([netCDF], [4.8.0-development], [support-netcdf@unidata.ucar.edu], [netcdf-c])
|
||||
AC_INIT([netCDF], [4.8.1-development], [support-netcdf@unidata.ucar.edu], [netcdf-c])
|
||||
|
||||
##
|
||||
# Prefer an empty CFLAGS variable instead of the default -g -O2.
|
||||
@ -21,7 +21,7 @@ AC_INIT([netCDF], [4.8.0-development], [support-netcdf@unidata.ucar.edu], [netcd
|
||||
|
||||
AC_SUBST([NC_VERSION_MAJOR]) NC_VERSION_MAJOR=4
|
||||
AC_SUBST([NC_VERSION_MINOR]) NC_VERSION_MINOR=8
|
||||
AC_SUBST([NC_VERSION_PATCH]) NC_VERSION_PATCH=0
|
||||
AC_SUBST([NC_VERSION_PATCH]) NC_VERSION_PATCH=1
|
||||
AC_SUBST([NC_VERSION_NOTE]) NC_VERSION_NOTE="-development"
|
||||
|
||||
#####
|
||||
@ -1216,7 +1216,20 @@ if test "x$enable_hdf5" = xyes; then
|
||||
|
||||
# H5Pset_fapl_mpiposix and H5Pget_fapl_mpiposix have been removed since HDF5 1.8.12.
|
||||
# Use H5Pset_fapl_mpio and H5Pget_fapl_mpio, instead.
|
||||
AC_CHECK_FUNCS([H5Pget_fapl_mpio H5Pset_deflate H5Z_SZIP H5free_memory H5resize_memory H5allocate_memory H5Pset_libver_bounds H5Pset_all_coll_metadata_ops])
|
||||
|
||||
AC_CHECK_FUNCS([H5Pget_fapl_mpio H5Pset_deflate H5Z_SZIP H5free_memory H5resize_memory H5allocate_memory H5Pset_all_coll_metadata_ops H5Literate])
|
||||
|
||||
# Check to see if HDF5 library has H5Literate (HDF5 1.8.x, 1.10.x)
|
||||
if test "x$ac_cv_func_H5Literate" = xno; then
|
||||
AC_MSG_CHECKING([for H5Literate macro])
|
||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include "H5public.h"],
|
||||
[[#if !(H5Literate_vers == 1)
|
||||
# error
|
||||
#endif]
|
||||
])], [], [AC_MSG_RESULT(no); AC_MSG_ERROR([HDF5 was not built with API compatibility version v18. Please recompile your libhdf5 install using '--with-default-api-version=v18'.])])
|
||||
AC_MSG_RESULT(yes)
|
||||
fi
|
||||
|
||||
|
||||
# Check to see if HDF5 library has collective metadata APIs, (HDF5 >= 1.10.0)
|
||||
if test "x$ac_cv_func_H5Pset_all_coll_metadata_ops" = xyes; then
|
||||
@ -1689,7 +1702,9 @@ AX_SET_META([NC_HAS_MULTIFILTERS],[$has_multifilters],[yes])
|
||||
# applications like PIO can determine whether they have an appropriate
|
||||
# dispatch table to submit. If this is changed, make sure the value in
|
||||
# CMakeLists.txt also changes to match.
|
||||
AC_SUBST([NC_DISPATCH_VERSION], [2])
|
||||
|
||||
AC_SUBST([NC_DISPATCH_VERSION], [3])
|
||||
AC_DEFINE_UNQUOTED([NC_DISPATCH_VERSION], [${NC_DISPATCH_VERSION}], [Dispatch table version.])
|
||||
|
||||
#####
|
||||
# End netcdf_meta.h definitions.
|
||||
@ -1723,6 +1738,7 @@ AC_CONFIG_FILES([Makefile
|
||||
libnetcdf.settings
|
||||
postinstall.sh
|
||||
include/netcdf_meta.h
|
||||
include/netcdf_dispatch.h
|
||||
include/Makefile
|
||||
h5_test/Makefile
|
||||
hdf4_test/Makefile
|
||||
|
@ -38,7 +38,7 @@ PROJECT_NAME = netCDF-C
|
||||
# could be handy for archiving the generated documentation or if some version
|
||||
# control system is used.
|
||||
|
||||
PROJECT_NUMBER = 4.8.0-development
|
||||
PROJECT_NUMBER = 4.8.1-development
|
||||
|
||||
# Using the PROJECT_BRIEF tag one can provide an optional one line description
|
||||
# for a project that appears at the top of each page and should give viewer a
|
||||
@ -2083,7 +2083,7 @@ HAVE_DOT = YES
|
||||
# Minimum value: 0, maximum value: 32, default value: 0.
|
||||
# This tag requires that the tag HAVE_DOT is set to YES.
|
||||
|
||||
DOT_NUM_THREADS = 4
|
||||
DOT_NUM_THREADS = 0
|
||||
|
||||
# When you want a differently looking font n the dot files that doxygen
|
||||
# generates you can specify the font name using DOT_FONTNAME. You need to make
|
||||
|
@ -786,7 +786,6 @@ INPUT = \
|
||||
@abs_top_srcdir@/libdispatch/derror.c \
|
||||
@abs_top_srcdir@/libdispatch/dv2i.c \
|
||||
@abs_top_srcdir@/libdispatch/dcopy.c \
|
||||
@abs_top_srcdir@/libhdf5/hdf5file.c \
|
||||
@abs_top_srcdir@/libsrc4/nc4var.c \
|
||||
@abs_top_srcdir@/libhdf5/nc4hdf.c \
|
||||
@abs_top_srcdir@/libsrc4/nc4internal.c \
|
||||
@ -796,8 +795,8 @@ INPUT = \
|
||||
@abs_top_srcdir@/libsrc4/nc4dim.c \
|
||||
@abs_top_srcdir@/libsrc4/nc4attr.c \
|
||||
@abs_top_srcdir@/libhdf5/nc4info.c \
|
||||
@abs_top_srcdir@/libhdf5/hdf5cache.c \
|
||||
@abs_top_srcdir@/libsrc4/nc4dispatch.c \
|
||||
@abs_top_srcdir@/libnczarr/zarr.c \
|
||||
@abs_top_srcdir@/examples/C/simple_xy_wr.c \
|
||||
@abs_top_srcdir@/examples/C/simple_xy_rd.c \
|
||||
@abs_top_srcdir@/examples/C/sfc_pres_temp_wr.c \
|
||||
|
@ -209,11 +209,7 @@ main()
|
||||
hid_t file_typeid1[NUM_OBJ_1], native_typeid1[NUM_OBJ_1];
|
||||
hid_t file_typeid2, native_typeid2;
|
||||
hsize_t num_obj;
|
||||
#if H5_VERSION_GE(1,12,0)
|
||||
H5O_info2_t obj_info;
|
||||
#else
|
||||
H5O_info_t obj_info;
|
||||
#endif
|
||||
char obj_name[STR_LEN + 1];
|
||||
hsize_t dims[1] = {ATT_LEN}; /* netcdf attributes always 1-D. */
|
||||
|
||||
|
@ -28,7 +28,7 @@ INSTALL(FILES ${netCDF_SOURCE_DIR}/include/netcdf_filter.h
|
||||
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
|
||||
COMPONENT headers)
|
||||
|
||||
INSTALL(FILES ${netCDF_SOURCE_DIR}/include/netcdf_dispatch.h
|
||||
INSTALL(FILES ${netCDF_BINARY_DIR}/include/netcdf_dispatch.h
|
||||
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
|
||||
COMPONENT headers)
|
||||
|
||||
|
@ -29,4 +29,4 @@ if ENABLE_BYTERANGE
|
||||
noinst_HEADERS += nchttp.h
|
||||
endif
|
||||
|
||||
EXTRA_DIST = CMakeLists.txt XGetopt.h netcdf_meta.h.in
|
||||
EXTRA_DIST = CMakeLists.txt XGetopt.h netcdf_meta.h.in netcdf_dispatch.h.in
|
||||
|
@ -80,9 +80,6 @@
|
||||
#define ATOMICTYPEMAX3 NC_DOUBLE
|
||||
#define ATOMICTYPEMAX5 NC_UINT64
|
||||
|
||||
/* Define an alias for int to indicate an error return */
|
||||
typedef int NCerror;
|
||||
|
||||
#if !defined HDF5_PARALLEL && !defined USE_PNETCDF
|
||||
typedef int MPI_Comm;
|
||||
typedef int MPI_Info;
|
||||
|
@ -23,7 +23,7 @@ typedef struct NC_HTTP_STATE {
|
||||
char errbuf[1024]; /* assert(CURL_ERROR_SIZE <= 1024) */
|
||||
} NC_HTTP_STATE;
|
||||
|
||||
extern int nc_http_open(const char* objecturl, NC_HTTP_STATE** state, size64_t* lenp);
|
||||
extern int nc_http_open(const char* objecturl, NC_HTTP_STATE** state, long long* lenp);
|
||||
extern int nc_http_size(NC_HTTP_STATE* state, const char* url, size64_t* sizep);
|
||||
extern int nc_http_read(NC_HTTP_STATE* state, const char* url, size64_t start, size64_t count, NCbytes* buf);
|
||||
extern int nc_http_close(NC_HTTP_STATE* state);
|
||||
|
@ -94,6 +94,8 @@ This means it is ok to call it repeatedly with no harm.
|
||||
*/
|
||||
EXTERNL char* NCpathcvt(const char* path);
|
||||
|
||||
EXTERNL int NChasdriveletter(const char* path);
|
||||
|
||||
/* Canonicalize and make absolute by prefixing the current working directory */
|
||||
EXTERNL char* NCpathabsolute(const char* name);
|
||||
|
||||
@ -154,7 +156,7 @@ EXTERNL int NCclosedir(DIR* ent);
|
||||
#define NCPD_UNKNOWN 0
|
||||
#define NCPD_NIX 1
|
||||
#define NCPD_MSYS 2
|
||||
#define NCPD_CYGWIN 3
|
||||
#define NCPD_CYGWIN 3
|
||||
#define NCPD_WIN 4
|
||||
#define NCPD_REL 5 /* actual kind is unknown */
|
||||
|
||||
|
@ -25,7 +25,9 @@
|
||||
|
||||
/* This is the version of the dispatch table. It should be changed
|
||||
* when new functions are added to the dispatch table. */
|
||||
#define NC_DISPATCH_VERSION 3
|
||||
#ifndef NC_DISPATCH_VERSION
|
||||
#define NC_DISPATCH_VERSION @NC_DISPATCH_VERSION@
|
||||
#endif /*NC_DISPATCH_VERSION*/
|
||||
|
||||
/* This is the dispatch table, with a pointer to each netCDF
|
||||
* function. */
|
@ -32,6 +32,7 @@
|
||||
#include "oc.h"
|
||||
|
||||
#include "ncdap.h"
|
||||
#include "nccommon.h"
|
||||
#include "dapdebug.h"
|
||||
#include "daputil.h"
|
||||
|
||||
@ -47,7 +48,6 @@ struct NCsegment;
|
||||
|
||||
/**************************************************/
|
||||
|
||||
#include "nccommon.h"
|
||||
#include "getvara.h"
|
||||
#include "constraints.h"
|
||||
|
||||
|
@ -435,7 +435,7 @@ simplepathstring(NClist* names, char* separator)
|
||||
/* Define a number of location tests */
|
||||
|
||||
/* Is node contained (transitively) in a sequence ? */
|
||||
BOOL
|
||||
int
|
||||
dapinsequence(CDFnode* node)
|
||||
{
|
||||
if(node == NULL || node->container == NULL) return TRUE;
|
||||
@ -446,7 +446,7 @@ dapinsequence(CDFnode* node)
|
||||
}
|
||||
|
||||
/* Is node contained (transitively) in a structure array */
|
||||
BOOL
|
||||
int
|
||||
dapinstructarray(CDFnode* node)
|
||||
{
|
||||
if(node == NULL) return TRUE;
|
||||
@ -459,7 +459,7 @@ dapinstructarray(CDFnode* node)
|
||||
}
|
||||
|
||||
/* Is node a map field of a grid? */
|
||||
BOOL
|
||||
int
|
||||
dapgridmap(CDFnode* node)
|
||||
{
|
||||
if(node != NULL && node->container != NULL
|
||||
@ -471,7 +471,7 @@ dapgridmap(CDFnode* node)
|
||||
}
|
||||
|
||||
/* Is node an array field of a grid? */
|
||||
BOOL
|
||||
int
|
||||
dapgridarray(CDFnode* node)
|
||||
{
|
||||
if(node != NULL && node->container != NULL
|
||||
@ -482,7 +482,7 @@ dapgridarray(CDFnode* node)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
BOOL
|
||||
int
|
||||
dapgridelement(CDFnode* node)
|
||||
{
|
||||
return dapgridarray(node)
|
||||
@ -490,7 +490,7 @@ dapgridelement(CDFnode* node)
|
||||
}
|
||||
|
||||
/* Is node a top-level grid node? */
|
||||
BOOL
|
||||
int
|
||||
daptopgrid(CDFnode* grid)
|
||||
{
|
||||
if(grid == NULL || grid->nctype != NC_Grid) return FALSE;
|
||||
@ -498,7 +498,7 @@ daptopgrid(CDFnode* grid)
|
||||
}
|
||||
|
||||
/* Is node a top-level sequence node? */
|
||||
BOOL
|
||||
int
|
||||
daptopseq(CDFnode* seq)
|
||||
{
|
||||
if(seq == NULL || seq->nctype != NC_Sequence) return FALSE;
|
||||
@ -506,7 +506,7 @@ daptopseq(CDFnode* seq)
|
||||
}
|
||||
|
||||
/* Is node a top-level node? */
|
||||
BOOL
|
||||
int
|
||||
daptoplevel(CDFnode* node)
|
||||
{
|
||||
if(node->container == NULL
|
||||
|
@ -9,14 +9,14 @@
|
||||
#include "dapincludes.h"
|
||||
|
||||
/* Mnemonics */
|
||||
#ifndef BOOL
|
||||
#define BOOL int
|
||||
#endif
|
||||
#ifndef TRUE
|
||||
#define TRUE 1
|
||||
#define FALSE 0
|
||||
#endif
|
||||
|
||||
/* Define an alias for int to indicate an error return */
|
||||
typedef int NCerror;
|
||||
|
||||
#ifndef nullfree
|
||||
#define nullfree(m) {if((m)!=NULL) {free(m);} else {}}
|
||||
#endif
|
||||
@ -206,7 +206,7 @@ typedef struct NCD2alignment {
|
||||
} NCD2alignment;
|
||||
|
||||
typedef struct NCtypesize {
|
||||
BOOL aligned; /* have instance and field been defined? */
|
||||
int aligned; /* have instance and field been defined? */
|
||||
NCD2alignment instance; /* Alignment, etc for instance data */
|
||||
NCD2alignment field; /* Alignment, etc WRT to parent */
|
||||
} NCtypesize;
|
||||
@ -232,13 +232,13 @@ typedef struct CDFnode {
|
||||
int ncid; /* relevant NC id for this object*/
|
||||
unsigned long maxstringlength;
|
||||
unsigned long sequencelimit; /* 0=>unlimited */
|
||||
BOOL usesequence; /* If this sequence is usable */
|
||||
BOOL elided; /* 1 => node does not partipate in naming*/
|
||||
int usesequence; /* If this sequence is usable */
|
||||
int elided; /* 1 => node does not partipate in naming*/
|
||||
struct CDFnode* basenode; /* derived tree map to pattern tree */
|
||||
BOOL invisible; /* 1 => do not show to user */
|
||||
BOOL zerodim; /* 1 => node has a zero dimension */
|
||||
int invisible; /* 1 => do not show to user */
|
||||
int zerodim; /* 1 => node has a zero dimension */
|
||||
/* These two flags track the effects on grids of constraints */
|
||||
BOOL nc_virtual; /* node added by regrid */
|
||||
int nc_virtual; /* node added by regrid */
|
||||
struct CDFnode* attachment; /* DDS<->DATADDS cross link*/
|
||||
struct CDFnode* pattern; /* temporary field for regridding */
|
||||
/* Fields for use by libncdap4 */
|
||||
@ -249,8 +249,8 @@ typedef struct CDFnode {
|
||||
char* vlenname; /* for sequence types */
|
||||
int singleton; /* for singleton sequences */
|
||||
unsigned long estimatedsize; /* > 0 Only for var nodes */
|
||||
BOOL whole; /* projected as whole node */
|
||||
BOOL prefetchable; /* eligible to be prefetched (if whole) */
|
||||
int whole; /* projected as whole node */
|
||||
int prefetchable; /* eligible to be prefetched (if whole) */
|
||||
} CDFnode;
|
||||
|
||||
/**************************************************/
|
||||
|
@ -71,18 +71,6 @@ extern int dsp_close(ND4dsp* dsp);
|
||||
/* DSP API */
|
||||
extern int dsp_open(const char* path, ND4dsp** dspp);
|
||||
|
||||
/*
|
||||
extern NCerror dapbuildvaraprojection(CDFnode*,
|
||||
const size_t* startp, const size_t* countp, const ptrdiff_t* stridep,
|
||||
struct DCEprojection** projectionlist);
|
||||
|
||||
extern NCerror NCD4_getvarx(int ncid, int varid,
|
||||
const size_t *startp,
|
||||
const size_t *countp,
|
||||
const ptrdiff_t *stridep,
|
||||
void *data,
|
||||
nc_type dsttype0);
|
||||
*/
|
||||
#endif
|
||||
|
||||
/**************************************************/
|
||||
|
@ -71,7 +71,7 @@ Trace(const char* fcn)
|
||||
*/
|
||||
|
||||
int
|
||||
nc_http_open(const char* objecturl, NC_HTTP_STATE** statep, size64_t* filelenp)
|
||||
nc_http_open(const char* objecturl, NC_HTTP_STATE** statep, long long* filelenp)
|
||||
{
|
||||
int stat = NC_NOERR;
|
||||
int i;
|
||||
|
@ -44,7 +44,7 @@ struct MagicFile {
|
||||
struct NCURI* uri;
|
||||
int omode;
|
||||
NCmodel* model;
|
||||
fileoffset_t filelen;
|
||||
long long filelen;
|
||||
int use_parallel;
|
||||
void* parameters; /* !NULL if inmemory && !diskless */
|
||||
FILE* fp;
|
||||
@ -937,7 +937,7 @@ check_file_type(const char *path, int omode, int use_parallel,
|
||||
if((status = openmagic(&magicinfo))) goto done;
|
||||
|
||||
/* Verify we have a large enough file */
|
||||
if(magicinfo.filelen < MAGIC_NUMBER_LEN)
|
||||
if(magicinfo.filelen < (long long)MAGIC_NUMBER_LEN)
|
||||
{status = NC_ENOTNC; goto done;}
|
||||
if((status = readmagic(&magicinfo,0L,magic)) != NC_NOERR) {
|
||||
status = NC_ENOTNC;
|
||||
|
@ -163,15 +163,19 @@ nc4_create_file(const char *path, int cmode, size_t initialsz,
|
||||
nc4_chunk_cache_preemption));
|
||||
}
|
||||
|
||||
#ifdef HAVE_H5PSET_LIBVER_BOUNDS
|
||||
#if H5_VERSION_GE(1,10,2)
|
||||
if (H5Pset_libver_bounds(fapl_id, H5F_LIBVER_EARLIEST, H5F_LIBVER_V18) < 0)
|
||||
/* lib versions 1.10.2 and higher */
|
||||
if (H5Pset_libver_bounds(fapl_id, H5F_LIBVER_V18, H5F_LIBVER_LATEST) < 0)
|
||||
#else
|
||||
if (H5Pset_libver_bounds(fapl_id, H5F_LIBVER_EARLIEST,
|
||||
H5F_LIBVER_LATEST) < 0)
|
||||
#if H5_VERSION_GE(1,10,0)
|
||||
/* lib versions 1.10.0, 1.10.1 */
|
||||
if (H5Pset_libver_bounds(fapl_id, H5F_LIBVER_EARLIEST, H5F_LIBVER_LATEST) < 0)
|
||||
#else
|
||||
/* all HDF5 1.8 lib versions */
|
||||
if (H5Pset_libver_bounds(fapl_id, H5F_LIBVER_LATEST, H5F_LIBVER_LATEST) < 0)
|
||||
#endif
|
||||
BAIL(NC_EHDFERR);
|
||||
#endif
|
||||
BAIL(NC_EHDFERR);
|
||||
|
||||
/* Create the property list. */
|
||||
if ((fcpl_id = H5Pcreate(H5P_FILE_CREATE)) < 0)
|
||||
|
@ -18,7 +18,7 @@ lib_LTLIBRARIES = libnetcdf.la
|
||||
# for information regarding incrementing `-version-info`.
|
||||
##
|
||||
|
||||
libnetcdf_la_LDFLAGS = -version-info 18:0:0
|
||||
libnetcdf_la_LDFLAGS = -version-info 19:0:0
|
||||
|
||||
libnetcdf_la_CPPFLAGS = ${AM_CPPFLAGS}
|
||||
libnetcdf_la_LIBADD =
|
||||
|
@ -206,8 +206,9 @@ NCZ_transfer(struct Common* common, NCZSlice* slices)
|
||||
common, &chunkodom)))
|
||||
goto done;
|
||||
|
||||
if(wdebug >= 4)
|
||||
if(wdebug >= 4) {
|
||||
fprintf(stderr,"allprojections:\n%s",nczprint_allsliceprojections(common->rank,common->allprojections)); fflush(stderr);
|
||||
}
|
||||
|
||||
wholechunk = iswholechunk(common,slices);
|
||||
|
||||
|
@ -3,6 +3,8 @@
|
||||
if test "x$srcdir" = x ; then srcdir=`pwd`; fi
|
||||
. ../test_common.sh
|
||||
|
||||
set -e
|
||||
|
||||
# Which test cases to exercise
|
||||
API=1
|
||||
NG=1
|
||||
@ -209,13 +211,13 @@ if ! test -f unfiltered.nc ; then
|
||||
fi
|
||||
${NCCOPY} "-F/g/var,307,4|40000" unfiltered.nc nccopyF.nc
|
||||
${NCDUMP} -hs nccopyF.nc > ./nccopyF.cdl
|
||||
sclean nccopyF.cdl nccopyFs.cdl
|
||||
sclean nccopyF.cdl nccopyFs.cdl
|
||||
diff -b -w ${srcdir}/ref_nccopyF.cdl ./nccopyFs.cdl
|
||||
echo "*** ncgen with multiple filters"
|
||||
${NCGEN} -4 -lb -o ncgenF.nc ${srcdir}/ref_nccopyF.cdl
|
||||
# Need to fix name using -n
|
||||
${NCDUMP} -hs -n nccopyF ncgenF.nc > ./ncgenF.cdl
|
||||
sclean ncgenF.cdl ncgenFs.cdl
|
||||
sclean ncgenF.cdl ncgenFs.cdl
|
||||
diff -b -w ${srcdir}/ref_nccopyF.cdl ./ncgenFs.cdl
|
||||
echo "*** Pass: multiple filters"
|
||||
fi
|
||||
@ -256,7 +258,6 @@ rm -f test_bzip2.c
|
||||
rm -f multifilter.nc multi.cdl smulti.cdl
|
||||
rm -f nccopyF.nc nccopyF.cdl ncgenF.nc ncgenF.cdl
|
||||
rm -f ncgenFs.cdl nccopyFs.cdl
|
||||
#rm -f crfilterorder.txt rdfilterorder.txt
|
||||
rm -f crfilterorder.txt rdfilterorder.txt
|
||||
|
||||
exit 0
|
||||
|
||||
|
@ -109,9 +109,11 @@ test "x$STORAGE" = 'xtas:_Storage="chunked";'
|
||||
CHUNKSIZES=`cat tmppds.cdl | sed -e '/tas:_ChunkSizes/p' -ed | tr -d '\t \r'`
|
||||
test "x$CHUNKSIZES" = 'xtas:_ChunkSizes=10,15,20;'
|
||||
|
||||
set -x
|
||||
|
||||
echo "*** Test that nccopy -F var1,none works as intended "
|
||||
${NCGEN} -4 -b -o tst_nofilters.nc $srcdir/ref_tst_nofilters.cdl
|
||||
${NCCOPY} -M0 -4 -F var1,none -c / tst_nofilters.nc tmp_nofilters.nc
|
||||
${NCCOPY} -M0 -4 -F var1,none -c // tst_nofilters.nc tmp_nofilters.nc
|
||||
${NCDUMP} -hs tmp_nofilters.nc > tmp_nofilters.cdl
|
||||
STORAGE=`cat tmp_nofilters.cdl | sed -e '/var1:_Storage/p' -ed | tr -d '\t \r'`
|
||||
test "x$STORAGE" = 'xvar1:_Storage="contiguous";'
|
||||
@ -120,4 +122,3 @@ test "x$FILTERS" = 'x'
|
||||
|
||||
echo "*** All nccopy tests passed!"
|
||||
exit 0
|
||||
|
||||
|
@ -14,7 +14,7 @@ cleanncprops() {
|
||||
rm -f $dst
|
||||
cat $src \
|
||||
| sed -e '/:_Endianness/d' \
|
||||
| sed -e 's/_SuperblockVersion = 1/_SuperblockVersion = 0/' \
|
||||
| sed -e 's/_SuperblockVersion = [12]/_SuperblockVersion = 0/' \
|
||||
| sed -e 's/\(netcdflibversion\|netcdf\)=.*|/\1=NNNN|/' \
|
||||
| sed -e 's/\(hdf5libversion\|hdf5\)=.*"/\1=HHHH"/' \
|
||||
| grep -v '_NCProperties' \
|
||||
|
@ -14,7 +14,7 @@ cleanncprops() {
|
||||
rm -f $dst
|
||||
cat $src \
|
||||
| sed -e '/:_Endianness/d' \
|
||||
| sed -e 's/_SuperblockVersion = 1/_SuperblockVersion = 0/' \
|
||||
| sed -e 's/_SuperblockVersion = [12]/_SuperblockVersion = 0/' \
|
||||
| sed -e 's/\(netcdflibversion\|netcdf\)=.*|/\1=NNNN|/' \
|
||||
| sed -e 's/\(hdf5libversion\|hdf5\)=.*"/\1=HHHH"/' \
|
||||
| grep -v '_NCProperties' \
|
||||
|
@ -39,7 +39,7 @@ ${NCCOPY} -M0 -c dim0/,dim1/1,dim2/,dim3/1,dim4/,dim5/1,dim6/ tmp_chunks3.nc "$f
|
||||
${NCDUMP} -sh -n tmp "$fileurl" > tmp_chunked.cdl
|
||||
verifychunking tmp_chunked.cdl "ivar:_ChunkSizes=7,1,2,1,5,1,9;" "fvar:_ChunkSizes=9,1,5,1,2,1,7;"
|
||||
chunkclean tmp.cdl tmpx.cdl
|
||||
chunkclean tmp_chunked.cdl tmp_chunkedx.cdl
|
||||
chunkclean tmp_chunked.cdl tmp_chunkedx.cdl
|
||||
diff tmpx.cdl tmp_chunkedx.cdl
|
||||
|
||||
# Note that unchunked means that there is only one chunk
|
||||
@ -48,15 +48,15 @@ fileargs tmp_unchunked
|
||||
${NCCOPY} -M0 -c dim0/,dim1/,dim2/,dim3/,dim4/,dim5/,dim6/ "$SRC" "$fileurl"
|
||||
${NCDUMP} -sh -n tmp "$fileurl" > tmp_unchunked.cdl
|
||||
verifychunking tmp_unchunked.cdl "ivar:_ChunkSizes=7,4,2,3,5,6,9;" "fvar:_ChunkSizes=9,6,5,3,2,4,7;"
|
||||
chunkclean tmp_unchunked.cdl tmp_unchunkedx.cdl
|
||||
chunkclean tmp_unchunked.cdl tmp_unchunkedx.cdl
|
||||
diff tmpx.cdl tmp_unchunkedx.cdl
|
||||
|
||||
# Test -c /
|
||||
fileargs tmp_unchunked2
|
||||
${NCCOPY} -M0 -c "/" "$SRC" "$fileurl"
|
||||
${NCCOPY} -M0 -c "//" "$SRC" "$fileurl"
|
||||
${NCDUMP} -sh -n tmp "$fileurl" > tmp_unchunked2.cdl
|
||||
verifychunking tmp_unchunked.cdl "ivar:_ChunkSizes=7,4,2,3,5,6,9;" "fvar:_ChunkSizes=9,6,5,3,2,4,7;"
|
||||
chunkclean tmp_unchunked.cdl tmp_unchunkedx.cdl
|
||||
chunkclean tmp_unchunked.cdl tmp_unchunkedx.cdl
|
||||
diff tmpx.cdl tmp_unchunkedx.cdl
|
||||
|
||||
echo "*** Test that nccopy -c dim/n is used "
|
||||
@ -80,4 +80,3 @@ if test "x$FEATURE_S3TESTS" = xyes ; then testcase s3; fi
|
||||
|
||||
echo "*** All nccopy nczarr tests passed!"
|
||||
exit 0
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user