Commit Graph

86 Commits

Author SHA1 Message Date
Dennis Heimbigner
e7d5f24078 Add zip file support
The primary change is to support the use of a zip file as a
storage format. Simultaneously the .nz4 support is made obsolete

Use of zip requires the libzip support library, so a number of
changes to the build files (Makefile.am, CMakeLists.txt) are
necessary to locate and incorporate libzip.  The nczarr_tests
tests are also changed to add zip testing.

Other changes:
* Make sure distcheck leaves no files around.
* Add some functions to netcdf_aux to export some functions of libnetcdf.
* Add a new error NC_EFOUND as the complement of NC_EEMPTY.
* Add tracing support to nclog and use it in libnczarr.
* Modify the zmap interface to support the writeonce semantics of zip.
* Create a new s3util.c to support a variety of S3 auxilliary functions.
* EXTERNL'ize a number of functions so they can be used in s3util.
* Add support for the S3 ListObjects CommonPrefixes mechanism
  to improve search.
* Add experimental support for running nczarr X s3 tests against
  the actual Amazon S3 cloud.
2021-01-28 20:11:01 -07:00
Dan Ibanez
9ad3e49371 more missing includes for MPI without wrapper 2021-01-19 10:33:08 -07:00
Dennis Heimbigner
2ce6b0b5c8 Fix CMake bug 2020-12-30 13:30:12 -07:00
Ward Fisher
31dee0c4da
Revert "Revert "Fix nczarr-experimental: improve build support, disengage hdf5 vs netcdf4 flags, and find AWS libraries"" 2020-08-17 19:15:47 -06:00
Ward Fisher
16c27ca13f
Revert "Fix nczarr-experimental: improve build support, disengage hdf5 vs netcdf4 flags, and find AWS libraries" 2020-08-17 15:51:01 -06:00
Dennis Heimbigner
d85bb6fe20 The big change for this commit is complete the
disengagement of enable-netcdf4 from enable-hdf5.
That is, with the advent of nczarr, it is possible
to turn off hdf5 but still need netcdf-4 enabled
because nczarr uses libsrc4, but not libhdf5.
This change involves a bunch of things:
1. Modify configure.ac and CMakelist to make enable_hdf5
   control if hdf5 support is provided. For back compatibility,
   disable-netcdf4 is treated as disable-hdf5. But internally,
   netcdf4 support is controlled only by the enabling of formats
   that require it.
2. In support of #1, modify .travis.yml to use enable/disable-hdf5
   instead of enable/disable-netcdf4.
3. test_common.in is modified to track selected features,
   including enable-hdf5 and enable-s3-tests. This is used in
   selected tests that mix netcdf-3 and netcdf4 tests.
4. The conflation of USE_HDF5 and USE_NETCDF4 is common in
   code, tests, and build files, so all of those had to be weeded out.
5. It turns out that some of the NC4_dim functions really are HDF5 specific,
   but are not treated as such. So they are moved from nc4dim.c to
   hdf5dim.c or hdf5dispatch.c
6. Some generic functions in libhdf5 can be (and were) moved to libsrc4.
2020-08-12 15:42:50 -06:00
Dennis Heimbigner
d538cf38c2 Fix nczarr-experimental to better support CMake and find AWS libraries
The primary fix is to improve CMake build support.
Specific changes include:
* CMake: Provide a better soln to locating the AWS SDK
  libraries; the new way is the preferred method as described in
  the aws-cpp-sdk documentation.
* CMake (and Automake): allow -DENABLE_S3_SDK (default off) to suppress
  looking for AWS libraries.
* CMake: add the complete set of nczarr tests
* CMake: add EXTERNL as needed to various .h files.
* Improve support for windows drive letters in paths.
* Add nczarr and s3 flags to nc-config
* For VisualStudio X nczarr, cleanup the NAN+INFINITY handling
* Convert _MSC_VER -> _WIN32 and vice versa as needed
* NCZarr - support multiple platform paths including windows, cygwin.
  mingw, etc.
* NCZarr - sort the test outputs because different platforms
  produce directory contents in different orders.

One big change concerns netcdf-c/CMakeLists.txt and netcdf-c/configure.ac.
In the current versions, it was the case that --disable-hdf5
disabled netcdf-4 (libsrc4). With nczarr, this can no longer
be the case because nczarr requires libsrc4 even if libhdf5
is disabled. So, I modified the above files to move the
format options (HDF5, NCZarr, HDF4, etc) to a single place
near the front of the files. Now it is the case that:
* Enabling any of the formats that require libsrc4
  also does an implicit --enable-netcdf4.
* --disable-netcdf4 | --disable-netcdf-4 now becomes
  and alias for --disable-hdf5.

