diff --git a/CMakeLists.txt b/CMakeLists.txt index 8910887894..e1ecf7ffbd 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -16,6 +16,27 @@ project(netCDF VERSION 4.9.3 ) +##### +# Version Info: +# +# Release Version +# Library Version +# SO Version +# +# SO Version is computed from library version. See: +# http://www.gnu.org/software/libtool/manual/libtool.html#Libtool-versioning +##### + +set(NC_VERSION_NOTE "-rc1") +set(netCDF_VERSION ${PROJECT_VERSION}${NC_VERSION_NOTE}) +set(VERSION ${netCDF_VERSION}) +set(NC_VERSION ${netCDF_VERSION}) +set(PACKAGE_VERSION ${VERSION}) + +# These values should match those in configure.ac +set(netCDF_LIB_VERSION 22) +set(netCDF_SO_VERSION 22) + #Add custom CMake Module list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules" "${PROJECT_SOURCE_DIR}/cmake") @@ -51,26 +72,7 @@ endif() add_library(netcdf) add_library(netCDF::netcdf ALIAS netcdf) -##### -# Version Info: -# -# Release Version -# Library Version -# SO Version -# -# SO Version is computed from library version. See: -# http://www.gnu.org/software/libtool/manual/libtool.html#Libtool-versioning -##### - -set(NC_VERSION_NOTE "-development") -set(netCDF_VERSION ${PROJECT_VERSION}${NC_VERSION_NOTE}) -set(VERSION ${netCDF_VERSION}) -set(NC_VERSION ${netCDF_VERSION}) -set(PACKAGE_VERSION ${VERSION}) -# These values should match those in configure.ac -set(netCDF_LIB_VERSION 19) -set(netCDF_SO_VERSION 19) # Version of the dispatch table. This must match the value in # configure.ac. @@ -736,13 +738,18 @@ if(NOT WIN32) endif() # Options for S3 Support -option(NETCDF_ENABLE_S3 "Enable S3 support." OFF) +#option(NETCDF_ENABLE_S3 "Enable S3 support." OFF) +option(NETCDF_ENABLE_S3_AWS "Enable S3 support via AWS-CPP-SDK" OFF) option(NETCDF_ENABLE_S3_INTERNAL "Enable S3 Internal support." OFF) -option(NETCDF_ENABLE_NCZARR_S3 "Enable NCZarr S3 support; Deprecated in favor of NETCDF_ENABLE_S3" OFF) + +cmake_dependent_option(NETCDF_ENABLE_S3 "Enable S3 Support" ON "NETCDF_ENABLE_S3_AWS OR NETCDF_ENABLE_S3_INTERNAL" OFF) + +option(NETCDF_ENABLE_NCZARR_S3 "Enable NCZarr S3 support; Deprecated in favor of NETCDF_ENABLE_S3" ${NETCDF_ENABLE_S3}) if(NOT NETCDF_ENABLE_REMOTE_FUNCTIONALITY) set(NETCDF_ENABLE_S3 OFF CACHE BOOL "" FORCE) set(NETCDF_ENABLE_S3_INTERNAL OFF CACHE BOOL "" FORCE) + set(NETCDF_ENABLE_S3_AWS OFF CACHE BOOL "" FORCE) set(NETCDF_ENABLE_NCZARR_S3 OFF CACHE BOOL "" FORCE) endif() @@ -1531,10 +1538,7 @@ endif() # STATIC_DEFINE netcdf_BUILT_AS_STATIC #) -##### -# Build doxygen documentation, if need be. -##### -add_subdirectory(docs) + ## # Brute force, grab all of the dlls from the dependency directory, @@ -1805,6 +1809,12 @@ set(abs_top_builddir "${CMAKE_CURRENT_BINARY_DIR}") set(abs_top_srcdir "${CMAKE_CURRENT_SOURCE_DIR}") configure_file(${CMAKE_CURRENT_SOURCE_DIR}/test_common.in ${CMAKE_CURRENT_BINARY_DIR}/test_common.sh @ONLY NEWLINE_STYLE LF) +##### +# Build doxygen documentation, if need be. +# This must come after setting top_builddir, etc. +##### +add_subdirectory(docs) + #### # Build s3cleanup.sh and s3gc.sh ##### diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index 12bfa7bda7..a04a12e66f 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -7,7 +7,10 @@ This file contains a high-level description of this package's evolution. Release ## 4.9.3 - TBD +### Release Candidate 1 - July 26, 2024 + * Convert NCZarr V2 to store all netcdf-4 specific info as attributes. This improves interoperability with other Zarr implementations by no longer using non-standard keys. The price to be paid is that lazy attribute reading cannot be supported. See [Github #2836](https://github.com/Unidata/netcdf-c/issues/2936) for more information. + * Cleanup the option code for NETCDF_ENABLE_SET_LOG_LEVEL\[_FUNC\] See [Github #2931](https://github.com/Unidata/netcdf-c/issues/2931) for more information. * Fix duplicate definition when using aws-sdk-cpp. See [Github #2928](https://github.com/Unidata/netcdf-c/issues/2928) for more information. * Cleanup various obsolete options and do some code refactoring. See [Github #2926](https://github.com/Unidata/netcdf-c/issues/2926) for more information. diff --git a/cmake/dependencies.cmake b/cmake/dependencies.cmake index 3a35106ded..6aaf3d8623 100644 --- a/cmake/dependencies.cmake +++ b/cmake/dependencies.cmake @@ -429,7 +429,7 @@ endif () # because for some reason this screws up if we unconditionally test for sdk # and it is not available. Fix someday if(NETCDF_ENABLE_S3) - if(NOT NETCDF_ENABLE_S3_INTERNAL) + if(NETCDF_ENABLE_S3_AWS) # See if aws-s3-sdk is available find_package(AWSSDK REQUIRED COMPONENTS s3;transfer) if(AWSSDK_FOUND) @@ -441,7 +441,7 @@ if(NETCDF_ENABLE_S3) else(AWSSDK_FOUND) set(NETCDF_ENABLE_S3_AWS OFF CACHE BOOL "S3 AWS" FORCE) endif(AWSSDK_FOUND) - else(NOT NETCDF_ENABLE_S3_INTERNAL) + else(NETCDF_ENABLE_S3_INTERNAL) # Find crypto libraries required with testing with the internal s3 api. #find_library(SSL_LIB NAMES ssl openssl) find_package(OpenSSL REQUIRED) @@ -454,7 +454,7 @@ if(NETCDF_ENABLE_S3) # message(FATAL_ERROR "Can't find a crypto library, required by S3_INTERNAL") #endif(NOT CRYPTO_LIB) - endif(NOT NETCDF_ENABLE_S3_INTERNAL) + endif(NETCDF_ENABLE_S3_AWS) else() set(NETCDF_ENABLE_S3_AWS OFF CACHE BOOL "S3 AWS" FORCE) endif() diff --git a/configure.ac b/configure.ac index d223c19f8a..2905135120 100644 --- a/configure.ac +++ b/configure.ac @@ -10,7 +10,7 @@ AC_PREREQ([2.59]) # Initialize with name, version, and support email address. -AC_INIT([netCDF],[4.9.3-development],[support-netcdf@unidata.ucar.edu],[netcdf-c]) +AC_INIT([netCDF],[4.9.4-development],[support-netcdf@unidata.ucar.edu],[netcdf-c]) ## # Prefer an empty CFLAGS variable instead of the default -g -O2. @@ -21,7 +21,7 @@ AC_INIT([netCDF],[4.9.3-development],[support-netcdf@unidata.ucar.edu],[netcdf-c AC_SUBST([netCDF_VERSION_MAJOR]) netCDF_VERSION_MAJOR=4 AC_SUBST([netCDF_VERSION_MINOR]) netCDF_VERSION_MINOR=9 -AC_SUBST([netCDF_VERSION_PATCH]) netCDF_VERSION_PATCH=3 +AC_SUBST([netCDF_VERSION_PATCH]) netCDF_VERSION_PATCH=4 AC_SUBST([NC_VERSION_NOTE]) NC_VERSION_NOTE="-development" ## @@ -29,7 +29,7 @@ AC_SUBST([NC_VERSION_NOTE]) NC_VERSION_NOTE="-development" # See http://www.gnu.org/software/libtool/manual/libtool.html#Libtool-versioning # for information regarding incrementing `-version-info`. # These values should match those in CMakeLists.txt -AC_SUBST([netCDF_SO_VERSION]) netCDF_SO_VERSION=21:2:2 +AC_SUBST([netCDF_SO_VERSION]) netCDF_SO_VERSION=22:0:0 ##### # Set some variables used to generate a libnetcdf.settings file, diff --git a/docs/.gitignore b/docs/.gitignore index e69de29bb2..afe7bb1c16 100644 --- a/docs/.gitignore +++ b/docs/.gitignore @@ -0,0 +1,6 @@ +Doxyfile +custom_style.css +latex_main +man +Doxyfile.bak + diff --git a/docs/CMakeLists.txt b/docs/CMakeLists.txt index 50f9285c19..8469ec7323 100644 --- a/docs/CMakeLists.txt +++ b/docs/CMakeLists.txt @@ -34,7 +34,9 @@ IF(NETCDF_ENABLE_DOXYGEN) # Generate User Documentation ADD_CUSTOM_TARGET(doc_all ALL - ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile + COMMAND ${DOXYGEN_EXECUTABLE} -u ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile + COMMAND ${DOXYGEN_EXECUTABLE} -w html ${CMAKE_CURRENT_BINARY_DIR}/header.html ${CMAKE_CURRENT_BINARY_DIR}/footer.html ${CMAKE_CURRENT_BINARY_DIR}/custom_stylesheet.html ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile + COMMAND ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile COMMAND cp ${CMAKE_CURRENT_SOURCE_DIR}/auth.html ${CMAKE_CURRENT_BINARY_DIR}/html COMMAND cp ${CMAKE_CURRENT_SOURCE_DIR}/obsolete/fan_utils.html ${CMAKE_CURRENT_BINARY_DIR}/html WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} diff --git a/docs/Doxyfile.developer b/docs/Doxyfile.developer index e384408a1f..4d8761780c 100644 --- a/docs/Doxyfile.developer +++ b/docs/Doxyfile.developer @@ -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.9.3-development +PROJECT_NUMBER = 4.9.4-development # 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 diff --git a/docs/Doxyfile.in b/docs/Doxyfile.in index c93fe1a9cd..f13636e049 100644 --- a/docs/Doxyfile.in +++ b/docs/Doxyfile.in @@ -945,6 +945,7 @@ INPUT = @abs_top_srcdir@/docs/mainpage.dox \ @abs_top_srcdir@/docs/windows-binaries.md \ @abs_top_srcdir@/docs/inmemory.md \ @abs_top_srcdir@/docs/byterange.md \ + @abs_top_srcdir@/docs/auth.md \ @abs_top_srcdir@/docs/nczarr.md \ @abs_top_srcdir@/docs/cloud.md \ @abs_top_srcdir@/docs/notes.md \ @@ -1352,7 +1353,7 @@ HTML_FILE_EXTENSION = .html # of the possible markers and block names see the documentation. # This tag requires that the tag GENERATE_HTML is set to YES. -HTML_HEADER = @abs_top_srcdir@/docs/header.html +HTML_HEADER = @abs_top_builddir@/docs/header.html # The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each # generated HTML page. If the tag is left blank doxygen will generate a standard @@ -1362,7 +1363,7 @@ HTML_HEADER = @abs_top_srcdir@/docs/header.html # that doxygen normally uses. # This tag requires that the tag GENERATE_HTML is set to YES. -HTML_FOOTER = @abs_top_srcdir@/docs/footer.html +HTML_FOOTER = @abs_top_builddir@/docs/footer.html # The HTML_STYLESHEET tag can be used to specify a user-defined cascading style # sheet that is used by each HTML page. It can be used to fine-tune the look of diff --git a/docs/Makefile.am b/docs/Makefile.am index ba3e41cbb7..8f1c886b37 100644 --- a/docs/Makefile.am +++ b/docs/Makefile.am @@ -56,7 +56,11 @@ endif # includes them in the documentation. doxyfile.stamp: - $(DOXYGEN) Doxyfile && cp $(top_srcdir)/docs/auth.md $(top_srcdir)/docs/obsolete/fan_utils.html html + $(DOXYGEN) -u $(top_builddir)/docs/Doxyfile && \ + $(DOXYGEN) -w html $(top_builddir)/docs/header.html \ + $(top_builddir)/docs/footer.html $(top_builddir)/docs/custom_style.css $(top_builddir)/docs/Doxyfile && \ + $(DOXYGEN) $(top_builddir)/docs/Doxyfile && \ + cp $(top_srcdir)/docs/auth.md $(top_srcdir)/docs/obsolete/fan_utils.html html CLEANFILES = doxyfile.stamp diff --git a/docs/auth.md b/docs/auth.md index dfb49b3265..a08e2b4606 100644 --- a/docs/auth.md +++ b/docs/auth.md @@ -1,21 +1,18 @@ NetCDF Authorization Support -====================================== +==================================== -NetCDF Authorization Support {#auth} -==================================== - [TOC] -## Introduction {#auth_intro} +## Introduction {#auth} netCDF can support user authorization using the facilities provided by the curl library. This includes basic password authentication as well as certificate-based authorization. At the moment, this document only applies to DAP2 and DAP4 access. -With some exceptions (e.g. see the section on redirection) +With some exceptions (e.g. see the section on redirection) The libcurl authorization mechanisms can be accessed in two ways 1. Inserting the username and password into the url, or @@ -33,7 +30,7 @@ This username and password will be used if the server asks for authentication. Note that only simple password authentication is supported in this format. -Specifically note that [redirection-based](#REDIR) +Specifically note that [redirection-based](#auth_redir) authorization may work with this but it is a security risk. This is because the username and password may be sent to each server in the redirection chain. @@ -137,7 +134,7 @@ This is an alternative to setting it in the url. The value must be of the form "username:password". See the password escaping section to see how this value must escape certain characters. -Also see redirection authorization +Also see redirection authorization for important additional information. The pair of keys @@ -146,7 +143,7 @@ can be used as an alternative to HTTP.CREDENTIALS.USERPASSWORD to set the simple password authentication. If present, they take precedence over HTTP.CREDENTIALS.USERPASSWORD. The values do not need to be escaped. -See redirection authorization +See redirection authorization for important additional information. ### Cookie Jar @@ -157,7 +154,7 @@ to read cookies (CURLOPT_COOKIEJAR) and also the file into which to store cookies (CURLOPT_COOKIEFILE). The same value is used for both CURLOPT values. It defaults to in-memory storage. -See [redirection authorization](#REDIR) +See [redirection authorization](#auth_redir) for important additional information. ### Certificate Authentication @@ -191,7 +188,7 @@ deprecated; use HTTP.PROXY.SERVER HTTP.NETRC specifies the absolute path of the .netrc file, and causes it to be used instead of username and password. -See [redirection authorization](#REDIR) +See [redirection authorization](#auth_redir) for information about using *.netrc*. ## Password Escaping {#auth_userpwdescape} @@ -289,7 +286,7 @@ machine urs.earthdata.nasa.gov login password Some systems, notably ESG (Earth System Grid), requires the use of client-side certificates, as well as being -[re-direction based](#REDIR). +[re-direction based](#auth_redir). This requires setting the following entries: - HTTP.COOKIEJAR — a file path for storing cookies across re-direction. @@ -306,7 +303,7 @@ Note that the first two are there to support re-direction based authentication. 1. https://curl.haxx.se/libcurl/c/curl_easy_setopt.html 2. https://curl.haxx.se/docs/ssl-compared.html -## Appendix A. All RC-File Keys {#auth_allkeys} +## Authorization Appendix A. All RC-File Keys {#auth_allkeys} For completeness, this is the list of all rc-file keys. If this documentation is out of date with respect to the actual code, @@ -333,21 +330,21 @@ the code is definitive. HTTP.NETRCCURLOPT_NETRC,CURLOPT_NETRC_FILE -## Appendix B. URS Access in Detail {#auth_ursdetail} +## Authorization Appendix B. URS Access in Detail {#auth_ursdetail} It is possible to use the NASA Earthdata Login System (URS) with netcdf by using using the process specified in the -[redirection based authorization section](#REDIR). +[redirection based authorization section](#auth_redir). In order to access URS controlled datasets, however, it is necessary to register as a user with NASA at this website (subject to change): https://uat.urs.earthdata.nasa.gov/ -## Appendix C. ESG Access in Detail {#auth_esgdetail} +## Authorization Appendix C. ESG Access in Detail {#auth_esgdetail} It is possible to access Earth Systems Grid (ESG) datasets from ESG servers through the netCDF API using the techniques -described in the section on [Client-Side Certificates](#CLIENTCERTS). +described in the section on [Client-Side Certificates](#auth_clientcerts). In order to access ESG datasets, however, it is necessary to register as a user with ESG and to setup your environment @@ -430,7 +427,7 @@ named "truststore" ### Running the C Client -Refer to the section on [Client-Side Certificates](#CLIENTCERTS). +Refer to the section on [Client-Side Certificates](#auth_clientcerts). The keys specified there must be set in the rc file to support ESG access. - HTTP.COOKIEJAR=~/.dods_cookies diff --git a/docs/footer.html b/docs/footer.html index 5b48940605..efa3357e59 100644 --- a/docs/footer.html +++ b/docs/footer.html @@ -1,21 +1,17 @@ - - - -