Commit Graph

510 Commits

Author SHA1 Message Date
Ward Fisher
435769f248 Changed attribute case in documentation in support of https://github.com/Unidata/netcdf-c/issues/2481 2022-08-19 13:28:51 -06:00
Edward Hartnett
e45292f6ca moved quantize error documentation 2022-06-23 09:51:09 +02:00
Ward Fisher
545ce88476
Merge pull request #2377 from edwardhartnett/ejh_update_doxyfile
Updating Doxyfile.in with doxygen-1.8.17, turned on WARN_AS_ERROR, added doxygen build to CI run
2022-06-22 13:31:25 -06:00
Ward Fisher
c879f710f5 Incorporated GitHub-generated release notes into the manually managed release notes, and updated the list of included dependencies for Windows installer downloads. 2022-06-10 14:43:50 -06:00
Ward Fisher
0ff56543b4 Correct error in make dist 2022-06-10 14:08:57 -06:00
Ward Fisher
2021ceeb68 Merge branch 'main' into v4.9.0-wellspring.wif 2022-06-09 14:43:57 -06:00
Rostislav Kouznetsov
8715fcac53 Fix typo 2022-06-08 19:35:16 +03:00
Edward Hartnett
c051209f8b turned on WARN_AS_ERROR and added documentation build to CI 2022-06-07 15:24:21 +03:00
Edward Hartnett
581b1c1c4d updated Doxyfile.in 2022-06-07 15:10:20 +03:00
Rostislav Kouznetsov
7564e7e797 Add doc on errors introduced by lossy compression
Also references to relevant papers
2022-06-07 11:13:15 +03:00
Ward Fisher
9db9ccdd46 Merge branch 'main' into v4.9.0-wellspring.wif 2022-06-06 14:37:12 -06:00
Ward Fisher
b2097a77aa
Merge pull request #2373 from edwardhartnett/ejh_docs_5
fixed documentation warnings in filters.md
2022-06-06 14:36:10 -06:00
Ward Fisher
b8f352e96b
Merge pull request #2363 from edwardhartnett/ejh_doc_2
fixed some doxygen warnings
2022-06-06 14:35:28 -06:00
Ward Fisher
054c392fee
Merge pull request #2362 from edwardhartnett/ejh_doc
adding quantize documentation
2022-06-06 14:35:04 -06:00
Ward Fisher
e38f1250fe Updated doxygen version, added target release date to RELEASE_NOTES 2022-06-03 11:03:00 -06:00
Edward Hartnett
db9b097da9 change to trigger CI 2022-06-01 12:15:12 +03:00
Edward Hartnett
b6c105fc12 fixed documentation warnings in filters.md 2022-06-01 07:24:06 +03:00
Edward Hartnett
31c7b7a6ac more detail on which algorithm to choose 2022-05-31 09:09:25 +03:00
Edward Hartnett
c5ad809e0d fixed some doxygen warnings 2022-05-28 19:12:52 +03:00
Edward Hartnett
21f44a29d4 fixed some doxygen warnings 2022-05-28 19:11:37 +03:00
Edward Hartnett
edf28a4335 fixed some doxygen warnings 2022-05-28 18:54:08 +03:00
Edward Hartnett
aba1f76f72 adding quantize documentation 2022-05-28 13:48:16 +03:00
Dennis Heimbigner
d7e57d261a Update to default --with-plugin-dir to yes 2022-05-24 20:05:19 -06:00
Dennis Heimbigner
7bf06df1c3 rebuild 2022-05-22 16:40:55 -06:00
Dennis Heimbigner
aaa7be64d7 Update docs again 2022-05-22 16:16:41 -06:00
Dennis Heimbigner
aa7d9524e0 Update documentation 2022-05-20 14:08:53 -06:00
Dennis Heimbigner
6ae3289701 I made a major update to this PR with the following changes:
## Overwriting
I think I solved the file overwrite problem by doing light name
mangling of the shared library names. With this change the probabilty
is very small that installing our filter wrappers in a directory will
overwrite code produced by others.

