Commit Graph

459 Commits

Author SHA1 Message Date
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