There are probably some bugs in this change in terms of
dependencies between format options.

Problems:
* CMake S3 support is still not working for Visual Studio
* A recent issue points out that there is work to do on handling
  UTF8 filenames, but that will be addressed in a separate fix.

Notes:
* Consider converting all of our includes/.h files to use EXTERNL
2020-07-12 12:21:56 -06: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
Ward Fisher
87110139f6 More synchronization of copyright stanzas. 2018-12-06 14:34:40 -07:00
Ed Hartnett
5526ca65d1 created libhdf5, moved some files 2018-05-08 11:58:01 -06:00
Ed Hartnett
5f779db7c1 added HDF4 dir to cmake build file 2018-02-08 07:17:36 -07:00
Dennis Heimbigner
432cf830a4 Make sure that the path to netcdf.dll does not include the build type (e.g. Release). 2018-01-17 13:24:14 -07:00
Ward Fisher
d7d7f425dc Corrected an issue on Windows, temporarily, it may need to be reinstated but first things first, get the test to run. 2018-01-16 22:13:32 -06:00
Dennis Heimbigner
70068d7d32 With Ward's help, I figured out how to
obviate the need for build type under
cmake+Visual-studio. This simplified
findplugin.in.
2018-01-16 13:28:30 -07:00
Dennis Heimbigner
3db4f013bf Primary change: add dap4 support
Specific changes:
1. Add dap4 code: libdap4 and dap4_test.
   Note that until the d4ts server problem is solved, dap4 is turned off.
2. Modify various files to support dap4 flags:
	configure.ac, Makefile.am, CMakeLists.txt, etc.
3. Add nc_test/test_common.sh. This centralizes
   the handling of the locations of various
   things in the build tree: e.g. where is
   ncgen.exe located. See nc_test/test_common.sh
   for details.
4. Modify .sh files to use test_common.sh
5. Obsolete separate oc2 by moving it to be part of
   netcdf-c. This means replacing code with netcdf-c
   equivalents.
5. Add --with-testserver to configure.ac to allow
   override of the servers to be used for --enable-dap-remote-tests.
6. There were multiple versions of nctypealignment code. Try to
   centralize in libdispatch/doffset.c and include/ncoffsets.h
7. Add a unit test for the ncuri code because of its complexity.
8. Move the findserver code out of libdispatch and into
   a separate, self contained program in ncdap_test and dap4_test.
9. Move the dispatch header files (nc{3,4}dispatch.h) to
   .../include because they are now shared by modules.
10. Revamp the handling of TOPSRCDIR and TOPBUILDDIR for shell scripts.
11. Make use of MREMAP if available
12. Misc. minor changes e.g.
	- #include <config.h> -> #include "config.h"
	- Add some no-install headers to /include
	- extern -> EXTERNL and vice versa as needed
	- misc header cleanup
	- clean up checking for misc. unix vs microsoft functions