## Default Install Location
I have setup the --with-plugin-dir option default to install in
the following locations in order of preference

1. If HDF5_PLUGIN_PATH is defined (at build time remember), then the last directory in that path will be where the filter wrapper shared libraries will be installed.
2. Otherwise the default is "/usr/local/hdf5/lib/plugin" (on *nix*) or "%ALLUSERSPROFILE%\\hdf5\\lib\\plugin" for Windows or Mingw.

Currently, --with-plugin-dir is disabled by default.
I should note that even if I enable it by default, installing
netcdf-c will still not run "out of the box" because the hypothetical
naive user will not know which compressor libraries need to be
pre-installed before netcdf is installed. Nor will that user have any
way to find out what needs to be installed.
2022-05-19 22:00:40 -06:00
Ward Fisher
375e5adfe4
Merge branch 'main' into alwaysxarray.dmh 2022-05-17 13:23:19 -06:00
Ward Fisher
e5f1d0846b correct links for gliderscope and netcdfninja in software.html 2022-05-12 15:07:42 -06:00
Edward Hartnett
c3d201a8b9
Merge branch 'main' into ejh_doc_4 2022-05-05 08:16:40 -06:00
Ward Fisher
821f69f669
Merge branch 'main' into updatedocs.dmh 2022-05-04 17:01:06 -06:00
Edward Hartnett
7a61c9a8d4 added netcdf_filter.h to doxygen build 2022-05-04 13:12:48 -06:00
Edward Hartnett
955b77f831 removed all-error-codes.md 2022-05-04 10:05:38 -06:00
Edward Hartnett
0d7cbf1911 doxygen for filter functions 2022-05-04 08:04:54 -06:00
Edward Hartnett
6849f44896 more doxygen warning fixes 2022-05-03 12:54:14 -06:00
Edward Hartnett
14e80b4673 fixing doxygen warnings 2022-05-03 09:41:45 -06:00
Edward Hartnett
1b0ca07a3c added nc4cache.c to list of doxygen input files 2022-05-03 08:56:02 -06:00
Dennis Heimbigner
f897b458ea Fix szip handling 2022-04-30 19:06:01 -06:00
Dennis Heimbigner
126b3f9423 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-29 14:31:55 -06:00
Ward Fisher
09e362f209 Update URL for windows downloads. 2022-04-22 09:10:54 -06:00
Dennis Heimbigner
cd3fa1b361 restrict the json convention to dictionaries only 2022-04-06 11:42:51 -06:00
Dennis Heimbigner
8be0782c39 Describe JSON attribute convention 2022-04-06 11:04:22 -06:00
Dennis Heimbigner
a5cae51efc Turn on the xarray convention for NCZarr format
re: https://github.com/pydata/xarray/issues/6374

As a result of a discussion about Xarray (see above issue),
I decided to turn on the xarray convention for NCZarr datasets
where possible so that xarray can read a larger set of nczarr
generated datasets.

This causes the following changes:
* If the user wants to generate a pure zarr file, then the mode "zarr" must be explicitly used; it is no longer the case that "mode=xarray" or mode="noxarray"
implies "mode=zarr".
* It is still the case that "mode=noxarray" will turn off the XArray convention.

The following conditions will cause ''_ARRAY_DIMENSIONS'' to not be written.
* The variable is not in the root group,
* Any dimension referenced by the variable is not in the root group.
2022-03-23 19:28:06 -06:00
Ward Fisher
9ece4cf546 Added new credits file. 2022-03-21 10:12:44 -06:00
Ward Fisher
6cbeb780fc Removed empty, useless script. 2022-03-18 10:18:05 -06:00
Ward Fisher
6aee687446 Tweak to software.html static page. 2022-03-18 10:17:25 -06:00
Ward Fisher
3accf83725 Change order in which auth.html is generated and copied. 2022-03-17 15:57:16 -06:00
Dennis Heimbigner
f1eaefd91e Update selected documentation
Update the following documentation files:

