mirror of
https://github.com/Unidata/netcdf-c.git
synced 2024-12-09 08:11:38 +08:00
245961de00
https://github.com/Unidata/netcdf-c/issues/1168 https://github.com/Unidata/netcdf-c/issues/1163 https://github.com/Unidata/netcdf-c/issues/1162 This PR partially fixes memory leaks in the netcdf-c library, in the ncdump utility, and in some test cases. The netcdf-c library now runs memory clean with the assumption that the --disable-utilities option is used. The primary remaining problem is ncgen. Once that is fixed, I believe the netcdf-c library will run memory clean with no limitations. Notes ----------- 1. Memory checking was performed using gcc -fsanitize=address. Valgrind-based testing has yet to be performed. 2. The pnetcdf, hdf4, and examples code has not been tested. Misc. Non-leak changes 1. Make tst_diskless2 only run when netcdf4 is enabled (issue 1162) 2. Fix CmakeLists.txt to turn off logging if ENABLE_NETCDF_4 is OFF 3. Isolated all my debug scripts into a single top-level directory called debug 4. Fix some USE_NETCDF4 dependencies in nc_test and nc_test4 Makefile.am
222 lines
4.6 KiB
Bash
222 lines
4.6 KiB
Bash
#!/bin/bash
|
|
#NB=1
|
|
DB=1
|
|
#X=-x
|
|
|
|
#MEM=1
|
|
#NOTUIL=1
|
|
#FAST=1
|
|
#PROF=1
|
|
|
|
HDF5=1
|
|
DAP=1
|
|
#SZIP=1
|
|
#HDF4=1
|
|
#PNETCDF=1
|
|
#PAR4=1
|
|
|
|
#TESTSERVERS="localhost:8080,149.165.169.123:8080"
|
|
|
|
if test $# != 0 ; then
|
|
cmds=$@
|
|
fi
|
|
|
|
if test "x$PNETCDF" = x1 -o "x$PAR4" = x1 ; then
|
|
MPIO=1
|
|
fi
|
|
|
|
CFLAGS=""
|
|
#CFLAGS="-Wall -Wno-unused-but-set-variable -Wno-unused-variable -Wno-unused-parameter -Wconversion ${CFLAGS}"
|
|
#CFLAGS="-Wall -Wno-unused-but-set-variable -Wno-unused-variable -Wno-unused-parameter -Wno-char-subscripts -Wno-pointer-sign -Wno-format ${CFLAGS}"
|
|
CFLAGS="-Wall -Wno-unused-parameter -Wno-char-subscripts -Wno-pointer-sign ${CFLAGS}"
|
|
#CFLAGS="-Wall ${CFLAGS}"
|
|
#CFLAGS="-Wconversion"
|
|
|
|
if test "x$MEM" = x1 ; then
|
|
CFLAGS="-fsanitize=address ${CFLAGS}"
|
|
fi
|
|
|
|
stddir="/usr/local"
|
|
PREFIX=/usr/local
|
|
|
|
if test "x${cmds}" = x ; then
|
|
cmds=""
|
|
else
|
|
for f in $cmds ; do
|
|
if test "x$f" = "xdistcheck" ; then
|
|
PREFIX=/tmp/$HOST
|
|
fi
|
|
done
|
|
fi
|
|
|
|
# HDF4=>HDF5
|
|
if test "x$HDF4" = x1 ; then
|
|
HDF5=1
|
|
fi
|
|
|
|
# !HDF5=>!SZIP
|
|
if test "x$HDF5" != x1 ; then
|
|
SZIP=0
|
|
fi
|
|
|
|
CC=gcc
|
|
|
|
MALLOC_CHECK=""
|
|
|
|
CPPFLAGS=""
|
|
LDFLAGS=""
|
|
|
|
CFLAGS="-g -O0 $CFLAGS -Wno-undefined"
|
|
|
|
MAKE=make
|
|
IGNORE="test 0 = 1"
|
|
|
|
if test "x$HDF5" = "x1" ; then
|
|
CPPFLAGS="-I${stddir}/include $CPPFLAGS"
|
|
LDFLAGS="-L${stddir}/lib -lhdf5_hl -lhdf5 -lz $LDFLAGS"
|
|
LD_LIBRARY_PATH="${stddir}/lib:$LD_LIBRARY_PATH"
|
|
fi
|
|
|
|
if test "x$HDF4" = "x1" ; then
|
|
LDFLAGS="$LDFLAGS -lmfhdf -ldf -ljpeg"
|
|
fi
|
|
|
|
if test "x$SZIP" = "x1" ; then
|
|
LDFLAGS="$LDFLAGS -lsz -laec"
|
|
fi
|
|
|
|
export PKG_CONFIG_PATH=/usr/lib/pkgconfig
|
|
if test "x$DAP" = "x1" ; then
|
|
if curl-config --version >/dev/null ; then
|
|
TMP=`curl-config --cflags`
|
|
CPPFLAGS="$TMP $CPPFLAGS"
|
|
TMP=`curl-config --libs`
|
|
LDFLAGS="$TMP $LDFLAGS"
|
|
TMP=`curl-config --prefix`
|
|
LD_LIBRARY_PATH="$TMP/lib:$LD_LIBRARY_PATH"
|
|
else
|
|
LDFLAGS="${LDFLAGS} -lcurl"
|
|
fi
|
|
fi
|
|
|
|
CXXFLAGS="$CPPFLAGS $CXXFLAGS"
|
|
|
|
FLAGS="--prefix ${PREFIX}"
|
|
#FLAGS="$FLAGS --disable-cxx"
|
|
#FLAGS="$FLAGS --disable-examples"
|
|
#FLAGS="$FLAGS --enable-cxx-4"
|
|
#FLAGS="$FLAGS --enable-dap-long-tests"
|
|
#FLAGS="$FLAGS --enable-ffio"
|
|
#FLAGS="$FLAGS --enable-benchmarks"
|
|
FLAGS="$FLAGS --enable-extreme-numbers"
|
|
#FLAGS="$FLAGS --enable-large-file-tests"
|
|
#FLAGS="$FLAGS --disable-testsets"
|
|
#FLAGS="$FLAGS --disable-dap-remote-tests"
|
|
#FLAGS="$FLAGS --enable-dap-auth-tests" -- requires a new remotetest server
|
|
#FLAGS="$FLAGS --enable-doxygen --enable-internal-docs"
|
|
FLAGS="$FLAGS --enable-logging"
|
|
#FLAGS="$FLAGS --disable-diskless"
|
|
FLAGS="$FLAGS --enable-mmap"
|
|
#FLAGS="$FLAGS --with-udunits"
|
|
#FLAGS="$FLAGS --with-libcf"
|
|
#FLAGS="$FLAGS --enable-jna"
|
|
#FLAGS="$FLAGS --disable-properties-attribute"
|
|
#FLAGS="$FLAGS --disable-silent-rules"
|
|
#FLAGS="$FLAGS --disable-filter-testing"
|
|
#FLAGS="$FLAGS --enable-metadata-perf"
|
|
#FLAGS="$FLAGS --with-ncproperties-extra=key1=value1,key2=value2"
|
|
#FLAGS="$FLAGS --enable-valgrind"
|
|
|
|
if test "x$TESTSERVERS" != x ; then
|
|
FLAGS="$FLAGS --with-testservers=$TESTSERVERS"
|
|
fi
|
|
|
|
if test "x$PAR4" != x1 ; then
|
|
FLAGS="$FLAGS --disable-parallel4"
|
|
fi
|
|
|
|
if test "x$NOUTIL" = x1 ; then
|
|
FLAGS="$FLAGS --disable-utilities"
|
|
fi
|
|
|
|
if test "x${DB}" = x1 ; then
|
|
FLAGS="$FLAGS --disable-shared --enable-static"
|
|
#FLAGS="$FLAGS --enable-static"
|
|
else
|
|
FLAGS="$FLAGS --enable-shared"
|
|
fi
|
|
|
|
#TMP=
|
|
#rm -f ./test_mpi.tmp
|
|
#if test -f $stddir/lib/libhdf5.a ; then
|
|
# nm $stddir/lib/libhdf5.a | grep mpich_mpi_float$ >./test_mpi.tmp
|
|
#else
|
|
# if test -f $stddir/lib/libhdf5.so ; then
|
|
# nm $stddir/lib/libhdf5.so | grep mpich_mpi_float$ >./test_mpi.tmp
|
|
# fi
|
|
#fi
|
|
#if test -s ./test_mpi.tmp ; then
|
|
# PAR=1
|
|
#fi
|
|
#rm -f ./test_mpi.tmp
|
|
|
|
if test "x${PAR}" != x ; then
|
|
FLAGS="$FLAGS --enable-parallel"
|
|
fi
|
|
|
|
if test "x$HDF5" = "x" ; then
|
|
FLAGS="$FLAGS --disable-netcdf-4"
|
|
fi
|
|
if test "x$HDF4" = x1 ; then
|
|
FLAGS="$FLAGS --enable-hdf4 --enable-hdf4-file-tests"
|
|
fi
|
|
if test "x$DAP" = "x" ; then
|
|
FLAGS="$FLAGS --disable-dap"
|
|
fi
|
|
|
|
if test "x$MPIO" = x1 ; then
|
|
# MPIDIR=/usr/lib64/mpich
|
|
MPIDIR=/usr/lib64/openmpi
|
|
PATH="${PATH}:${MPIDIR}/bin"
|
|
CC="${MPIDIR}/bin/mpicc"
|
|
CPPFLAGS="-I${MPIDIR}/include"
|
|
LDFLAGS="$LDFLAGS -L${MPIDIR}"
|
|
LDLIBS="-lmpich"
|
|
FLAGS="$FLAGS --enable-parallel-tests"
|
|
fi
|
|
|
|
if test "x$PNETCDF" = x1 ; then
|
|
FLAGS="$FLAGS --enable-pnetcdf"
|
|
fi
|
|
|
|
if test "x${PROF}" = x1 ; then
|
|
CFLAGS="${CFLAGS} -pg"
|
|
LDFLAGS="${LDFLAGS} -pg"
|
|
fi
|
|
|
|
export PATH
|
|
export CC
|
|
export CPPFLAGS
|
|
export CFLAGS
|
|
export LDFLAGS
|
|
export LD_LIBRARY_PATH
|
|
export MALLOC_CHECK
|
|
export CXXFLAGS
|
|
|
|
DISTCHECK_CONFIGURE_FLAGS="$FLAGS"
|
|
export DISTCHECK_CONFIGURE_FLAGS
|
|
|
|
if test "x$NB" != x1 && test "x$FAST" != x1 ; then
|
|
${MAKE} distclean >/dev/null 2>&1
|
|
fi
|
|
if test "x$NB" != x1 ; then
|
|
if autoreconf -i --force ; then ok=1; else exit ; fi
|
|
fi
|
|
|
|
sh $X ./configure ${FLAGS}
|
|
for c in $cmds; do
|
|
printenv LD_LIBRARY_PATH
|
|
${MAKE} ${FORCE} $c
|
|
done
|
|
exit 0
|