13. Change copyright decls in some files to point to LICENSE file.
14. Add notes to RELEASENOTES.md
2017-03-08 17:01:10 -07:00
Ward Fisher
0927fed943 Modified previous change. 2016-11-11 00:39:19 +00:00
Ward Fisher
7d1289fb64 Started replacing hack using TLL_LIBS with CMAKE_REQUIRED_LIBRARIES 2016-11-10 23:30:01 +00:00
Ward Fisher
719ddac946 Adding cmake infrastructure in support of https://github.com/Unidata/netcdf-c/issues/228 2016-03-07 14:04:52 -07:00
Ward Fisher
612b35a84c Merge branch 'master' into cdf-5, in preparation for merging the CDF-5 functionality into the master branch. This will be the key new feature for netcdf 4.4.0. 2015-11-05 13:40:35 -07:00
Ward Fisher
48fedd0d19 Changed the method by which the cmake version was being compared. 2015-10-20 16:20:04 +00:00
Ward Fisher
6341067733 Made build system to use conditional. 2015-10-20 10:10:55 -06:00
Ward Fisher
cdb0ae4baa In an effort to accomodate a broader range of linux platforms, trying to reduce the minimum supported version of cmake. See (https://github.com/Unidata/netcdf-c/issues/135). 2015-10-20 09:59:42 -06:00
Ward Fisher
29a3f8683b Removed old cdmr cmake config. 2015-10-09 13:18:39 -06:00
dmh
49597a64af merge-squash 2015-10-09 10:12:11 -06:00
Ward Fisher
a002bc884e Corrected a bug with parallel build in CMakeLists.txt 2015-08-17 15:45:39 -06:00
Ward Fisher
64e0d2a44e Added a new test for h4 endianness. [NCF332] 2015-05-28 17:13:15 -06:00
Ward Fisher
1eaa18dbd5 Moved dependencies into proper location in relation to netcdf.dll to avoid 'can't find hdf5.dll, etc' errors. 2014-12-05 11:19:02 -07:00
Ward Fisher
d3e1f2a82a Modified Settings used to generate Binary installer for Windows, so that the user is given the option of adding the binaries to the system path. 2014-12-02 13:58:23 -07:00
Ward Fisher
c0bc240a3a Reworked a little bit. Now two new targets are added, build-netcdf-fortran and install-netcdf-fortran. The latter can be run as root, if need be. 2014-11-19 14:29:32 -07:00
Ward Fisher
a4724f7aee Initial attempt at getting netcdf-c to automatically build and install netcdf-fortran. 2014-11-18 10:50:19 -07:00
Ward Fisher
a90c9829a2 Corrected issue where libraries were being linked against multiple times. 2014-11-03 10:43:43 -07:00
Nico Schlömer
9cc1e8035a rename HDF5_*_LIBRARY to HDF5_*_LIBRARIES
This makes sure that netCDF plays nicely with FindHDF5.cmake
from CMake.

Conflicts:
	liblib/CMakeLists.txt
2014-10-08 12:38:20 +02:00
Ward Fisher
5b62a7199b Added NC_EXTRA_DEPS option to netcdf-c 2014-09-29 12:04:35 -06:00
Nico Schlömer
847cbf66dc fix link bug for static builds 2014-08-21 12:03:41 +02:00
Nico Schlömer
d2ee2dff31 remove old export functionality, move new in place 2014-08-21 10:11:30 +02:00
Ward Fisher
7f812b367e Manual merge of pull request https://github.com/Unidata/netcdf-c/pull/64 contributed by nschloe. Assorted CMake improvements. 2014-06-11 15:51:31 -06:00
Ward Fisher
2e1c5bb1cb Added a netcdf_lib_version variable to correspond to the version computed by autotools. Also changed netcdf_so_version to 7 in cmake. This way cmake-based builds give us the same library names as autotools-based builds. 2014-05-12 16:05:39 -06:00
Ward Fisher
5a693d7326 Merged pull requestion from nschloe, #48. 2014-04-21 16:11:48 -06:00
Ward Fisher
733f6257b0 Updating cmake shared_linker_flags as suggested by Nico Schlomer: https://github.com/Unidata/netcdf-c/issues/46
Fixed indentation.

Updated .gitignore.

Added a macro to make it easy to check to see if the linker supports a particular flag.  Debug builds now pass the -w1,--no-undefined if it is detected the linker supports it.
2014-04-02 15:54:05 -06:00
Ward Fisher
154c2a6edf Stopped tracking a cmake-specific pkgconfig template; using the same one as autotools. Tightened up cmake summary a little, now a pkg-config file is generated. 2014-02-06 16:17:30 -07:00
Ward Fisher
8b368d0c3b Corrected a CMake error on Linux. 2013-10-07 12:58:38 -06:00
Ward Fisher
1cb69fb402 Corrected an issue on Windows 2013-10-07 12:39:54 -06:00
Ward Fisher
c8baf5c0e3 Updating how Windows tracks HDF5 libraries to link against. 2013-10-07 11:14:24 -06:00
Ward Fisher
09d4854165 Corrected a CMake issue which appeared to happen between two different versions of OSX. 2013-10-07 10:18:44 -06:00
Ward Fisher
c61b058807 Updated CMakeLists.txt to only link against the HDF5_hdf5 and HDF5_hdf5_hl libraries. 2013-10-04 17:07:10 -06:00
Orion Poplawski
392d6bcbf6 Use GNUInstallDirs to install into /usr/lib64 as needed 2013-08-13 10:00:22 -06:00
Ward Fisher
b4e198d163 Added '--enable-dynamic-loading' to autotools-based builds, and
-DENABLE_DYNAMIC_LOADING to cmake-based builds.

This will allow for compatibility with hdf5 1.8.11 builds that
have enabled dynamic building (depends on libdl).

See Jira ticket NCF-258
2013-06-10 21:48:11 +00:00
Ward Fisher
33d3d06971 Added initial 'make dist', 'make distcheck' support to
CMake-based builds.
2013-06-03 16:42:04 +00:00
Dennis Heimbigner
c583f91992 merge with trunk and fix conflicts 2013-05-10 17:04:28 +00:00
Ward Fisher
df9a54b689 o Fixed the SOVERSION for CMake-based builds.
o Updated autotools-based build to include files required for CMake-based 
builds.

o Updated Markdown-based documentation processed by Doxygen to include a
CMake FAQ.
2013-05-08 21:59:11 +00:00