diff --git a/mingw-w64-netcdf/0001-mingw-cmake.patch b/mingw-w64-netcdf/0001-mingw-cmake.patch index 946a9a2719..4efec84982 100644 --- a/mingw-w64-netcdf/0001-mingw-cmake.patch +++ b/mingw-w64-netcdf/0001-mingw-cmake.patch @@ -1,38 +1,57 @@ ---- netcdf-4.4.1.1/CMakeLists.txt.orig 2017-02-01 08:16:34.358615500 +0300 -+++ netcdf-4.4.1.1/CMakeLists.txt 2017-02-01 08:20:43.083093300 +0300 -@@ -163,7 +163,7 @@ +--- netcdf-4.6.0/CMakeLists.txt.orig 2018-01-25 18:32:02.000000000 +0100 ++++ netcdf-4.6.0/CMakeLists.txt 2018-03-16 18:07:25.976347300 +0100 +@@ -169,7 +169,7 @@ # Set Memory test program for non-MSVC based builds. # Assume valgrind for now. -IF(NOT MSVC) -+IF(NOT WIN32) ++IF((NOT MSVC) AND (NOT MINGW)) SET(CTEST_MEMORYCHECK_COMMAND valgrind CACHE STRING "") ENDIF() -@@ -245,7 +245,7 @@ +@@ -249,10 +249,14 @@ + ADD_DEFINITIONS() + ++# Add specific flags for environments that use the windows runtime (MSVC and MINGW) # Suppress CRT Warnings. - # Only necessary for Windows +-# Only necessary for Windows -IF(MSVC) -+IF(WIN32) ++# specify tempfile ++# specify exceptions in sscanf ++IF(MSVC OR MINGW) ADD_DEFINITIONS(-D_CRT_SECURE_NO_WARNINGS) ++ SET (HAVE_WIN_TEMP ON) ++ SET (HAVE_WIN_SSCANF ON) ENDIF() -@@ -267,7 +267,7 @@ + ##### +@@ -273,7 +277,7 @@ # Configuration for post-install RPath # Adapted from http://www.cmake.org/Wiki/CMake_RPATH_handling ## -IF(NOT MSVC) -+IF(NOT WIN32) ++IF((NOT MSVC) AND (NOT MINGW)) # use, i.e. don't skip the full RPATH for the build tree SET(CMAKE_SKIP_BUILD_RPATH FALSE) -@@ -839,7 +839,7 @@ +@@ -891,7 +895,7 @@ SET(NC_CTEST_DROP_LOC_PREFIX "" CACHE STRING "Prefix for Dashboard location on remote server when using CTest-based testing.") FIND_PROGRAM(HOSTNAME_CMD NAMES hostname) - IF(NOT MSVC) -+ IF(NOT WIN32) ++ IF((NOT MSVC) AND (NOT MINGW)) SET(HOSTNAME_ARG "-s") ENDIF() IF(HOSTNAME_CMD) +@@ -1379,7 +1383,9 @@ + CHECK_FUNCTION_EXISTS(strndup HAVE_STRNDUP) + CHECK_FUNCTION_EXISTS(strtoll HAVE_STRTOLL) + CHECK_FUNCTION_EXISTS(strtoull HAVE_STRTOULL) +-CHECK_FUNCTION_EXISTS(mkstemp HAVE_MKSTEMP) ++IF (NOT MINGW) ++ CHECK_FUNCTION_EXISTS(mkstemp HAVE_MKSTEMP) ++ENDIF(NOT MINGW) + CHECK_FUNCTION_EXISTS(mktemp HAVE_MKTEMP) + CHECK_FUNCTION_EXISTS(random HAVE_RANDOM) + CHECK_FUNCTION_EXISTS(gettimeofday HAVE_GETTIMEOFDAY) diff --git a/mingw-w64-netcdf/0002-dutil-correcttypo.patch b/mingw-w64-netcdf/0002-dutil-correcttypo.patch new file mode 100644 index 0000000000..b247b9d67f --- /dev/null +++ b/mingw-w64-netcdf/0002-dutil-correcttypo.patch @@ -0,0 +1,11 @@ +--- netcdf-4.6.0/libdispatch/dutil.c.old 2018-01-25 18:32:02.000000000 +0100 ++++ netcdf-4.6.0/libdispatch/dutil.c 2018-02-28 18:22:09.019723300 +0100 +@@ -225,7 +225,7 @@ + _mktemp_s(tmp,sizeof(tmp)-1); + #else /*!_MSC_VER*/ + mktemp(tmp); +- tmo[sizeof[tmp]-1] = '\0'; ++ tmp[sizeof(tmp)-1] = '\0'; + #endif + #else /* !HAVE_MKTEMP */ + /* Need to simulate by using some kind of pseudo-random number */ diff --git a/mingw-w64-netcdf/0003-ncconfigure-strlcat-export.patch b/mingw-w64-netcdf/0003-ncconfigure-strlcat-export.patch new file mode 100644 index 0000000000..be33eb3379 --- /dev/null +++ b/mingw-w64-netcdf/0003-ncconfigure-strlcat-export.patch @@ -0,0 +1,21 @@ +--- netcdf-4.6.0/include/ncconfigure.h.orig 2018-03-05 20:39:39.189518100 +0100 ++++ netcdf-4.6.0/include/ncconfigure.h 2018-03-05 20:44:07.802389700 +0100 +@@ -51,9 +51,18 @@ + /* Windows strlcat_s is equivalent to strlcat, but different arg order */ + #define strlcat(d,s,n) strcat_s((d),(n),(s)) + #else ++#if defined(DLL_NETCDF) ++# if defined(DLL_EXPORT) ++# define GTOPT_EXTRA __declspec(dllexport) ++# else ++# define GTOPT_EXTRA __declspec(dllimport) ++# endif ++GTOPT_EXTRA extern size_t strlcat(char* dst, const char* src, size_t dsize); ++#else + extern size_t strlcat(char* dst, const char* src, size_t dsize); + #endif + #endif ++#endif + + #ifndef nulldup + #define nulldup(s) ((s)==NULL?NULL:strdup(s)) diff --git a/mingw-w64-netcdf/0004-ddispatch-set-temp.patch b/mingw-w64-netcdf/0004-ddispatch-set-temp.patch new file mode 100644 index 0000000000..240dec6934 --- /dev/null +++ b/mingw-w64-netcdf/0004-ddispatch-set-temp.patch @@ -0,0 +1,13 @@ +--- netcdf-4.6.0/libdispatch/ddispatch.c.orig 2018-01-25 18:31:50.000000000 +0100 ++++ netcdf-4.6.0/libdispatch/ddispatch.c 2018-03-16 18:12:05.695639600 +0100 +@@ -77,8 +77,8 @@ + char* p; + char* q; + char cwd[4096]; +-#ifdef _MSC_VER +- tempdir = getenv("TEMP"); ++#ifdef HAVE_WIN_TEMP ++ tempdir = getenv("TEMP"); + #else + tempdir = "/tmp"; + #endif diff --git a/mingw-w64-netcdf/0005-dapcvt-conversion.patch b/mingw-w64-netcdf/0005-dapcvt-conversion.patch new file mode 100644 index 0000000000..23956f1722 --- /dev/null +++ b/mingw-w64-netcdf/0005-dapcvt-conversion.patch @@ -0,0 +1,43 @@ +--- netcdf-4.6.0/libdap2/dapcvt.c.orig 2018-01-25 18:31:50.000000000 +0100 ++++ netcdf-4.6.0/libdap2/dapcvt.c 2018-03-08 21:55:02.349612700 +0100 +@@ -236,7 +236,7 @@ + case NC_FLOAT: { + float* p = (float*)dstmem; + ok = sscanf(s,"%g%n",p,&nread); +-#if defined(_MSC_VER) && (_MSC_VER == 1500) ++#ifdef HAVE_WIN_SSCANF + if (!_strnicmp(s, "NaN", 3)) { + ok = 1; + nread = 3; +@@ -246,7 +246,7 @@ + case NC_DOUBLE: { + double* p = (double*)dstmem; + ok = sscanf(s,"%lg%n",p,&nread); +-#if defined(_MSC_VER) && (_MSC_VER == 1500) ++#ifdef HAVE_WIN_SSCANF + if (!_strnicmp(s, "NaN", 3)) { + ok = 1; + nread = 3; +@@ -255,10 +255,12 @@ + } break; + case NC_UBYTE: { + unsigned char* p = (unsigned char*)dstmem; +-#ifdef _MSC_VER ++#ifdef HAVE_WIN_SSCANF + unsigned int uval; + ok = sscanf(s,"%u%n",&uval,&nread); ++#ifdef _MSC_VER + _ASSERTE(_CrtCheckMemory()); ++#endif + /* For back compatibility, we allow any value, but force conversion */ + uval = (uval & 0xFF); + *p = (unsigned char)uval; +@@ -276,7 +278,7 @@ + } break; + case NC_INT64: { + long long* p = (long long*)dstmem; +-#ifdef _MSC_VER ++#ifdef HAVE_WIN_SSCANF + ok = sscanf(s, "%I64d%n", p,&nread); + #else + ok = sscanf(s,"%lld%n",p,&nread); diff --git a/mingw-w64-netcdf/0006-cvt-conversion.patch b/mingw-w64-netcdf/0006-cvt-conversion.patch new file mode 100644 index 0000000000..4c74f4198f --- /dev/null +++ b/mingw-w64-netcdf/0006-cvt-conversion.patch @@ -0,0 +1,20 @@ +--- netcdf-4.6.0/ncgen/cvt.c.orig 2018-03-13 21:50:55.762607800 +0100 ++++ netcdf-4.6.0/ncgen/cvt.c 2018-03-13 21:52:12.171941700 +0100 +@@ -18,7 +18,7 @@ + Constvalue tmp; + unsigned char* bytes = NULL; + size_t bytelen; +-#ifdef _MSC_VER ++#ifdef HAVE_WIN_SSCANF + int byteval; + #endif + dst->lineno = src->lineno; +@@ -407,7 +407,7 @@ + break; + + /* Conversion of a string to e.g. an integer should be what?*/ +-#ifdef _MSC_VER ++#ifdef HAVE_WIN_SSCANF + case CASE(NC_STRING,NC_BYTE): + sscanf(src->value.stringv.stringv,"%d",&byteval); tmp.int8v = (char)byteval; break; + case CASE(NC_STRING,NC_UBYTE): diff --git a/mingw-w64-netcdf/0007-mingw-config.patch b/mingw-w64-netcdf/0007-mingw-config.patch new file mode 100644 index 0000000000..cc73960f14 --- /dev/null +++ b/mingw-w64-netcdf/0007-mingw-config.patch @@ -0,0 +1,14 @@ +--- netcdf-4.6.0/config.h.cmake.in.orig 2018-01-25 18:31:50.000000000 +0100 ++++ netcdf-4.6.0/config.h.cmake.in 2018-03-16 18:09:40.620183800 +0100 +@@ -64,6 +64,11 @@ + #define strtoll _strtoi64 + #endif /*_MSC_VER */ + ++/* define flags needed when windows runtime is used (MINGW and MSVC) */ ++#cmakedefine MINGW ++#cmakedefine HAVE_WIN_TEMP ++#cmakedefine HAVE_WIN_SSCANF ++ + #cmakedefine const + + #ifndef _FILE_OFFSET_BITS diff --git a/mingw-w64-netcdf/PKGBUILD b/mingw-w64-netcdf/PKGBUILD index 38452cb2d7..f341c0751d 100644 --- a/mingw-w64-netcdf/PKGBUILD +++ b/mingw-w64-netcdf/PKGBUILD @@ -3,7 +3,7 @@ _realname=netcdf pkgbase=mingw-w64-${_realname} pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" -pkgver=4.5.0 +pkgver=4.6.1 pkgrel=1 pkgdesc="Interface for scientific data access to large binary data (mingw-w64)" arch=('any') @@ -13,13 +13,31 @@ depends=("${MINGW_PACKAGE_PREFIX}-hdf5") makedepends=("${MINGW_PACKAGE_PREFIX}-gcc" "${MINGW_PACKAGE_PREFIX}-cmake") source=("ftp://ftp.unidata.ucar.edu/pub/netcdf/${_realname}-${pkgver}.zip" - 0001-mingw-cmake.patch) -sha256sums=('015e7a02f35f2bbb2c102297505d35a0ce89f4a547f3ae67070d9e603d7b9413' - '7aa8c851925b680fabf9a78950cab4a3e315728b1a16937719bb0b9a76a67cde') + 0001-mingw-cmake.patch + 0002-dutil-correcttypo.patch + 0003-ncconfigure-strlcat-export.patch + 0004-ddispatch-set-temp.patch + 0005-dapcvt-conversion.patch + 0006-cvt-conversion.patch + 0007-mingw-config.patch) +sha256sums=('94ff06be0d5b998f6f5e31ed8fdbdeac50e6f8267fe9624a1a3ef2e34d0a45e4' + '6990366e780dfba6f1070d6bd3eae66d79ff41f5d133c51d2409e3d071527407' + 'da666e1f762b3ecd2becc9ad55fe1e32be9a47b5bae4f7990e7d94aae69697cd' + 'a1047a8feb86732e2f6087db5240da955045f5f653f9406103ce733c4850b536' + 'aeb61f0a4d69e26b2235b15948ac6b99ac92be5b0f8155bfa7aa4867af84efa8' + '4b7e818c06ef33fbbfc6fa12f43ada74f0d38c89e989141adadb22f9c3993810' + '66f2b494142d4c39096d80765df38254bb3c46829636fccc4d085f63e65bdb6c' + 'a1aa112779a83ec74acd7de8a0a57915f5d37cae44633d0a4d0d20784a2d288c') prepare() { cd "${srcdir}/${_realname}-${pkgver}" patch -p1 -i ${srcdir}/0001-mingw-cmake.patch + patch -p1 -i ${srcdir}/0002-dutil-correcttypo.patch + patch -p1 -i ${srcdir}/0003-ncconfigure-strlcat-export.patch + patch -p1 -i ${srcdir}/0004-ddispatch-set-temp.patch + patch -p1 -i ${srcdir}/0005-dapcvt-conversion.patch + patch -p1 -i ${srcdir}/0006-cvt-conversion.patch + patch -p1 -i ${srcdir}/0007-mingw-config.patch } build() { @@ -27,13 +45,14 @@ build() { mkdir -p ${srcdir}/build-static-${MINGW_CHOST} && cd ${srcdir}/build-static-${MINGW_CHOST} MSYS2_ARG_CONV_EXCL="-DCMAKE_INSTALL_PREFIX=" \ - ${MINGW_PREFIX}/bin/cmake -G "MSYS Makefiles" \ + ${MINGW_PREFIX}/bin/cmake \ + -G "MSYS Makefiles" \ -DCMAKE_INSTALL_PREFIX=${MINGW_PREFIX} \ -DCMAKE_BUILD_TYPE=Release \ -DBUILD_SHARED_LIBS=OFF \ -DENABLE_DLL=OFF \ - -DENABLE_DAP=OFF \ - -DBUILD_TESTING=OFF \ + -DENABLE_DAP=ON \ + -DENABLE_TESTS=OFF \ -DENABLE_DYNAMIC_LOADING=OFF \ -DENABLE_NETCDF_4=ON \ "${srcdir}/${_realname}-${pkgver}" @@ -43,14 +62,16 @@ build() { mkdir -p ${srcdir}/build-shared-${MINGW_CHOST} && cd ${srcdir}/build-shared-${MINGW_CHOST} MSYS2_ARG_CONV_EXCL="-DCMAKE_INSTALL_PREFIX=" \ - ${MINGW_PREFIX}/bin/cmake -G "MSYS Makefiles" \ + ${MINGW_PREFIX}/bin/cmake \ + -G "MSYS Makefiles" \ -DCMAKE_INSTALL_PREFIX=${MINGW_PREFIX} \ -DCMAKE_BUILD_TYPE=Release \ -DBUILD_SHARED_LIBS=ON \ - -DENABLE_DAP=OFF \ - -DBUILD_TESTING=OFF \ + -DENABLE_DAP=ON \ + -DENABLE_TESTS=OFF \ -DENABLE_DYNAMIC_LOADING=OFF \ -DENABLE_NETCDF_4=ON \ + -DENABLE_LOGGING=ON \ "${srcdir}/${_realname}-${pkgver}" make }