Skip to content
Commits on Source (3)
#####
# End ignored generated files.
#####
### 'Normal' gitignore files.
autom4te.cache
debug.txt
......
......@@ -27,7 +27,7 @@ set(PACKAGE "netCDF" CACHE STRING "")
SET(NC_VERSION_MAJOR 4)
SET(NC_VERSION_MINOR 6)
SET(NC_VERSION_PATCH 2)
SET(NC_VERSION_NOTE "-rc2")
SET(NC_VERSION_NOTE "")
SET(netCDF_VERSION ${NC_VERSION_MAJOR}.${NC_VERSION_MINOR}.${NC_VERSION_PATCH}${NC_VERSION_NOTE})
SET(VERSION ${netCDF_VERSION})
SET(NC_VERSION ${netCDF_VERSION})
......@@ -273,7 +273,7 @@ SET(CMAKE_REQUIRED_INCLUDES ${CMAKE_SOURCE_DIR}/libsrc)
# Configuration for post-install RPath
# Adapted from http://www.cmake.org/Wiki/CMake_RPATH_handling
##
IF(NOT MSVC)
IF(NOT MSVC AND BUILD_SHARED_LIBS)
# use, i.e. don't skip the full RPATH for the build tree
SET(CMAKE_SKIP_BUILD_RPATH FALSE)
......@@ -338,6 +338,7 @@ MACRO(specify_static_crt_flag)
SET(vars
CMAKE_C_FLAGS
CMAKE_C_FLAGS_DEBUG
CMAKE_C_FLAGS_RELEASE
CMAKE_C_FLAGS_MINSIZEREL
CMAKE_C_FLAGS_RELWITHDEBINFO
CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG
......
......@@ -5,7 +5,10 @@ Release Notes {#RELEASE_NOTES}
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.6.2 - TBD
## 4.6.2 - November 19, 2018
* [Enhancement] Lazy att read - only read atts when user requests one of them. See [GitHub #857](https://github.com/Unidata/netcdf-c/issues/857).
* [Enhancement] Fast global att read - when global atts are read, they are read much more quickly. See [GitHub #857](https://github.com/Unidata/netcdf-c/issues/857).
## 4.6.2-rc2 November 1, 2018
......
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.69 for netCDF 4.6.2-rc2.
# Generated by GNU Autoconf 2.69 for netCDF 4.6.2.
#
# Report bugs to <support-netcdf@unidata.ucar.edu>.
#
......@@ -589,9 +589,9 @@ MAKEFLAGS=
 
# Identity of this package.
PACKAGE_NAME='netCDF'
PACKAGE_TARNAME='netcdf'
PACKAGE_VERSION='4.6.2-rc2'
PACKAGE_STRING='netCDF 4.6.2-rc2'
PACKAGE_TARNAME='netcdf-c'
PACKAGE_VERSION='4.6.2'
PACKAGE_STRING='netCDF 4.6.2'
PACKAGE_BUGREPORT='support-netcdf@unidata.ucar.edu'
PACKAGE_URL=''
 
......@@ -1546,7 +1546,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
\`configure' configures netCDF 4.6.2-rc2 to adapt to many kinds of systems.
\`configure' configures netCDF 4.6.2 to adapt to many kinds of systems.
 
Usage: $0 [OPTION]... [VAR=VALUE]...
 
......@@ -1594,7 +1594,7 @@ Fine tuning of the installation directories:
--infodir=DIR info documentation [DATAROOTDIR/info]
--localedir=DIR locale-dependent data [DATAROOTDIR/locale]
--mandir=DIR man documentation [DATAROOTDIR/man]
--docdir=DIR documentation root [DATAROOTDIR/doc/netcdf]
--docdir=DIR documentation root [DATAROOTDIR/doc/netcdf-c]
--htmldir=DIR html documentation [DOCDIR]
--dvidir=DIR dvi documentation [DOCDIR]
--pdfdir=DIR pdf documentation [DOCDIR]
......@@ -1617,7 +1617,7 @@ fi
 
if test -n "$ac_init_help"; then
case $ac_init_help in
short | recursive ) echo "Configuration of netCDF 4.6.2-rc2:";;
short | recursive ) echo "Configuration of netCDF 4.6.2:";;
esac
cat <<\_ACEOF
 
......@@ -1871,7 +1871,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
netCDF configure 4.6.2-rc2
netCDF configure 4.6.2
generated by GNU Autoconf 2.69
 
Copyright (C) 2012 Free Software Foundation, Inc.
......@@ -2580,7 +2580,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
 
It was created by netCDF $as_me 4.6.2-rc2, which was
It was created by netCDF $as_me 4.6.2, which was
generated by GNU Autoconf 2.69. Invocation command line was
 
$ $0 $@
......@@ -2939,7 +2939,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
NC_VERSION_MAJOR=4
NC_VERSION_MINOR=6
NC_VERSION_PATCH=2
NC_VERSION_NOTE="-rc2"
NC_VERSION_NOTE=""
 
#####
# Set some variables used to generate a libnetcdf.settings file,
......@@ -2948,11 +2948,11 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
# Create the VERSION file, which contains the package version from
# AC_INIT.
echo 4.6.2-rc2>VERSION
echo 4.6.2>VERSION
 
 
{ $as_echo "$as_me:${as_lineno-$LINENO}: netCDF 4.6.2-rc2" >&5
$as_echo "$as_me: netCDF 4.6.2-rc2" >&6;}
{ $as_echo "$as_me:${as_lineno-$LINENO}: netCDF 4.6.2" >&5
$as_echo "$as_me: netCDF 4.6.2" >&6;}
 
# Keep libtool macros in an m4 directory.
 
......@@ -3615,8 +3615,8 @@ fi
 
 
# Define the identity of the package.
PACKAGE='netcdf'
VERSION='4.6.2-rc2'
PACKAGE='netcdf-c'
VERSION='4.6.2'
 
 
cat >>confdefs.h <<_ACEOF
......@@ -4608,20 +4608,7 @@ test "x$enable_dap" = xno || enable_dap=yes
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_dap" >&5
$as_echo "$enable_dap" >&6; }
 
# --enable-dap => enable-dap4
enable_dap4=$enable_dap
# Curl support is required if and only if any of these flags are set:
# 1. --enable-dap
if test "x$enable_dap" = "xyes" ; then
require_curl=yes
else
require_curl=no
fi
# See if the user provided us with a curl library
# Do an initial lib test for curl, but suppress the default action
# We need curl for DAP.
DEPDIR="${am__leading_dot}deps"
 
ac_config_commands="$ac_config_commands depfiles"
......@@ -5704,16 +5691,7 @@ else
found_curl=no
fi
 
# If curl is required but there is no curl, then complain
if test $require_curl = yes ; then
if test $found_curl = no ; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: libcurl not found; disabling remote protocol(s) support" >&5
$as_echo "$as_me: libcurl not found; disabling remote protocol(s) support" >&6;}
enable_dap=no
enable_dap4=no
elif test $found_curl = yes ; then
# Redo the check lib to actually add -lcurl
#AC_CHECK_LIB([curl], [curl_easy_setopt])
if test "x$enable_dap" = "xyes" ; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing curl_easy_setopt" >&5
$as_echo_n "checking for library containing curl_easy_setopt... " >&6; }
if ${ac_cv_search_curl_easy_setopt+:} false; then :
......@@ -5768,11 +5746,14 @@ ac_res=$ac_cv_search_curl_easy_setopt
if test "$ac_res" != no; then :
test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
 
else
as_fn_error $? "curl required for remote access. Install curl or build with --disable-dap." "$LINENO" 5
fi
 
fi
fi
 
# --enable-dap => enable-dap4
enable_dap4=$enable_dap
# Default is now to always do the short remote tests
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether dap remote testing should be enabled (default on)" >&5
$as_echo_n "checking whether dap remote testing should be enabled (default on)... " >&6; }
......@@ -17704,6 +17685,118 @@ else
DAP clients with --disable-netcdf-4 --disable-dap, or see config.log for errors." "$LINENO" 5
fi
 
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing SZ_Compress" >&5
$as_echo_n "checking for library containing SZ_Compress... " >&6; }
if ${ac_cv_search_SZ_Compress+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_func_search_save_LIBS=$LIBS
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
#ifdef __cplusplus
extern "C"
#endif
char SZ_Compress ();
int
main ()
{
return SZ_Compress ();
;
return 0;
}
_ACEOF
for ac_lib in '' szip sz; do
if test -z "$ac_lib"; then
ac_res="none required"
else
ac_res=-l$ac_lib
LIBS="-l$ac_lib $ac_func_search_save_LIBS"
fi
if ac_fn_c_try_link "$LINENO"; then :
ac_cv_search_SZ_Compress=$ac_res
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext
if ${ac_cv_search_SZ_Compress+:} false; then :
break
fi
done
if ${ac_cv_search_SZ_Compress+:} false; then :
else
ac_cv_search_SZ_Compress=no
fi
rm conftest.$ac_ext
LIBS=$ac_func_search_save_LIBS
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_SZ_Compress" >&5
$as_echo "$ac_cv_search_SZ_Compress" >&6; }
ac_res=$ac_cv_search_SZ_Compress
if test "$ac_res" != no; then :
test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing dlopen" >&5
$as_echo_n "checking for library containing dlopen... " >&6; }
if ${ac_cv_search_dlopen+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_func_search_save_LIBS=$LIBS
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
#ifdef __cplusplus
extern "C"
#endif
char dlopen ();
int
main ()
{
return dlopen ();
;
return 0;
}
_ACEOF
for ac_lib in '' dl dld; do
if test -z "$ac_lib"; then
ac_res="none required"
else
ac_res=-l$ac_lib
LIBS="-l$ac_lib $ac_func_search_save_LIBS"
fi
if ac_fn_c_try_link "$LINENO"; then :
ac_cv_search_dlopen=$ac_res
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext
if ${ac_cv_search_dlopen+:} false; then :
break
fi
done
if ${ac_cv_search_dlopen+:} false; then :
else
ac_cv_search_dlopen=no
fi
rm conftest.$ac_ext
LIBS=$ac_func_search_save_LIBS
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dlopen" >&5
$as_echo "$ac_cv_search_dlopen" >&6; }
ac_res=$ac_cv_search_dlopen
if test "$ac_res" != no; then :
test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
fi
fi
 
# We need the math library
......@@ -17961,74 +18054,18 @@ $as_echo "$hdf5_parallel" >&6; }
fi
fi
 
# The user may have built HDF5 with the SZLIB library.
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether szlib was used when building HDF5" >&5
$as_echo_n "checking whether szlib was used when building HDF5... " >&6; }
enable_szlib=no
if test "x$ac_cv_func_H5Z_SZIP" = xyes; then
enable_szlib=yes
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing SZ_Compress" >&5
$as_echo_n "checking for library containing SZ_Compress... " >&6; }
if ${ac_cv_search__SZ_Compress+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_func_search_save_LIBS=$LIBS
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
#ifdef __cplusplus
extern "C"
#endif
char SZ_Compress ();
int
main ()
{
return SZ_Compress ();
;
return 0;
}
_ACEOF
for ac_lib in '' szip sz; do
if test -z "$ac_lib"; then
ac_res="none required"
else
ac_res=-l$ac_lib
LIBS="-l$ac_lib $ac_func_search_save_LIBS"
fi
if ac_fn_c_try_link "$LINENO"; then :
ac_cv_search__SZ_Compress=$ac_res
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext
if ${ac_cv_search__SZ_Compress+:} false; then :
break
fi
done
if ${ac_cv_search__SZ_Compress+:} false; then :
else
ac_cv_search__SZ_Compress=no
fi
rm conftest.$ac_ext
LIBS=$ac_func_search_save_LIBS
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search__SZ_Compress" >&5
$as_echo "$ac_cv_search__SZ_Compress" >&6; }
ac_res=$ac_cv_search__SZ_Compress
if test "$ac_res" != no; then :
test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
fi
 
$as_echo "#define USE_SZIP 1" >>confdefs.h
 
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_szlib" >&5
$as_echo "$enable_szlib" >&6; }
 
if test "x$ac_cv_func_H5free_memory" = xyes; then
 
......@@ -18304,16 +18341,12 @@ fi
 
# Should we provide parallel io for netcdf-4?
if test "x$enable_netcdf_4" = xyes ; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether parallel I/O is enabled for netcdf-4" >&5
$as_echo_n "checking whether parallel I/O is enabled for netcdf-4... " >&6; }
# Check whether --enable-parallel4 was given.
if test "${enable_parallel4+set}" = set; then :
enableval=$enable_parallel4; user_set_parallel4=${enableval}
fi
 
test "x$enable_parallel4" = xno || enable_parallel4=yes
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_parallel4" >&5
$as_echo "$enable_parallel4" >&6; }
 
# If user wants parallel IO for netCDF-4, make sure HDF5 can provide it.
if test "x$enable_parallel4" = xyes; then
......@@ -18331,6 +18364,10 @@ $as_echo "$as_me: WARNING: Parallel io disabled for netcdf-4 because hdf5 does n
else
enable_parallel4=no
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether parallel I/O is enabled for netcdf-4" >&5
$as_echo_n "checking whether parallel I/O is enabled for netcdf-4... " >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_parallel4" >&5
$as_echo "$enable_parallel4" >&6; }
 
# We have already tested for parallel io in netcdf4
# parallel I/O for CDF-1, 2, and 5 files can also be done through PnetCDF
......@@ -20147,7 +20184,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
This file was extended by netCDF $as_me 4.6.2-rc2, which was
This file was extended by netCDF $as_me 4.6.2, which was
generated by GNU Autoconf 2.69. Invocation command line was
 
CONFIG_FILES = $CONFIG_FILES
......@@ -20217,7 +20254,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
netCDF config.status 4.6.2-rc2
netCDF config.status 4.6.2
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
 
......
......@@ -13,7 +13,7 @@
AC_PREREQ([2.59])
# Initialize with name, version, and support email address.
AC_INIT([netCDF], [4.6.2-rc2], [support-netcdf@unidata.ucar.edu])
AC_INIT([netCDF], [4.6.2], [support-netcdf@unidata.ucar.edu], [netcdf-c])
##
# Prefer an empty CFLAGS variable instead of the default -g -O2.
......@@ -25,7 +25,7 @@ AC_INIT([netCDF], [4.6.2-rc2], [support-netcdf@unidata.ucar.edu])
AC_SUBST([NC_VERSION_MAJOR]) NC_VERSION_MAJOR=4
AC_SUBST([NC_VERSION_MINOR]) NC_VERSION_MINOR=6
AC_SUBST([NC_VERSION_PATCH]) NC_VERSION_PATCH=2
AC_SUBST([NC_VERSION_NOTE]) NC_VERSION_NOTE="-rc2"
AC_SUBST([NC_VERSION_NOTE]) NC_VERSION_NOTE=""
#####
# Set some variables used to generate a libnetcdf.settings file,
......@@ -350,34 +350,15 @@ AC_ARG_ENABLE([dap],
test "x$enable_dap" = xno || enable_dap=yes
AC_MSG_RESULT($enable_dap)
# --enable-dap => enable-dap4
enable_dap4=$enable_dap
# Curl support is required if and only if any of these flags are set:
# 1. --enable-dap
if test "x$enable_dap" = "xyes" ; then
require_curl=yes
else
require_curl=no
fi
# See if the user provided us with a curl library
# Do an initial lib test for curl, but suppress the default action
# We need curl for DAP.
AC_CHECK_LIB([curl],[curl_easy_setopt],[found_curl=yes],[found_curl=no])
# If curl is required but there is no curl, then complain
if test $require_curl = yes ; then
if test $found_curl = no ; then
AC_MSG_NOTICE([libcurl not found; disabling remote protocol(s) support])
enable_dap=no
enable_dap4=no
elif test $found_curl = yes ; then
# Redo the check lib to actually add -lcurl
#AC_CHECK_LIB([curl], [curl_easy_setopt])
AC_SEARCH_LIBS([curl_easy_setopt],[curl curl.dll], [], [])
fi
if test "x$enable_dap" = "xyes" ; then
AC_SEARCH_LIBS([curl_easy_setopt],[curl curl.dll], [],
[AC_MSG_ERROR([curl required for remote access. Install curl or build with --disable-dap.])])
fi
# --enable-dap => enable-dap4
enable_dap4=$enable_dap
# Default is now to always do the short remote tests
AC_MSG_CHECKING([whether dap remote testing should be enabled (default on)])
AC_ARG_ENABLE([dap-remote-tests],
......@@ -1014,6 +995,8 @@ if test "x$enable_netcdf_4" = xyes || test "x$enable_dap" = xyes; then
AC_SEARCH_LIBS([deflate], [zlibwapi zlibstat zlib zlib1 z], [], [
AC_MSG_ERROR([Can't find or link to the z library. Turn off netCDF-4 and \
DAP clients with --disable-netcdf-4 --disable-dap, or see config.log for errors.])])
AC_SEARCH_LIBS([SZ_Compress], [szip sz], [], [])
AC_SEARCH_LIBS([dlopen], [dl dld], [], [])
fi
# We need the math library
......@@ -1070,17 +1053,14 @@ if test "x$enable_netcdf_4" = xyes; then
fi
fi
# The user may have built HDF5 with the SZLIB library.
AC_MSG_CHECKING([whether szlib was used when building HDF5])
enable_szlib=no
if test "x$ac_cv_func_H5Z_SZIP" = xyes; then
enable_szlib=yes
AC_SEARCH_LIBS([ SZ_Compress], [szip sz], [], [])
AC_DEFINE([USE_SZIP], [1], [if true, compile in szip compression in netCDF-4 variables])
fi
AC_MSG_RESULT([$enable_szlib])
if test "x$ac_cv_func_H5free_memory" = xyes; then
AC_DEFINE([HDF5_HAS_H5FREE], [1], [if true, H5free_memory() will be used to free hdf5-allocated memory in nc4file.])
......@@ -1115,13 +1095,11 @@ fi
# Should we provide parallel io for netcdf-4?
if test "x$enable_netcdf_4" = xyes ; then
AC_MSG_CHECKING([whether parallel I/O is enabled for netcdf-4])
AC_ARG_ENABLE([parallel4],
[AS_HELP_STRING([--disable-parallel4],
[disable parallel I/O for netcdf-4, even if it's enabled in libhdf5])],
[user_set_parallel4=${enableval}])
test "x$enable_parallel4" = xno || enable_parallel4=yes
AC_MSG_RESULT($enable_parallel4)
# If user wants parallel IO for netCDF-4, make sure HDF5 can provide it.
if test "x$enable_parallel4" = xyes; then
......@@ -1138,6 +1116,8 @@ if test "x$enable_netcdf_4" = xyes ; then
else
enable_parallel4=no
fi
AC_MSG_CHECKING([whether parallel I/O is enabled for netcdf-4])
AC_MSG_RESULT($enable_parallel4)
# We have already tested for parallel io in netcdf4
# parallel I/O for CDF-1, 2, and 5 files can also be done through PnetCDF
......
......@@ -47,6 +47,8 @@ data:
vo =
0XA2177AA7287C04FA8BB57BCDF76EC80F, 0X34FA472AA9404DD543143CADED303A75 ;
primary_cloud = Stratus, Cirrocumulus, Nimbostratus, Cirrostratus,
Stratocumulus ;
}
......@@ -91,5 +91,3 @@ fi
rm -rf ./results_test_data
finish
netcdf (1:4.6.2-1) UNRELEASED; urgency=medium
* New upstream release.
-- Bas Couwenberg <sebastic@debian.org> Tue, 20 Nov 2018 07:00:00 +0100
netcdf (1:4.6.2~rc2-1~exp1) experimental; urgency=medium
* New upstream release candidate.
......
......@@ -84,6 +84,6 @@ install-fortran.md all-error-codes.md credits.md auth.md
obsolete/fan_utils.html bestpractices.md filters.md indexing.md
inmemory.md DAP2.dox attribute_conventions.md FAQ.md
file_format_specifications.md known_problems.md
COPYRIGHT.dox user_defined_formats.md)
COPYRIGHT.dox user_defined_formats.md DAP4.md DAP4.dox)
ADD_EXTRA_DIST("${CUR_EXTRA_DIST}")
/*! \page dap4 DAP4 Support
/*!
\page dap4 DAP4 Protocol Support
\section dap4_accessing The DAP4 Prototocol
<!-- Note that this file has the .dox extension, but is mostly markdown -->
<!-- Begin MarkDown -->
\tableofcontents
\subsection dap4_introduction DAP4 Introduction
# DAP4 Introduction {#dap4_introduction}
Beginning with netCDF version 4.2.2, optional support is provided for
accessing data through DAP4 servers using the DAP4 protocol.
Beginning with netCDF version 4.5.0, optional support is provided for
accessing data from servers supporting the DAP4 protocol.
DAP4 support is automatically enabled if a usable curl library can be
set using the LDFLAGS environment variable (similar to the way
that the HDF5 libraries are referenced).
DAP2 plus DAP4 support can forcibly be enabled or disabled using the --enable-dap
flag or the --disable-dap flag, respectively. If enabled,
then DAP4 support requires access to the curl library.
Refer to the installation manual for details
DAP4 support is enabled if the _--enable-dap_ option
is used with './configure'. If DAP4 support is enabled, then
a usable version of _libcurl_ must be specified
using the _LDFLAGS_ environment variable (similar to the way
that the _HDF5_ libraries are referenced).
Refer to the installation manual for details.
By default DAP4 support is enabled if _libcurl_ is found.
DAP4 support can be disabled using the _--disable-dap_.
DAP4 uses a data model that is similar to, but not identical with,
DAP4 uses a data model that is, by design, similar to,
but -- for historical reasons -- not identical with,
the netCDF-Enhanced (aka netcdf-4) model.
Generically, the DAP4 data model is encoded in XML document
called a DMR.
......@@ -25,31 +30,30 @@ For detailed information about the DAP4 DMR, refer to
the DAP4 specification Volume 1:
http://docs.opendap.org/index.php/DAP4:_Specification_Volume_1
\subsection dap4_access Accessing Data Using the DAP4 Prototocol
# Accessing Data Using the DAP4 Prototocol {#dap4_accessing_data}
In order to access a DAP4 data source through the netCDF API, the
file name normally used is replaced with a URL with a specific
format. The URL is composed of three parts.
- URL - this is a standard form URL with specific markers to indicate that
it refers to a DAP4 encoded dataset. The markers can be one of the following
examples.
it refers to a DAP4 encoded dataset. The markers are of the form
"dap4", "protocol=dap4", or "/thredds/dap4". The following
examples show how they are specified. Note that the "/thredds/dap4"
case will only work when accessing a Thredds-based server.
+ [dap4]http://remotetest.unidata.ucar.edu/d4ts/test.01
+ [protocol=dap4]http://remotetest.unidata.ucar.edu/d4ts/test.01
+ http://remotetest.unidata.ucar.edu/d4ts/test.01#dap4
+ http://remotetest.unidata.ucar.edu/d4ts/test.01#protocol=dap4
+ dap4://remotetest.unidata.ucar.edu/d4ts/test.01
Note that the last case is converted internally to one of the other forms.
+ http://thredds.ucar.edu/thredds/dap4/...
- Constraints - these are suffixed to the URL and take the form
“?dap4.ce=\<expression\>”. The form of the constraint expression
is somewhat complicated, and the specification should be consulted.
- Client parameters - these may be specified in either of
two ways. The older, deprecated form prefixes text to the
front of the url and is of the the general form [\<name>]
or [\<name>=value]. Examples include [show=fetch].
or [\<name>=value]. Examples include [show=fetch] or [noprefetch].
The newer, preferred form prefixes the
parameters to the end of the url using the semi-standard '#'
format: e.g. http://....#show=fetch&noprefetch.
......@@ -61,19 +65,19 @@ the translation using the "ncdump -h" command to see the
corresponding netCDF-4 representation.
For example, if a web browser is given the following (fictional) URL,
it will return the DMR for the specified dataset
it will return the DMR for the specified dataset (in XML format).
\code
http://remotetest.unidata.ucar.edu/d4ts/test.01.dmr#dap4
http://remotetest.unidata.ucar.edu/d4ts/test.01.dmr.xml#dap4
\endcode
By using the following ncdump command, it is possible to see the
equivalent netCDF-4 translation.
\code
ncdump -h http://remotetest.unidata.ucar.edu/d4ts/test.01#dap4
ncdump -h '[dap4]http://remotetest.unidata.ucar.edu/d4ts/test.01'
\endcode
\subsection dap4_defined_params Defined Client Parameters
# Defined Client Parameters {#dap4_defined_params}
Currently, a limited set of client parameters is
recognized. Parameters not listed here are
......@@ -87,12 +91,23 @@ Parameter Name Legal Values Semantics
of the complete url for every HTTP get request. If logging is
enabled, then this can be helpful in checking to see the access
behavior of the netCDF code.
\subsection dap4_debug Notes on Debugging DAP4 Access
- "translate=nc4" - This parameter causes the netCDF code to look
for specially named elements in the DMR XML in order to
achieve a better translation of the DAP4 meta-data to NetCDF enhanced
metadata.
- "opaquesize=<integer>" - This parameter causes the netCDF code to
convert DAP4 variable size OPAQUE objects to netcdf-4 fixed size
objects and forces all of them to be of the size specified.
- "fillmismatch" - Unfortunately, a number of servers sometimes
fail to make sure that the type of the "_FillValue" attribute of a variable
is the same as the type of the containing variable. Setting this tag
caused the netcdf translation to attempt to fix this mismatch. If not set,
then an error will occur.
# Notes on Debugging DAP4 Access {#dap4_debug}
The DAP4 support has a logging facility.
Note that this is currently separate from the
existing netCDF logging facility. Turning on this logging can
Turning on this logging can
sometimes give important information. Logging can be enabled by
using the client parameter "log" or "log=filename",
where the first case will send log output to standard error and the
......@@ -102,4 +117,138 @@ Users should also be aware that if one is
accessing data over an NFS mount, one may see some .nfsxxxxx files;
those can be ignored.
## HTTP Configuration. {#dap4_http2_config}
Limited support for configuring the http connection is provided via
parameters in the “.daprc” configuration file (aka ".dodsrc").
The relevant .daprc file is
located by first looking in the current working directory, and if not
found, then looking in the directory specified by the “$HOME”
environment variable.
Entries in the .daprc file are of the form:
````
['['<url>']']<key>=<value>
````
That is, it consists of a key name and value pair and optionally
preceded by a url enclosed in square brackets.
For given KEY and URL strings, the value chosen is as follows:
If URL is null, then look for the .daprc entry that has no url prefix
and whose key is same as the KEY for which we are looking.
If the URL is not null, then look for all the .daprc entries that
have a url, URL1, say, and for which URL1 has the same host and port
as URL. All parts of the url's except host and port are ignored.
For example, if URL = http//x.y/a, then it will match
entries of the form
_[http//x.y/a]KEY=VALUE_ or _[http//x.y/b]KEY=VALUE_.
It will not match an entry of the form _[http//x.y:8080]KEY=VALUE
because the second has a port number (8080) different than the URL.
Finally from the set so constructed, choose the first matching entry.
Currently, the supported set of keys (with descriptions) are as
follows.
-# HTTP.VERBOSE
Type: boolean ("1"/"0")
Description: Produce verbose output, especially using SSL.
Related CURL Flags: CURLOPT_VERBOSE
-# HTTP.DEFLATE
Type: boolean ("1"/"0")
Description: Allow use of compression by the server.
Related CURL Flags: CURLOPT_ENCODING
-# HTTP.COOKIEJAR
Type: String representing file path
Description: Specify the name of file into which to store cookies. Defaults to in-memory storage.
Related CURL Flags:CURLOPT_COOKIEJAR
-# HTTP.CREDENTIALS.USER
Type: String representing user name
Description: Specify the user name for Digest and Basic authentication.
Related CURL Flags:
-# HTTP.CREDENTIALS.PASSWORD
Type: String representing password
Type: boolean ("1"/"0")
Description: Specify the password for Digest and Basic authentication.
Related CURL Flags:
-# HTTP.SSL.CERTIFICATE
Type: String representing file path
Description: Path to a file containing a PEM cerficate.
Related CURL Flags: CURLOPT_CERT
-# HTTP.SSL.KEY
Type: String representing file path
Description: Same as HTTP.SSL.CERTIFICATE, and should usually have the same value.
Related CURL Flags: CURLOPT_SSLKEY
-# HTTP.SSL.KEYPASSWORD
Type: String representing password
Description: Password for accessing the HTTP.SSL.KEY/HTTP.SSL.CERTIFICATE
Related CURL Flags: CURLOPT_KEYPASSWORD
-# HTTP.SSL.CAPATH
Type: String representing directory
Description: Path to a directory containing trusted certificates for validating server certificates.
Related CURL Flags: CURLOPT_CAPATH
-# HTTP.SSL.VALIDATE
Type: boolean ("1"/"0")
Description: Cause the client to verify the server's presented certificate.
Related CURL Flags: CURLOPT_SSL_VERIFYPEER, CURLOPT_SSL_VERIFYHOST
-# HTTP.TIMEOUT
Type: String ("dddddd")
Description: Specify the maximum time in seconds that you allow the http transfer operation to take.
Related CURL Flags: CURLOPT_TIMEOUT, CURLOPT_NOSIGNAL
-# HTTP.PROXY_SERVER
Type: String representing url to access the proxy: (e.g.http://[username:password@]host[:port])
Description: Specify the needed information for accessing a proxy.
Related CURL Flags: CURLOPT_PROXY, CURLOPT_PROXYHOST, CURLOPT_PROXYUSERPWD
-# HTTP.READ.BUFFERSIZE
Type: String ("dddddd")
Description: Specify the the internal buffer size for curl reads.
Related CURL Flags: CURLOPT_BUFFERSIZE, CURL_MAX_WRITE_SIZE (16kB),
CURL_MAX_READ_SIZE (512kB).
-# HTTP.KEEPALIVE
Type: String ("on|n/m")
Description: Specify that TCP KEEPALIVE should be enabled and that the associated idle wait time is n and that the associated repeat interval is m. If the value is of the form is the string "on", then turn on keepalive, but do not set idle or interval.
Related CURL Flags: CURLOPT_TCP_KEEPALIVE, CURLOPT_TCP_KEEPIDLE,
CURLOPT_TCP_KEEPINTVL.
The related curl flags line indicates the curl flags modified by this
key. See the libcurl documentation of the _curl_easy_setopt()_ function
for more detail (http://curl.haxx.se/libcurl/c/curl_easy_setopt.html).
For servers that require client authentication, as a rule, the following
.daprc entries should be specified.
````
HTTP.SSL.VALIDATE
HTTP.COOKIEJAR
HTTP.SSL.CERTIFICATE
HTTP.SSL.KEY
HTTP.SSL.CAPATH
````
Additionally, the _HTTP.SSL.CERTIFICATE_ and _HTTP.SSL.KEY_
entries should have same value, which is the file path for a
certificate. The HTTP.SSL.CAPATH entry should
be the path to a directory containing validation "certificates".
# Point of Contact {#dap4_poc}
__Author__: Dennis Heimbigner<br>
__Email__: dmh at ucar dot edu<br>
__Initial Version__: 6/5/2017<br>
__Last Revised__: 11/7/2018
*/
This diff is collapsed.
......@@ -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.6.2-rc2
PROJECT_NUMBER = 4.6.2
# 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
......
# Doxyfile 1.8.3, mixed with 1.8.6
# This file describes the settings to be used by the documentation system
# doxygen (www.doxygen.org) for a project.
#
......@@ -754,6 +752,7 @@ INPUT = \
@abs_top_srcdir@/docs/attribute_conventions.md \
@abs_top_srcdir@/docs/file_format_specifications.md \
@abs_top_srcdir@/docs/DAP2.dox \
@abs_top_srcdir@/docs/DAP4.dox \
@abs_top_srcdir@/docs/user_defined_formats.md \
@abs_top_srcdir@/docs/filters.md \
@abs_top_srcdir@/docs/inmemory.md \
......
......@@ -11,7 +11,7 @@ install-fortran.md all-error-codes.md credits.md auth.md \
obsolete/fan_utils.html bestpractices.md filters.md indexing.dox \
inmemory.md DAP2.dox attribute_conventions.md FAQ.md \
file_format_specifications.md known_problems.md COPYRIGHT.dox \
user_defined_formats.md inmeminternal.dox
user_defined_formats.md inmeminternal.dox DAP4.md DAP4.dox
# Turn off parallel builds in this directory.
.NOTPARALLEL:
......
......@@ -394,7 +394,7 @@ install-fortran.md all-error-codes.md credits.md auth.md \
obsolete/fan_utils.html bestpractices.md filters.md indexing.dox \
inmemory.md DAP2.dox attribute_conventions.md FAQ.md \
file_format_specifications.md known_problems.md COPYRIGHT.dox \
user_defined_formats.md inmeminternal.dox
user_defined_formats.md inmeminternal.dox DAP4.md DAP4.dox
# To build documentation you must have M4 in their path.
......
......@@ -8,12 +8,12 @@
- \subpage netcdf_data_set_components
- \subpage netcdf_perf_chunking
- \subpage netcdf_utilities_guide
- \subpage dap2
- \subpage dap4
- \subpage compress
- \subpage BestPractices
- \subpage user_defined_formats
- \subpage users_guide_appendices
- \subpage dap2
- \subpage dap4
<H2>The Purpose of NetCDF</H2>
......
......@@ -150,7 +150,7 @@ Indicate where you want to install netCDF in another shell variable, for example
~~~~{.py}
$ # Build and install netCDF-4
$ NCDIR=/usr/local
$ CPPFLAGS=-I${H5DIR}/include LDFLAGS=-L${H5DIR}/lib ./configure --prefix=${NCDIR}
$ CPPFLAGS='-I${H5DIR}/include -I${ZDIR}/include' LDFLAGS='-L${H5DIR}/lib -L${ZDIR}/lib' ./configure --prefix=${NCDIR}
$ make check
$ make install # or sudo make install
~~~~
......
......@@ -32,14 +32,14 @@ The included dependencies and versions are as follows:
* `libcurl`: 7.55.1
* `zlib`: 1.2.8
## Latest Release (netCDF-C 4.6.2-rc2) {#msvc-latest-release}
## Latest Release (netCDF-C 4.6.2) {#msvc-latest-release}
Configuration | 32-bit | 64-bit |
:-------------------|:-------- |:-------|
netCDF 3 | [netCDF4.6.2-rc2-NC3-32.exe][r1] | [netCDF4.6.2-rc2-NC3-64.exe][r5]
netCDF3+DAP | [netCDF4.6.2-rc2-NC3-DAP-32.exe][r2] | [netCDF4.6.2-rc2-NC3-DAP-64.exe][r6]
netCDF4 | [netCDF4.6.2-rc2-NC4-32.exe][r3] | [netCDF4.6.2-rc2-NC4-64.exe][r7]
netCDF4+DAP | [netCDF4.6.2-rc2-NC4-DAP-32.exe][r4] | [netCDF4.6.2-rc2-NC4-DAP-64.exe][r8]
netCDF 3 | [netCDF4.6.2-NC3-32.exe][r1] | [netCDF4.6.2-NC3-64.exe][r5]
netCDF3+DAP | [netCDF4.6.2-NC3-DAP-32.exe][r2] | [netCDF4.6.2-NC3-DAP-64.exe][r6]
netCDF4 | [netCDF4.6.2-NC4-32.exe][r3] | [netCDF4.6.2-NC4-64.exe][r7]
netCDF4+DAP | [netCDF4.6.2-NC4-DAP-32.exe][r4] | [netCDF4.6.2-NC4-DAP-64.exe][r8]
# Using the netCDF-C Libraries with Visual Studio {#msvc-using}
......@@ -60,11 +60,11 @@ When installed, the netCDF libraries are placed in the specified locations, alon
1. When building the netCDF-C libraries with netCDF4 support, using the `Debug` libraries may cause extraneous warnings. These warnings are related to cross-dll memory management, and appear to be harmless. You can safely ignore them by using the `Release` libraries. [NCF-220]
[r1]: http://www.unidata.ucar.edu/downloads/netcdf/ftp/netCDF4.6.2-rc2-NC3-32.exe
[r2]: http://www.unidata.ucar.edu/downloads/netcdf/ftp/netCDF4.6.2-rc2-NC3-DAP-32.exe
[r3]: http://www.unidata.ucar.edu/downloads/netcdf/ftp/netCDF4.6.2-rc2-NC4-32.exe
[r4]: http://www.unidata.ucar.edu/downloads/netcdf/ftp/netCDF4.6.2-rc2-NC4-DAP-32.exe
[r5]: http://www.unidata.ucar.edu/downloads/netcdf/ftp/netCDF4.6.2-rc2-NC3-64.exe
[r6]: http://www.unidata.ucar.edu/downloads/netcdf/ftp/netCDF4.6.2-rc2-NC3-DAP-64.exe
[r7]: http://www.unidata.ucar.edu/downloads/netcdf/ftp/netCDF4.6.2-rc2-NC4-64.exe
[r8]: http://www.unidata.ucar.edu/downloads/netcdf/ftp/netCDF4.6.2-rc2-NC4-DAP-64.exe
[r1]: http://www.unidata.ucar.edu/downloads/netcdf/ftp/netCDF4.6.2-NC3-32.exe
[r2]: http://www.unidata.ucar.edu/downloads/netcdf/ftp/netCDF4.6.2-NC3-DAP-32.exe
[r3]: http://www.unidata.ucar.edu/downloads/netcdf/ftp/netCDF4.6.2-NC4-32.exe
[r4]: http://www.unidata.ucar.edu/downloads/netcdf/ftp/netCDF4.6.2-NC4-DAP-32.exe
[r5]: http://www.unidata.ucar.edu/downloads/netcdf/ftp/netCDF4.6.2-NC3-64.exe
[r6]: http://www.unidata.ucar.edu/downloads/netcdf/ftp/netCDF4.6.2-NC3-DAP-64.exe
[r7]: http://www.unidata.ucar.edu/downloads/netcdf/ftp/netCDF4.6.2-NC4-64.exe
[r8]: http://www.unidata.ucar.edu/downloads/netcdf/ftp/netCDF4.6.2-NC4-DAP-64.exe
......@@ -244,7 +244,7 @@ main()
char file_name[STR_LEN + 1];
char dimscale_wo_var[STR_LEN];
void *bufr;
void *fillp;
void *fillp = NULL;
sprintf(file_name, "%s/%s", TEMP_LARGE, FILE_NAME);
......@@ -319,7 +319,7 @@ main()
if ((spaceid = H5Screate_simple(NDIMS2, dimsize, maxdimsize)) < 0) ERR;
if (H5Pset_attr_creation_order(plistid, H5P_CRT_ORDER_TRACKED|
H5P_CRT_ORDER_INDEXED) < 0) ERR;
if ((datasetid = H5Dcreate(grpid, VAR_NAME2, H5T_NATIVE_SCHAR, spaceid, plistid)) < 0)
if ((datasetid = H5Dcreate(grpid, VAR_NAME2, H5T_NATIVE_SCHAR, spaceid, plistid)) < 0) ERR;
free(fillp);
free(chunksize);
......