## docs/FAQ.md
* Discuss the use of UTF-8 names under Windows 10+.

## docs/filters.md
* Add documentation about NCzarr filters.
  * Specifically Codec support and HDF5 <-> Codec translation
* Add documentation about standard filters

## docs/dispatch.md
* Convert from .dox format to .md (markdown) format.
* Add discussion about the user defined dispatch tables.
* Update the example.
* Abbreviate the NC_infermodel documentation and move the more detailed discusion to the companion *dinternal.md* documenation.

## docs/internal.md

This is a (mostly) new file that attempts to provide detailed
descriptions about how various features are implemented inside
the netcdf-c library. The topics currently covered the
following.

### Including C++ Code in the netcdf-c Library {#intern_c++}

The state of C compiler technology has reached the point where
it is possible to include C++ code into the netcdf-c library
code base. The document describes how to do this.

### Managing instances of complex data types

The document describes how to properly handle instances of
complex types (those with variable length).  This involves
having functions that can recursively walk instances of such
types to perform various actions on them.  These new functions
are intended to replace the *nc_free_vlen*, *nc_free_vlens* and
*nc_free_string* functions in *netcdf.h*.

### Inferring File Types

As described in the companion document -- docs/dispatch.md --
when *nc\_create()* or *nc\_open()* is called, the library must
figure out what kind of file is being created or opened.  Once it
has figured out the file kind, the appropriate "dispatch table"
can be used to process that file.

As a result of the introduction of remote data access to the netcdf-c
library, the path arguments to *nc\_open()* and *nc\_create()* have
been extended to support URLs as paths. Processing URLs requires
some significant changes to the file inference algorithm. The
details of that processing are recorded in the document.
2022-03-16 12:38:00 -06:00
Dennis Heimbigner
f3e711e2b8 Add support for setting HDF5 alignment property when creating a file
re: https://github.com/Unidata/netcdf-c/issues/2177
re: https://github.com/Unidata/netcdf-c/pull/2178

Provide get/set functions to store global data alignment
information and apply it when a file is created.

The api is as follows:
````
int nc_set_alignment(int threshold, int alignment);
int nc_get_alignment(int* thresholdp, int* alignmentp);
````

If defined, then for every file created opened after the call to
nc_set_alignment, for every new variable added to the file, the
most recently set threshold and alignment values will be applied
to that variable.

The nc_get_alignment function return the last values set by
nc_set_alignment.  If nc_set_alignment has not been called, then
it returns the value 0 for both threshold and alignment.

The alignment parameters are stored in the NCglobalstate object
(see below) for use as needed. Repeated calls to nc_set_alignment
will overwrite any existing values in NCglobalstate.

The alignment parameters are applied in libhdf5/hdf5create.c
and libhdf5/hdf5open.c

The set/get alignment functions are defined in libsrc4/nc4internal.c.

A test program was added as nc_test4/tst_alignment.c.

## Misc. Changes Unrelated to Alignment

* The NCRCglobalstate type was renamed to NCglobalstate to
  indicate that it represented more general global state than
  just .rc data.  It was also moved to nc4internal.h.  This led
  to a large number of small changes: mostly renaming. The
  global state management functions were moved to nc4internal.c.

* The global chunk cache variables have been moved into
  NCglobalstate.  As warranted, other global state will be moved
  as well.

* Some misc. problems with the nczarr performance tests were corrected.
2022-01-29 15:27:52 -07:00
Ward Fisher
fb59a724d7 Modify cmakelists.txt to generate oc2 auth html file whenever a doxygen-enabled build is run. 2022-01-27 13:09:52 -07:00
Ward Fisher
b07f1cd952 Merge branch 'NUG_clean_ethan' of https://github.com/ethanrd/netcdf-c into gh1636.wif 2022-01-27 12:54:06 -07:00
Ward Fisher
1666f80701
Merge pull request #2145 from oxelson/docs
Docs migration
2022-01-19 15:46:20 -07:00
Jennifer Oxelson
a6646a65ab
Update release_header.html
Fixed typo.
2022-01-19 11:50:59 -07:00
Dennis Heimbigner
8b9253fef2 Fix various problem around VLEN's
re: https://github.com/Unidata/netcdf-c/issues/541
re: https://github.com/Unidata/netcdf-c/issues/1208
re: https://github.com/Unidata/netcdf-c/issues/2078
re: https://github.com/Unidata/netcdf-c/issues/2041
re: https://github.com/Unidata/netcdf-c/issues/2143

