netcdf: Update to 4.6.1

This commit is contained in:
Alexey Pavlov
2018-04-06 09:06:30 +03:00
parent 8c31f32b35
commit 47e5d7d4c1
8 changed files with 183 additions and 21 deletions

View File

@@ -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)

View File

@@ -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 */

View File

@@ -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))

View File

@@ -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

View File

@@ -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);

View File

@@ -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):

View File

@@ -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

View File

@@ -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
}