netcdf-c/ncdump
Dennis Heimbigner 59e04ae071 This PR adds EXPERIMENTAL support for accessing data in the
cloud using a variant of the Zarr protocol and storage
format. This enhancement is generically referred to as "NCZarr".

The data model supported by NCZarr is netcdf-4 minus the user-defined
types and the String type. In this sense it is similar to the CDF-5
data model.

More detailed information about enabling and using NCZarr is
described in the document NUG/nczarr.md and in a
[Unidata Developer's blog entry](https://www.unidata.ucar.edu/blogs/developer/en/entry/overview-of-zarr-support-in).

WARNING: this code has had limited testing, so do use this version
for production work. Also, performance improvements are ongoing.
Note especially the following platform matrix of successful tests:

Platform | Build System | S3 support
------------------------------------
Linux+gcc      | Automake     | yes
Linux+gcc      | CMake        | yes
Visual Studio  | CMake        | no

Additionally, and as a consequence of the addition of NCZarr,
major changes have been made to the Filter API. NOTE: NCZarr
does not yet support filters, but these changes are enablers for
that support in the future.  Note that it is possible
(probable?) that there will be some accidental reversions if the
changes here did not correctly mimic the existing filter testing.

In any case, previously filter ids and parameters were of type
unsigned int. In order to support the more general zarr filter
model, this was all converted to char*.  The old HDF5-specific,
unsigned int operations are still supported but they are
wrappers around the new, char* based nc_filterx_XXX functions.
This entailed at least the following changes:
1. Added the files libdispatch/dfilterx.c and include/ncfilter.h
2. Some filterx utilities have been moved to libdispatch/daux.c
3. A new entry, "filter_actions" was added to the NCDispatch table
   and the version bumped.
4. An overly complex set of structs was created to support funnelling
   all of the filterx operations thru a single dispatch
   "filter_actions" entry.
5. Move common code to from libhdf5 to libsrc4 so that it is accessible
   to nczarr.

Changes directly related to Zarr:
1. Modified CMakeList.txt and configure.ac to support both C and C++
   -- this is in support of S3 support via the awd-sdk libraries.
2. Define a size64_t type to support nczarr.
3. More reworking of libdispatch/dinfermodel.c to
   support zarr and to regularize the structure of the fragments
   section of a URL.

Changes not directly related to Zarr:
1. Make client-side filter registration be conditional, with default off.
2. Hack include/nc4internal.h to make some flags added by Ed be unique:
   e.g. NC_CREAT, NC_INDEF, etc.
3. cleanup include/nchttp.h and libdispatch/dhttp.c.
4. Misc. changes to support compiling under Visual Studio including:
   * Better testing under windows for dirent.h and opendir and closedir.
5. Misc. changes to the oc2 code to support various libcurl CURLOPT flags
   and to centralize error reporting.
6. By default, suppress the vlen tests that have unfixed memory leaks; add option to enable them.
7. Make part of the nc_test/test_byterange.sh test be contingent on remotetest.unidata.ucar.edu being accessible.

Changes Left TO-DO:
1. fix provenance code, it is too HDF5 specific.
2020-06-28 18:02:47 -06:00
..
cdl Make utilities support NC_COMPACT 2020-02-29 12:06:21 -07:00
expected ncdump, other directories updated with copyright stanza. 2018-12-06 15:36:53 -07:00
bom.c ncdump, other directories updated with copyright stanza. 2018-12-06 15:36:53 -07:00
cdl.h ncdump, other directories updated with copyright stanza. 2018-12-06 15:36:53 -07:00
chunkspec.c Make utilities support NC_COMPACT 2020-02-29 12:06:21 -07:00
chunkspec.h Make utilities support NC_COMPACT 2020-02-29 12:06:21 -07:00
CMakeLists.txt This PR adds EXPERIMENTAL support for accessing data in the 2020-06-28 18:02:47 -06:00
depend
dimmap.c ncdump, other directories updated with copyright stanza. 2018-12-06 15:36:53 -07:00
dimmap.h ncdump, other directories updated with copyright stanza. 2018-12-06 15:36:53 -07:00
dumplib.c Spelling fixes 2019-09-18 08:03:01 -06:00
dumplib.h ncdump, other directories updated with copyright stanza. 2018-12-06 15:36:53 -07:00
env
indent.c ncdump, other directories updated with copyright stanza. 2018-12-06 15:36:53 -07:00
indent.h ncdump, other directories updated with copyright stanza. 2018-12-06 15:36:53 -07:00
inttags4.cdl re: gihub issue https://github.com/Unidata/netcdf-c/issues/380 2017-03-24 18:56:14 -06:00
inttags.cdl
isnan.h ncdump, other directories updated with copyright stanza. 2018-12-06 15:36:53 -07:00
L512.bin re e-support UBS-599337 2017-10-24 16:25:09 -06:00
list.c Extend nccopy -F option syntax. 2019-02-08 18:48:17 -07:00
list.h Extend nccopy -F option syntax. 2019-02-08 18:48:17 -07:00
Makefile.am This PR adds EXPERIMENTAL support for accessing data in the 2020-06-28 18:02:47 -06:00
nc4print.c ncdump, other directories updated with copyright stanza. 2018-12-06 15:36:53 -07:00
nccomps.h ncdump, other directories updated with copyright stanza. 2018-12-06 15:36:53 -07:00
nccopy.1 Make utilities support NC_COMPACT 2020-02-29 12:06:21 -07:00
nccopy.c This PR adds EXPERIMENTAL support for accessing data in the 2020-06-28 18:02:47 -06:00
ncdump.1 Make utilities support NC_COMPACT 2020-02-29 12:06:21 -07:00
ncdump.c This PR adds EXPERIMENTAL support for accessing data in the 2020-06-28 18:02:47 -06:00
ncdump.h ncdump, other directories updated with copyright stanza. 2018-12-06 15:36:53 -07:00
nciter.c This PR adds EXPERIMENTAL support for accessing data in the 2020-06-28 18:02:47 -06:00
nciter.h ncdump, other directories updated with copyright stanza. 2018-12-06 15:36:53 -07:00
nctime0.c Treat time units as case-insensitive in ncdump 2020-05-14 06:48:03 -06:00
nctime0.h ncdump, other directories updated with copyright stanza. 2018-12-06 15:36:53 -07:00
nctrunc.c Remove netcdf-4 conditional on the dispatch table. 2019-07-20 13:59:40 -06:00
ncvalidator.c This PR adds EXPERIMENTAL support for accessing data in the 2020-06-28 18:02:47 -06:00
ocprint.c Fix undefined references when using Visual Studio 2020-05-18 19:36:28 -06:00
ref1.ncml
ref_ctest1_nc4.cdl Wiring in more validation 2016-11-18 11:53:53 -07:00
ref_ctest1_nc4c.cdl
ref_ctest64.c This PR adds EXPERIMENTAL support for accessing data in the 2020-06-28 18:02:47 -06:00
ref_ctest_small_3.c Add test cases 2019-11-03 12:03:13 -07:00
ref_ctest_small_4.c Add test cases 2019-11-03 12:03:13 -07:00
ref_ctest_special_atts_4.c This PR adds EXPERIMENTAL support for accessing data in the 2020-06-28 18:02:47 -06:00
ref_ctest.c This PR adds EXPERIMENTAL support for accessing data in the 2020-06-28 18:02:47 -06:00
ref_inttags4.cdl Working on getting cdf5 tests running. 2017-09-15 18:00:28 -06:00
ref_inttags.cdl
ref_nc_test_netcdf4_4_0.nc
ref_nc_test_netcdf4.cdl
ref_nccopy3_subset.nc Wiring new test into autotools. 2017-09-01 11:57:28 -06:00
ref_nccopy_w.cdl Fix nccopy to use NC_PERSIST so that -w actually persists the output. 2019-03-15 12:05:27 -06:00
ref_no_ncproperty.nc Simplify libhdf5/nc5info.c to move to lazy parsing 2019-03-09 20:35:57 -07:00
ref_null_byte_padding_test.nc Wiring in a quick test. 2017-11-20 13:52:06 -07:00
ref_provenance_v1.nc There was a request to extend the provenance information 2018-08-25 21:44:41 -06:00
ref_test_360_day_1900.cdl Solve issue https://github.com/Unidata/netcdf-c/issues/359 2017-07-25 11:58:34 -06:00
ref_test_360_day_1900.nc Makefile.am cleanup 2017-11-18 14:20:04 -07:00
ref_test_365_day_1900.cdl Solve issue https://github.com/Unidata/netcdf-c/issues/359 2017-07-25 11:58:34 -06:00
ref_test_365_day_1900.nc Makefile.am cleanup 2017-11-18 14:20:04 -07:00
ref_test_366_day_1900.cdl Solve issue https://github.com/Unidata/netcdf-c/issues/359 2017-07-25 11:58:34 -06:00
ref_test_366_day_1900.nc Makefile.am cleanup 2017-11-18 14:20:04 -07:00
ref_test_corrupt_magic.nc re e-support UBS-599337 2017-10-24 16:25:09 -06:00
ref_times.cdl Test ncdump time unit name case-insensitivity 2020-05-14 06:42:12 -06:00
ref_tst_charfill.cdl
ref_tst_comp2.cdl
ref_tst_comp.cdl
ref_tst_compounds2.cdl
ref_tst_compounds2.nc
ref_tst_compounds3.cdl
ref_tst_compounds3.nc
ref_tst_compounds4.cdl
ref_tst_compounds4.nc
ref_tst_enum_data.cdl
ref_tst_fillbug.cdl
ref_tst_format_att_64.cdl
ref_tst_format_att.cdl
ref_tst_group_data_v23.cdl
ref_tst_group_data.cdl
ref_tst_grp_spec0.cdl
ref_tst_grp_spec.cdl
ref_tst_irish_rover.nc tests for ncdump issue with irish rover 2018-05-15 08:09:52 -06:00
ref_tst_mud4_chars.cdl
ref_tst_mud4-bc.cdl
ref_tst_mud4.cdl
ref_tst_nans.cdl
ref_tst_nc4_utf8_4.cdl Work towards parallel testing via cmake. 2017-11-22 12:10:58 -07:00
ref_tst_ncf213.cdl There was a request to extend the provenance information 2018-08-25 21:44:41 -06:00
ref_tst_noncoord.cdl
ref_tst_opaque_data.cdl
ref_tst_radix.cdl Fix ncgen handling of octal constants (with leading 0). 2019-02-25 20:57:23 -07:00
ref_tst_small.cdl
ref_tst_solar_1.cdl
ref_tst_solar_2.cdl
ref_tst_special_atts3.cdl
ref_tst_special_atts.cdl Make utilities support NC_COMPACT 2020-02-29 12:06:21 -07:00
ref_tst_string_data.cdl
ref_tst_unicode.cdl
ref_tst_utf8_4.cdl
ref_tst_utf8.cdl
ref_tst_vlen_data2.cdl
ref_tst_vlen_data.cdl
rewrite-scalar.c ncdump, other directories updated with copyright stanza. 2018-12-06 15:36:53 -07:00
run_back_comp_tests.sh Primary change: add dap4 support 2017-03-08 17:01:10 -07:00
run_ncgen_nc4_tests.sh Fix more memory leaks in netcdf-c library 2018-11-15 10:00:38 -07:00
run_ncgen_tests.sh replace USE_CDF5 with ENABLE_CDF5 2018-06-29 21:17:07 -05:00
run_tests.sh clean up 2019-03-12 09:54:16 -06:00
run_utf8_nc4_tests.sh eliminated dependencies 2017-11-25 05:18:04 -07:00
run_utf8_tests.sh eliminated dependencies 2017-11-25 05:18:04 -07:00
small2.cdl
small.cdl
test0.cdl
test_corrupt_magic.cdl re e-support UBS-599337 2017-10-24 16:25:09 -06:00
test_radix.sh Fix ncgen handling of octal constants (with leading 0). 2019-02-25 20:57:23 -07:00
test_unicode_directory.sh Permissions error on unicode directory test script. 2020-03-11 13:19:01 -06:00
tst_64bit.sh replace USE_CDF5 with ENABLE_CDF5 2018-06-29 21:17:07 -05:00
tst_bom.sh Primary change: add dap4 support 2017-03-08 17:01:10 -07:00
tst_brecs.cdl
tst_bug321.cdl
tst_calendars.cdl Test ncdump time unit name case-insensitivity 2020-05-14 06:42:12 -06:00
tst_calendars.sh Makefile.am cleanup 2017-11-18 14:20:04 -07:00
tst_charfill.cdl
tst_charfill.sh Primary change: add dap4 support 2017-03-08 17:01:10 -07:00
tst_chunking.c ncdump, other directories updated with copyright stanza. 2018-12-06 15:36:53 -07:00
tst_comp2.c ncdump, other directories updated with copyright stanza. 2018-12-06 15:36:53 -07:00
tst_comp.c ncdump, other directories updated with copyright stanza. 2018-12-06 15:36:53 -07:00
tst_compress.c ncdump, other directories updated with copyright stanza. 2018-12-06 15:36:53 -07:00
tst_create_files.c ncdump, other directories updated with copyright stanza. 2018-12-06 15:36:53 -07:00
tst_ctests.sh Add test cases 2019-11-03 12:03:13 -07:00
tst_dimsizes.c ncdump, other directories updated with copyright stanza. 2018-12-06 15:36:53 -07:00
tst_dimsizes.sh make -j working for classic only in ncdump 2017-11-17 08:22:49 -07:00
tst_enum_data.c ncdump, other directories updated with copyright stanza. 2018-12-06 15:36:53 -07:00
tst_fileinfo.c ncdump, other directories updated with copyright stanza. 2018-12-06 15:36:53 -07:00
tst_fileinfo.sh Fix undefined references when using Visual Studio 2020-05-18 19:36:28 -06:00
tst_fillbug.c ncdump, other directories updated with copyright stanza. 2018-12-06 15:36:53 -07:00
tst_fillbug.sh move C program invokations to scripts to clean up dependencies in build 2017-11-16 13:03:35 -07:00
tst_formatx3.sh replace USE_CDF5 with ENABLE_CDF5 2018-06-29 21:17:07 -05:00
tst_formatx4.sh make -j working for classic only in ncdump 2017-11-17 08:22:49 -07:00
tst_group_data.c ncdump, other directories updated with copyright stanza. 2018-12-06 15:36:53 -07:00
tst_grp_spec.sh Primary change: add dap4 support 2017-03-08 17:01:10 -07:00
tst_h_rdc0.c ncdump, other directories updated with copyright stanza. 2018-12-06 15:36:53 -07:00
tst_h_scalar.c ncdump, other directories updated with copyright stanza. 2018-12-06 15:36:53 -07:00
tst_h_scalar.sh move C program invokations to scripts to clean up dependencies in build 2017-11-16 13:03:35 -07:00
tst_hdf5_offset.sh Fix undefined references when using Visual Studio 2020-05-18 19:36:28 -06:00
tst_inmemory_nc3.sh make -j working for classic only in ncdump 2017-11-17 08:22:49 -07:00
tst_inmemory_nc4.sh make -j working for classic only in ncdump 2017-11-17 08:22:49 -07:00
tst_inttags4.sh Working on getting cdf5 tests running. 2017-09-15 18:00:28 -06:00
tst_inttags.sh Primary change: add dap4 support 2017-03-08 17:01:10 -07:00
tst_iter.sh Primary change: add dap4 support 2017-03-08 17:01:10 -07:00
tst_lengths.sh replace USE_CDF5 with ENABLE_CDF5 2018-06-29 21:17:07 -05:00
tst_mslp.cdl
tst_mud.sh Primary change: add dap4 support 2017-03-08 17:01:10 -07:00
tst_nans.c ncdump, other directories updated with copyright stanza. 2018-12-06 15:36:53 -07:00
tst_nccopy3_subset.sh Swapped /bin/bash for /bin/sh to test on osx. 2018-08-12 23:01:08 -06:00
tst_nccopy3.sh This PR adds EXPERIMENTAL support for accessing data in the 2020-06-28 18:02:47 -06:00
tst_nccopy4.sh Fix more memory leaks in netcdf-c library 2018-11-15 10:00:38 -07:00
tst_nccopy5.sh Make utilities support NC_COMPACT 2020-02-29 12:06:21 -07:00
tst_nccopy_w3.sh Fix nccopy to use NC_PERSIST so that -w actually persists the output. 2019-03-15 12:05:27 -06:00
tst_nccopy_w4.sh Fix nccopy to use NC_PERSIST so that -w actually persists the output. 2019-03-15 12:05:27 -06:00
tst_ncgen4_classic.sh The ncdap_tests were a mess, so I decided to clean them up 2018-03-20 21:31:31 -06:00
tst_ncgen4_cycle.sh removed many dependencies in ncdump testing 2017-11-25 07:28:07 -07:00
tst_ncgen4_diff.sh removed many dependencies in ncdump testing 2017-11-25 07:28:07 -07:00
tst_ncgen4.sh Swapped /bin/bash for /bin/sh to test on osx. 2018-08-12 23:01:08 -06:00
tst_ncgen_shared.sh Fix more memory leaks in netcdf-c library 2018-11-15 10:00:38 -07:00
tst_ncml.cdl
tst_netcdf4_4.sh This PR adds EXPERIMENTAL support for accessing data in the 2020-06-28 18:02:47 -06:00
tst_netcdf4.sh This PR adds EXPERIMENTAL support for accessing data in the 2020-06-28 18:02:47 -06:00
tst_null_byte_padding.sh Corrected pathing oversight. 2017-11-21 12:17:32 -07:00
tst_opaque_data.c ncdump, other directories updated with copyright stanza. 2018-12-06 15:36:53 -07:00
tst_output.sh Fix undefined references when using Visual Studio 2020-05-18 19:36:28 -06:00
tst_radix.cdl Fix ncgen handling of octal constants (with leading 0). 2019-02-25 20:57:23 -07:00
tst_special_atts.c Make utilities support NC_COMPACT 2020-02-29 12:06:21 -07:00
tst_string_data.c ncdump, other directories updated with copyright stanza. 2018-12-06 15:36:53 -07:00
tst_unicode.c ncdump, other directories updated with copyright stanza. 2018-12-06 15:36:53 -07:00
tst_utf8.c ncdump, other directories updated with copyright stanza. 2018-12-06 15:36:53 -07:00
tst_vlen_data.c ncdump, other directories updated with copyright stanza. 2018-12-06 15:36:53 -07:00
tst_vlen_demo.c ncdump, other directories updated with copyright stanza. 2018-12-06 15:36:53 -07:00
utils.c merge master and fix conflicts 2018-12-12 11:47:54 -07:00
utils.h provide NDEBUG version of macro NC_CHECK which does not use code file name 2019-02-16 10:17:06 -07:00
vardata.c Correcting a formatting error for scalars when dumping with ncdump -f 2020-04-28 15:49:03 -06:00
vardata.h ncdump, other directories updated with copyright stanza. 2018-12-06 15:36:53 -07:00