For a long time, there have been known problems with the
management of complex types containing VLENs.  This also
involves the string type because it is stored as a VLEN of
chars.

This PR (mostly) fixes this problem. But note that it adds new
functions to netcdf.h (see below) and this may require bumping
the .so number.  These new functions can be removed, if desired,
in favor of functions in netcdf_aux.h, but netcdf.h seems the
better place for them because they are intended as alternatives
to the nc_free_vlen and nc_free_string functions already in
netcdf.h.

The term complex type refers to any type that directly or
transitively references a VLEN type. So an array of VLENS, a
compound with a VLEN field, and so on.

In order to properly handle instances of these complex types, it
is necessary to have function that can recursively walk
instances of such types to perform various actions on them.  The
term "deep" is also used to mean recursive.

At the moment, the two operations needed by the netcdf library are:
* free'ing an instance of the complex type
* copying an instance of the complex type.

The current library does only shallow free and shallow copy of
complex types. This means that only the top level is properly
free'd or copied, but deep internal blocks in the instance are
not touched.

Note that the term "vector" will be used to mean a contiguous (in
memory) sequence of instances of some type. Given an array with,
say, dimensions 2 X 3 X 4, this will be stored in memory as a
vector of length 2*3*4=24 instances.

The use cases are primarily these.

## nc_get_vars
Suppose one is reading a vector of instances using nc_get_vars
(or nc_get_vara or nc_get_var, etc.).  These functions will
return the vector in the top-level memory provided.  All
interior blocks (form nested VLEN or strings) will have been
dynamically allocated.

After using this vector of instances, it is necessary to free
(aka reclaim) the dynamically allocated memory, otherwise a
memory leak occurs.  So, the recursive reclaim function is used
to walk the returned instance vector and do a deep reclaim of
the data.

Currently functions are defined in netcdf.h that are supposed to
handle this: nc_free_vlen(), nc_free_vlens(), and
nc_free_string().  Unfortunately, these functions only do a
shallow free, so deeply nested instances are not properly
handled by them.

Note that internally, the provided data is immediately written so
there is no need to copy it. But the caller may need to reclaim the
data it passed into the function.

## nc_put_att
Suppose one is writing a vector of instances as the data of an attribute
using, say, nc_put_att.

Internally, the incoming attribute data must be copied and stored
so that changes/reclamation of the input data will not affect
the attribute.

Again, the code inside the netcdf library does only shallow copying
rather than deep copy. As a result, one sees effects such as described
in Github Issue https://github.com/Unidata/netcdf-c/issues/2143.

Also, after defining the attribute, it may be necessary for the user
to free the data that was provided as input to nc_put_att().

## nc_get_att
Suppose one is reading a vector of instances as the data of an attribute
using, say, nc_get_att.

Internally, the existing attribute data must be copied and returned
to the caller, and the caller is responsible for reclaiming
the returned data.

Again, the code inside the netcdf library does only shallow copying
rather than deep copy. So this can lead to memory leaks and errors
because the deep data is shared between the library and the user.

# Solution

