# HG changeset patch # User John Donoghue # Date 1629720576 14400 # Node ID c7f54fa711854e33fc34eaf9d9c5a53a72f0eac5 # Parent 166aff1564eeb521ac3b50196a59586a6ca4e09c netcdf: update to v4.8.0 * src/netcdf.mk: update to v4.8.0 * src/netcdf-1-fixes.patch: update patch diff -r 166aff1564ee -r c7f54fa71185 src/netcdf-1-fixes.patch --- a/src/netcdf-1-fixes.patch Sat Aug 21 20:49:11 2021 +0200 +++ b/src/netcdf-1-fixes.patch Mon Aug 23 08:09:36 2021 -0400 @@ -1,36 +1,206 @@ -diff -ur netcdf-c-4.7.4.orig/include/XGetopt.h netcdf-c-4.7.4/include/XGetopt.h ---- netcdf-c-4.7.4.orig/include/XGetopt.h 2020-12-02 07:32:11.168214023 -0500 -+++ netcdf-c-4.7.4/include/XGetopt.h 2020-12-02 07:33:54.920018162 -0500 -@@ -20,6 +20,7 @@ - #include - #include - -+#if !defined(HAVE_GETOPT_H) - #if defined(DLL_NETCDF) - # if defined(DLL_EXPORT) - # define GTOPT_EXTRA __declspec(dllexport) -@@ -36,5 +37,6 @@ - extern TCHAR *optarg; - - int getopt(int argc, TCHAR *argv[], TCHAR *optstring); -+#endif - - #endif //XGETOPT_H -diff -ur netcdf-c-4.7.4.orig/ncdump/ncvalidator.c netcdf-c-4.7.4/ncdump/ncvalidator.c ---- netcdf-c-4.7.4.orig/ncdump/ncvalidator.c 2020-12-02 07:32:11.204216037 -0500 -+++ netcdf-c-4.7.4/ncdump/ncvalidator.c 2020-12-02 07:41:06.753176006 -0500 -@@ -76,10 +76,14 @@ - #ifdef _WIN32 - #include - #define snprintf _snprintf -+#ifndef HAVE_UNISTD_H - #include "XGetopt.h" -+#endif -+#if !defined(HAVE_GETOPT_H) - int opterr; - int optind; +From 51fa5fce1b4ec3b414917b352c84976f3aa0f552 Mon Sep 17 00:00:00 2001 +From: Dennis Heimbigner +Date: Tue, 18 May 2021 14:06:12 -0600 +Subject: [PATCH 1/6] Fix NCclosedir in dpathmgr.c + +re: Issue https://github.com/Unidata/netcdf-c/issues/1999 + +NCclosedir code is incorrect. Fix. +Note that this issue crops up when using a non-VisualStudio windows build +such as Mingw because Mingq defines dirent.h, but Visual Studio does not. +--- + libdispatch/dpathmgr.c | 35 +---------------------------------- + 1 file changed, 1 insertion(+), 34 deletions(-) + +diff --git a/libdispatch/dpathmgr.c b/libdispatch/dpathmgr.c +index 0a3e312eb7..6ab6588af6 100644 +--- a/libdispatch/dpathmgr.c ++++ b/libdispatch/dpathmgr.c +@@ -356,10 +356,7 @@ int + NCclosedir(DIR* ent) + { + int stat = NC_NOERR; +- char* cvtname = NCpathcvt(path); +- if(cvtname == NULL) {errno = ENOENT; return -1;} +- stat = closedir(cvtname); +- free(cvtname); ++ if(closedir(ent) < 0) stat = errno; + return stat; + } #endif -+#endif +@@ -911,33 +908,3 @@ printutf8hex(const char* s, char* sx) + } + *q = '\0'; + } +- +-/**************************************************/ +-#if 0 +-#ifdef HAVE_DIRENT_H +-EXTERNL +-DIR* +-NCopendir(const char* path) +-{ +- DIR* ent = NULL; +- char* cvtpath = NCpathcvt(path); +- if(cvtpath == NULL) return -1; +- ent = opendir(cvtpath); +- free(cvtpath); +- return ent; +-} +- +-EXTERNL +-int +-NCclosedir(DIR* ent) +-{ +- int stat = 0; +- char* cvtpath = NCpathcvt(path); +- if(cvtpath == NULL) return -1; +- stat = closedir(cvtpath); +- free(cvtpath); +- return stat; +-} +-#endif +-#endif /*0*/ +- + +From edc2c7af98c4752555c873f4e1ad38e113184687 Mon Sep 17 00:00:00 2001 +From: Dennis Heimbigner +Date: Wed, 19 May 2021 17:19:33 -0600 +Subject: [PATCH 4/6] fix cygwin build + +--- + ncdump/Makefile.am | 6 +++++- + test_common.in | 1 + + 2 files changed, 6 insertions(+), 1 deletion(-) + +diff --git a/ncdump/Makefile.am b/ncdump/Makefile.am +index b5cd0438b7..017a00d994 100644 +--- a/ncdump/Makefile.am ++++ b/ncdump/Makefile.am +@@ -66,7 +66,7 @@ bom tst_dimsizes nctrunc tst_rcmerge + # Tests for classic and 64-bit offset files. + TESTS = tst_inttags.sh run_tests.sh tst_64bit.sh ref_ctest \ + ref_ctest64 tst_output.sh tst_lengths.sh tst_calendars.sh \ +-run_utf8_tests.sh test_unicode_directory.sh tst_nccopy3.sh tst_nccopy3_subset.sh \ ++run_utf8_tests.sh tst_nccopy3.sh tst_nccopy3_subset.sh \ + tst_charfill.sh tst_iter.sh tst_formatx3.sh tst_bom.sh \ + tst_dimsizes.sh run_ncgen_tests.sh tst_ncgen4_classic.sh test_radix.sh test_rcmerge.sh + +@@ -80,6 +80,10 @@ if USE_STRICT_NULL_BYTE_HEADER_PADDING + XFAIL_TESTS += tst_null_byte_padding.sh + endif + ++if ! ISCYGWIN ++TESTS += test_unicode_directory.sh ++endif ++ + if LARGE_FILE_TESTS + TESTS += tst_iter.sh + endif +diff --git a/test_common.in b/test_common.in +index 539be6fdf5..5e36b301b1 100644 +--- a/test_common.in ++++ b/test_common.in +@@ -10,6 +10,7 @@ TOPSRCDIR='@abs_top_srcdir@' + TOPBUILDDIR='@abs_top_builddir@' + FP_ISCMAKE=@ISCMAKE@ + FP_ISMSVC=@ISMSVC@ ++FP_ISCYGWIN=@ISCYGWIN@ - #define X_ALIGN 4 - #define X_INT_MAX 2147483647 + # Feature flags + FEATURE_HDF5=@HAS_HDF5@ + +From 537f41aeb355fc4ee481fedf0e91f342c59e6b82 Mon Sep 17 00:00:00 2001 +From: Dennis Heimbigner +Date: Wed, 19 May 2021 17:41:41 -0600 +Subject: [PATCH 5/6] Fix 2 for cygwin build + +--- + libnczarr/zmap.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/libnczarr/zmap.c b/libnczarr/zmap.c +index 19e19a2cbe..ed162dead4 100644 +--- a/libnczarr/zmap.c ++++ b/libnczarr/zmap.c +@@ -377,13 +377,16 @@ nczm_localize(const char* path, char** localpathp, int localize) + char* p; + int forward = 1; + int offset = 0; ++ static const char* windrive = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; + + #ifdef _MSC_VER + forward = (localize?0:1); + #endif + /* If path comes from a url, then it may start with: /x:/... + where x is a drive letter. If so, then remove leading / */ +- if(path[0] == '/' && NChasdriveletter(path+1)) ++ if(strlen(path) >= 4 ++ && path[0] == '/' && strchr(windrive,path[1]) != NULL ++ && path[2] == ':' && path[3] == '/') + offset = 1; + if((localpath = strdup(path+offset))==NULL) return NC_ENOMEM; + + +From 0e931f22a5c328ce6734cc1674a617c910a9db3e Mon Sep 17 00:00:00 2001 +From: Dennis Heimbigner +Date: Wed, 19 May 2021 21:04:53 -0600 +Subject: [PATCH 6/6] More cygwin fixes + +--- + configure.ac | 8 ++++++-- + nc_test4/findplugin.in | 10 ++-------- + 2 files changed, 8 insertions(+), 10 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 25598e9deb..1283aa75ad 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1095,10 +1095,16 @@ AC_C_BIGENDIAN + # Figure out platforms of special interest + case "`uname`" in + CYGWIN*) ISCYGWIN=yes;; ++ Darwin*) ISOSX=yes;; + WIN*) ISMSVC=yes;; + esac + AM_CONDITIONAL(ISCYGWIN, [test "x$ISCYGWIN" = xyes]) + AM_CONDITIONAL(ISMSVC, [test "x$ISMSVC" = xyes]) ++AM_CONDITIONAL(ISOSX, [test "x$ISOSX" = xyes]) ++ ++AC_SUBST([ISMSVC], [${ISMSVC}]) ++AC_SUBST([ISCYGWIN], [${ISCYGWIN}]) ++AC_SUBST([ISOSX], [${ISOSX}]) + + ### + # Crude hack to work around an issue +@@ -1722,8 +1728,6 @@ AC_DEFINE_UNQUOTED([NC_DISPATCH_VERSION], [${NC_DISPATCH_VERSION}], [Dispatch ta + # End netcdf_meta.h definitions. + ##### + +-# This would be true for a visual studio build. +-AC_SUBST([ISMSVC], [${ISMSVC}]) + # This would be true for a cmake build. + AC_SUBST([ISCMAKE], []) + +diff --git a/nc_test4/findplugin.in b/nc_test4/findplugin.in +index aafe051de8..9819659686 100644 +--- a/nc_test4/findplugin.in ++++ b/nc_test4/findplugin.in +@@ -27,14 +27,8 @@ FP_NAME="$1" + # Figure out the compiler (some values from ./configure) + FP_ISCMAKE=@ISCMAKE@ + FP_ISMSVC=@ISMSVC@ +- +-# Are we operating under OS-X? (test using uname) +-FP_OS=`uname | cut -d '_' -f 1` +-if test "x$FP_OS" = xDarwin ; then FP_ISOSX=1; fi +- +-# Are we operating under CYGWIN? (test using uname) +-FP_OS=`uname | cut -d '_' -f 1` +-if test "x$FP_OS" = xCYGWIN ; then FP_ISCYGWIN=1; fi ++FP_ISCYGWIN=@ISCYGWIN@ ++FP_ISOSX=@ISOSX@ + + FP_PLUGINS="$TOPBUILDDIR/plugins" + + diff -r 166aff1564ee -r c7f54fa71185 src/netcdf.mk --- a/src/netcdf.mk Sat Aug 21 20:49:11 2021 +0200 +++ b/src/netcdf.mk Mon Aug 23 08:09:36 2021 -0400 @@ -3,8 +3,8 @@ PKG := netcdf $(PKG)_IGNORE := -$(PKG)_VERSION := 4.7.4 -$(PKG)_CHECKSUM := dce4851dd65bf8ec985f11711bb5a8aa299515b9 +$(PKG)_VERSION := 4.8.0 +$(PKG)_CHECKSUM := 727a8fa93da516567106266b4a16d9fd792cf443 $(PKG)_SUBDIR := netcdf-c-$($(PKG)_VERSION) $(PKG)_FILE := netcdf-c-$($(PKG)_VERSION).tar.gz $(PKG)_URL := ftp://ftp.unidata.ucar.edu/pub/netcdf/$($(PKG)_FILE) @@ -32,7 +32,8 @@ fi cd '$(1)' && ./configure \ $(HOST_AND_BUILD_CONFIGURE_OPTIONS) \ - $(CONFIGURE_CPPFLAGS) $(CONFIGURE_LDFLAGS) \ + CPPFLAGS='-DH5_USE_110_API -I$(HOST_PREFIX)/include' \ + $(CONFIGURE_LDFLAGS) \ $(ENABLE_SHARED_OR_STATIC) \ --prefix='$(HOST_PREFIX)' \ $($(PKG)_CONFIGURE_OPTIONS) \