The solution is to build properly recursive reclaim and copy
functions and use those as needed.
These recursive functions are defined in libdispatch/dinstance.c
and their signatures are defined in include/netcdf.h.
For back compatibility, corresponding "ncaux_XXX" functions
are defined in include/netcdf_aux.h.
````
int nc_reclaim_data(int ncid, nc_type xtypeid, void* memory, size_t count);
int nc_reclaim_data_all(int ncid, nc_type xtypeid, void* memory, size_t count);
int nc_copy_data(int ncid, nc_type xtypeid, const void* memory, size_t count, void* copy);
int nc_copy_data_all(int ncid, nc_type xtypeid, const void* memory, size_t count, void** copyp);
````
There are two variants. The first two, nc_reclaim_data() and
nc_copy_data(), assume the top-level vector is managed by the
caller. For reclaim, this is so the user can use, for example, a
statically allocated vector. For copy, it assumes the user
provides the space into which the copy is stored.

The second two, nc_reclaim_data_all() and
nc_copy_data_all(), allows the functions to manage the
top-level.  So for nc_reclaim_data_all, the top level is
assumed to be dynamically allocated and will be free'd by
nc_reclaim_data_all().  The nc_copy_data_all() function
will allocate the top level and return a pointer to it to the
user. The user can later pass that pointer to
nc_reclaim_data_all() to reclaim the instance(s).

# Internal Changes
The netcdf-c library internals are changed to use the proper
reclaim and copy functions.  It turns out that the places where
these functions are needed is quite pervasive in the netcdf-c
library code.  Using these functions also allows some
simplification of the code since the stdata and vldata fields of
NC_ATT_INFO are no longer needed.  Currently this is commented
out using the SEPDATA \#define macro.  When any bugs are largely
fixed, all this code will be removed.

# Known Bugs

1. There is still one known failure that has not been solved.
   All the failures revolve around some variant of this .cdl file.
   The proximate cause of failure is the use of a VLEN FillValue.
````
        netcdf x {
        types:
          float(*) row_of_floats ;
        dimensions:
          m = 5 ;
        variables:
          row_of_floats ragged_array(m) ;
              row_of_floats ragged_array:_FillValue = {-999} ;
        data:
          ragged_array = {10, 11, 12, 13, 14}, {20, 21, 22, 23}, {30, 31, 32},
                         {40, 41}, _ ;
        }
````
When a solution is found, I will either add it to this PR or post a new PR.

# Related Changes

* Mark nc_free_vlen(s) as deprecated in favor of ncaux_reclaim_data.
* Remove the --enable-unfixed-memory-leaks option.
* Remove the NC_VLENS_NOTEST code that suppresses some vlen tests.
* Document this change in docs/internal.md
* Disable the tst_vlen_data test in ncdump/tst_nccopy4.sh.
* Mark types as fixed size or not (transitively) to optimize the reclaim
  and copy functions.

# Misc. Changes

* Make Doxygen process libdispatch/daux.c
* Make sure the NC_ATT_INFO_T.container field is set.
2022-01-08 18:30:00 -07:00
Jennifer Oxelson
45bce8d395 docs link updates 2021-11-15 11:19:34 -07:00
Jennifer Oxelson
f7e3d3e44f docs cleanup 2021-11-11 11:40:45 -07:00
Jennifer Oxelson
5b7ddcca06 docs migration, part 2 2021-11-11 10:55:52 -07:00
Jennifer Oxelson
a11349482c Docs migration 2021-11-11 10:47:49 -07:00
Dennis Heimbigner
f6e25b695e Fix additional S3 support issues
re: https://github.com/Unidata/netcdf-c/issues/2117
re: https://github.com/Unidata/netcdf-c/issues/2119

* Modify libsrc to allow byte-range reading of netcdf-3 files in private S3 buckets; this required using the aws sdk. Also add a test case.
* The aws sdk can sometimes cause problems if the Awd::ShutdownAPI function is not called. So at optional atexit() support to ensure it is called. This is disabled for Windows.
* Add documentation to nczarr.md on how to build and use the aws sdk under windows. Currently it builds, but testing fails.
* Switch testing from stratus to the Unidata bucket on S3.
* Improve support for the s3: url protocol.
* Add a s3 specific utility code file: ds3util.c
* Modify NC_infermodel to attempt to read the magic number of byte-ranged files in S3.

## Misc.

* Move and rename the core S3 SDK wrapper code (libnczarr/zs3sdk.cpp) to libdispatch since it now used in libsrc as well as libnczarr.
* Add calls to nc_finalize in the utilities in case atexit is disabled.
* Add header only json parser to the distribution rather than as a built source.
2021-10-29 20:06:37 -06:00
Dennis Heimbigner
6b69b9c52c Significantly Improve Amazon S3 Cloud Storage Support
## S3 Related Fixes

* Add comprehensive support for specifying AWS profiles to provide access credentials.
* Parse the files "~/.aws/config" and "~/.aws/credentials to provide credentials for the HDF5 ROS3 driver and to locate default region.
* Add a function to obtain the currently active S3 credentials. The search rules are defined in docs/nczarr.md.
* Provide documentation for the new features.
* Modify the struct NCauth (in include/ncauth.h) to replace specific S3 credentials with a profile name.
* Add a unit test to test the operation of profile and credentials management.
* Add support for URLS of the form "s3://<bucket>/<key>"; this requires obtaining a default region.
* Allows the specification of profile and/or region in a URL of the form "#mode=nczarr,...&aws.region=...&aws.profile=..."

## Misc. Fixes

* Move the ezxml code to libdispatch so that it can be used both by DAP4 and nczarr.
* Modify nclist to provide a deep clone operation.
* Modify ncuri to provide a deep clone operation.
* Modify the .rc file format to allow the specification of a path to be tested when looking for an entry in the .rc file.
* Ensure that the NC_rcload function is called.
* Modify nchttp to support setting request headers.
2021-09-27 18:36:33 -06:00
Dennis Heimbigner
11fe00ea05 Add filter support to NCZarr
Filter support has three goals:

1. Use the existing HDF5 filter implementations,
2. Allow filter metadata to be stored in the NumCodecs metadata format used by Zarr,
3. Allow filters to be used even when HDF5 is disabled

Detailed usage directions are define in docs/filters.md.

For now, the existing filter API is left in place. So filters
are defined using ''nc_def_var_filter'' using the HDF5 style
where the id and parameters are unsigned integers.

This is a big change since filters affect many parts of the code.

In the following, the terms "compressor" and "filter" and "codec" are generally
used synonomously.

### Filter-Related Changes:
* In order to support dynamic loading of shared filter libraries, a new library was added in the libncpoco directory; it helps to isolate dynamic loading across multiple platforms.
* Provide a json parsing library for use by plugins; this is created by merging libdispatch/ncjson.c with include/ncjson.h.
* Add a new _Codecs attribute to allow clients to see what codecs are being used; let ncdump -s print it out.
* Provide special headers to help support compilation of HDF5 filters when HDF5 is not enabled: netcdf_filter_hdf5_build.h and netcdf_filter_build.h.
* Add a number of new test to test the new nczarr filters.
* Let ncgen parse _Codecs attribute, although it is ignored.

### Plugin directory changes:
* Add support for the Blosc compressor; this is essential because it is the most common compressor used in Zarr datasets. This also necessitated adding a CMake FindBlosc.cmake file
* Add NCZarr support for the big-four filters provided by HDF5: shuffle, fletcher32, deflate (zlib), and szip
* Add a Codec defaulter (see docs/filters.md) for the big four filters.
* Make plugins work with windows by properly adding __declspec declaration.

### Misc. Non-Filter Changes
* Replace most uses of USE_NETCDF4 (deprecated) with USE_HDF5.
* Improve support for caching
* More fixes for path conversion code
* Fix misc. memory leaks
* Add new utility -- ncdump/ncpathcvt -- that does more or less the same thing as cygpath.
* Add a number of new test to test the non-filter fixes.
* Update the parsers
* Convert most instances of '#ifdef _MSC_VER' to '#ifdef _WIN32'
2021-09-02 17:04:26 -06:00
Ward Fisher
9d2e065f41 Correct a typo. 2021-08-25 14:58:35 -06:00
Ward Fisher
ee2c43ebc0 Added uniLogo.png to make dist. 2021-08-24 12:50:21 -06:00
Ward Fisher
5c39deed93 Remove obsolete doxygen tags. 2021-08-24 12:42:32 -06:00
Ward Fisher
93245509bb Update footer.html and Doxyfile to use local Unidata image. 2021-08-24 12:38:40 -06:00
Ward Fisher
5060cc11f7 Update windows binary download link url. 2021-08-24 12:19:04 -06:00
Ward Fisher
48a14fe84a Replace source for Unidata logo. 2021-08-24 11:39:19 -06:00
Ward Fisher
87cac5995e path syntax tweak. 2021-08-17 14:16:04 -06:00
Ward Fisher
6516b19bbe Update the source url for windows installer downloads to reflect the move tot he new artifacts server. 2021-08-17 13:49:45 -06:00
Ward Fisher
c8f03b8910 Bump version numbers for the next development cycle. 2021-08-17 10:41:07 -06:00
Ward Fisher
dc7b29556d Clean up orphaned file entry causing a failure in 'make distcheck' 2021-08-13 11:30:08 -06:00
Dennis Heimbigner
d953899559 Move to Version 2 NCZarr Extended Meta-Data
re: https://github.com/zarr-developers/zarr-specs/issues/41

After discussions with the Zarr community, it was decided to
convert to a new representation of the NCZarr meta-data extensions: version 2.
These extensions store information necessary to mapping the Zarr data model
to the netcdf-4 data model.

The basic change is to remove the NCZarr specific objects: .nczarr, .nczgroup, .nczarray, and .nczattr.
The contents of these objects is moved into the corresponding existing Zarr objects as special keys. The mapping is as follows:

* ''.nczarr'' => ''/.zgroup/_NCZARR_SUPERBLOCK_''
* ''.nczgroup => ''.zgroup/_NCZARR_GROUP_''
* ''.nczarray => ''.zarray/_NCZARR_ARRAY_''
* ''.nczattr => ''.zattr/_NCZARR_ATTR_''

Backward compatibility is maintained by looking for the object ''/.nczarr''
and if found, then assuming that the dataset is in the older version 1 format.
This compatibility only supports reading of such version 1 datasets.

Documentation and test cases are also added.

Misc. Other Changes:
1. The json parsing code was added to the general library instead of nczarr only (ncjson.c, ncjson.h).
2. Improved support for different platform paths by allowing conversion
   to a single common path representation.
3. Add some new error codes.
4. Modify nccopy usage to mention the new chunking specification.
2021-07-17 16:55:30 -06:00
Ward Fisher
cf5fc9b0f7 Updated doxyfile to include libnczarr/zarr.c, also removed references to files that have been removed. 2021-03-30 13:53:16 -06:00
Ward Fisher
98abfb7749 Bumped version numbers to next development version. 2021-03-19 11:49:09 -06:00
Ward Fisher
3b4c04d87f Merge branch 'master' into 3.8.0-wellspring.wif 2021-03-16 10:42:11 -06:00
Sean Arms
cd91418dca Update d4ts.war and dts.war build instructions
Caught this one by accident as I was looking for links that needed to be
updated. Figured I might as well knock it out while I was there.
2021-02-26 15:14:57 -07:00
Sean Arms
aefadcc6a5 Update links
Update links to netCDF-java and TDS documentation, as well as
various netCDF related issue trackers.
2021-02-26 15:14:37 -07:00
Sean Arms
e603c10964 Update links to netCDF-java documentation. 2021-02-26 15:11:10 -07:00
Ward Fisher
f18381180c Update number of threads used in doxygen developer config file. 2021-02-25 14:26:57 -07:00
Dennis Heimbigner
eb3d9eb0c9 Provide a Number of fixes/improvements to NCZarr
Primary changes:
* Add an improved cache system to speed up performance.
* Fix NCZarr to properly handle scalar variables.

Misc. Related Changes:
* Added unit tests for extendible hash and for the generic cache.
* Add config parameter to set size of the NCZarr cache.
* Add initial performance tests but leave them unused.
* Add CRC64 support.
* Move location of ncdumpchunks utility from /ncgen to /ncdump.
* Refactor auth support.

Misc. Unrelated Changes:
* More cleanup of the S3 support
* Add support for S3 authentication in .rc files: HTTP.S3.ACCESSID and HTTP.S3.SECRETKEY.
* Remove the hashkey from the struct OBJHDR since it is never used.
2020-11-19 17:01:04 -07:00
LProx2020
cb6bdacdd2
Email Removal
-Removed old UCAR email
2020-07-28 12:15:04 -04:00
LProx2020
f2f7ffefa9
Update software.html
More fixes in collaboration with I.P.
- Adjusted ArcGIS and AgriMetSoft NetCDF-Extractor sections' text and spacing
 *Check to see if the spacing for these sections is correct
 *Did not address broken links, but should address both broken links and links that re-direct to unintended webpages
2020-07-23 10:28:00 -04:00
LProx2020
83e95ea907
Copyediting Updates #2
More fixes in collaboration with I.P.
* Did not fix spacing for the ArcGIS nor AgriMetSoft sections
* Did not address broken links, but should address both broken links and links that re-direct to unintended webpages
2020-07-23 10:00:01 -04:00
LProx2020
7974c66595
Copyediting Updates #1
Fixed per I.P.'s work
- Need to ensure proper way to include the u umlaut in line 455
- Didn't address broken link issues
-Left MeteoExplorer's NetCDF uppercased due to library/software reference
-Didn't change Mary Haley's email in the NCL section
-Left nctoolbox's NetCDF-Java 
***Stopped short off ncvtk errors (line 149)
2020-07-21 11:57:48 -04:00
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
LProx2020
316dfea205
Update FAQ.md
This edit updates the broken links discussed in Issue #1696
2020-05-29 11:58:38 -04:00
Douglas Dirks
ccdac4bf60 Ensure that the nav-tree extends to the full height of the content area. The footer must be enclosed in a div element with the id="nav-path" for this to work. 2020-05-13 16:45:35 -06:00
Ward Fisher
31654e650b Added a stand-alone user level doxygen configuration file. It must be used from the top-level netcdf-c directory, e.g. doxygen docs/Doxyfile.user. 2020-05-07 16:23:43 -06:00
Ward Fisher
5a6c7a48d9 Tweaked docs to fix dead references introduced as part of separating out NUG from netCDF-C. 2020-03-27 14:21:25 -06:00
Ward Fisher
d9e69bbb6b Updated soversion, bump to next development version in preparation of upstream merge back into master from 4.7.4 wellspring. 2020-03-26 11:31:43 -06:00
Ethan Davis
1ee7da8021 NUG appendix files and CDL doc file moved to netcdf/NUG. Remove here. 2020-02-11 16:55:46 -07:00
Ward Fisher
da6884593e Cleaning up distcheck. 2020-02-07 13:47:45 -07:00
Ward Fisher
ed8a0f21af Moved NUG related files in to NUG directory. 2020-02-07 13:19:37 -07:00
Ward Fisher
ef82b79857 Modified doxygen to look at URL instead of local files. 2020-02-06 16:46:52 -07:00
Ward Fisher
806460929c Moved tag files into the subsequent html directory. 2020-02-06 16:26:33 -07:00
Ward Fisher
2e63392423 Shuffling NUG and documentation. 2020-02-06 16:14:25 -07:00
Ward Fisher
5c5a5894f0 Some initial reorganization. 2020-02-06 14:29:10 -07:00
Ward Fisher
3aaf092b59 Removed deprecated functions from doxygen template file 2020-02-06 13:45:44 -07:00
Ward Fisher
5d34ea5b2c
Merge pull request #1597 from NOAA-GSD/ejh_doc_fix
fixed doc formatting issue
2020-01-14 17:53:29 -07:00
Edward Hartnett
c6d14f29bd fixed doc formatting issue 2020-01-13 03:28:04 -07:00