annotate src/capnproto-0.6.0/super-test.sh @ 83:ae30d91d2ffe

Replace these with versions built using an older toolset (so as to avoid ABI compatibilities when linking on Ubuntu 14.04 for packaging purposes)
author Chris Cannam
date Fri, 07 Feb 2020 11:51:13 +0000
parents 0994c39f1e94
children
rev   line source
cannam@62 1 #! /usr/bin/env bash
cannam@62 2
cannam@62 3 set -euo pipefail
cannam@62 4
cannam@62 5 doit() {
cannam@62 6 echo "@@@@ $@"
cannam@62 7 "$@"
cannam@62 8 }
cannam@62 9
cannam@62 10 QUICK=
cannam@62 11
cannam@62 12 PARALLEL=$(nproc 2>/dev/null || echo 1)
cannam@62 13
cannam@62 14 while [ $# -gt 0 ]; do
cannam@62 15 case "$1" in
cannam@62 16 -j* )
cannam@62 17 PARALLEL=${1#-j}
cannam@62 18 ;;
cannam@62 19 test )
cannam@62 20 ;; # nothing
cannam@62 21 quick )
cannam@62 22 QUICK=quick
cannam@62 23 ;;
cannam@62 24 caffeinate )
cannam@62 25 # Re-run preventing sleep.
cannam@62 26 shift
cannam@62 27 exec caffeinate -ims $0 $@
cannam@62 28 ;;
cannam@62 29 tmpdir )
cannam@62 30 # Clone to a temp directory.
cannam@62 31 if [ "$#" -lt 2 ]; then
cannam@62 32 echo "usage: $0 tmpdir NAME [COMMAND]" >&2
cannam@62 33 exit 1
cannam@62 34 fi
cannam@62 35 DIR=/tmp/$2
cannam@62 36 shift 2
cannam@62 37 if [ -e $DIR ]; then
cannam@62 38 if [ "${DIR/*..*}" = "" ]; then
cannam@62 39 echo "NO DO NOT PUT .. IN THERE IT'S GOING TO GO IN /tmp AND I'M GONNA DELETE IT" >&2
cannam@62 40 exit 1
cannam@62 41 fi
cannam@62 42 if [ ! -e "$DIR/super-test.sh" ]; then
cannam@62 43 echo "$DIR exists and it doesn't look like one of mine." >&2
cannam@62 44 exit 1
cannam@62 45 fi
cannam@62 46 # make distcheck leaves non-writable files when it fails, so we need to chmod to be safe.
cannam@62 47 chmod -R +w $DIR
cannam@62 48 rm -rf $DIR
cannam@62 49 fi
cannam@62 50 git clone . $DIR
cannam@62 51 cd $DIR
cannam@62 52 exec ./super-test.sh "$@"
cannam@62 53 ;;
cannam@62 54 remote )
cannam@62 55 if [ "$#" -lt 2 ]; then
cannam@62 56 echo "usage: $0 remote HOST [COMMAND]" >&2
cannam@62 57 exit 1
cannam@62 58 fi
cannam@62 59 HOST=$2
cannam@62 60 shift 2
cannam@62 61 echo "========================================================================="
cannam@62 62 echo "Pushing code to $HOST..."
cannam@62 63 echo "========================================================================="
cannam@62 64 BRANCH=$(git rev-parse --abbrev-ref HEAD)
cannam@62 65 ssh $HOST '(chmod -fR +w tmp-test-capnp || true) && rm -rf tmp-test-capnp && mkdir tmp-test-capnp && git init tmp-test-capnp'
cannam@62 66 git push ssh://$HOST/~/tmp-test-capnp "$BRANCH:test"
cannam@62 67 ssh $HOST "cd tmp-test-capnp && git checkout test"
cannam@62 68 exec ssh $HOST "cd tmp-test-capnp && ./super-test.sh $@ && cd .. && rm -rf tmp-test-capnp"
cannam@62 69 ;;
cannam@62 70 compiler )
cannam@62 71 if [ "$#" -lt 2 ]; then
cannam@62 72 echo "usage: $0 compiler CXX_NAME" >&2
cannam@62 73 exit 1
cannam@62 74 fi
cannam@62 75 export CXX="$2"
cannam@62 76 shift
cannam@62 77 ;;
cannam@62 78 clang )
cannam@62 79 export CXX=clang++
cannam@62 80 ;;
cannam@62 81 gcc-4.9 )
cannam@62 82 export CXX=g++-4.9
cannam@62 83 ;;
cannam@62 84 gcc-4.8 )
cannam@62 85 export CXX=g++-4.8
cannam@62 86 ;;
cannam@62 87 gcc-4.7 )
cannam@62 88 export CXX=g++-4.7
cannam@62 89 ;;
cannam@62 90 mingw )
cannam@62 91 if [ "$#" -ne 2 ]; then
cannam@62 92 echo "usage: $0 mingw CROSS_HOST" >&2
cannam@62 93 exit 1
cannam@62 94 fi
cannam@62 95 CROSS_HOST=$2
cannam@62 96
cannam@62 97 cd c++
cannam@62 98 test -e configure || doit autoreconf -i
cannam@62 99 test ! -e Makefile || (echo "ERROR: Directory unclean!" >&2 && false)
cannam@62 100
cannam@62 101 export WINEPATH='Z:\usr\'"$CROSS_HOST"'\lib;Z:\usr\lib\gcc\'"$CROSS_HOST"'\6.3-win32;Z:'"$PWD"'\.libs'
cannam@62 102
cannam@62 103 doit ./configure --host="$CROSS_HOST" --disable-shared CXXFLAGS='-static-libgcc -static-libstdc++'
cannam@62 104
cannam@62 105 doit make -j$PARALLEL check
cannam@62 106 doit make distclean
cannam@62 107 rm -f *-mingw.exe
cannam@62 108 exit 0
cannam@62 109 ;;
cannam@62 110 android )
cannam@62 111 # To install Android SDK:
cannam@62 112 # - Download command-line tools: https://developer.android.com/studio/index.html#command-tools
cannam@62 113 # - Run $SDK_HOME/tools/bin/sdkmanager platform-tools 'platforms;android-25' 'system-images;android-25;google_apis;armeabi-v7a' emulator 'build-tools;25.0.2' ndk-bundle
cannam@62 114 # - Run $SDK_HOME/tools/bin/avdmanager create avd -n capnp -k 'system-images;android-25;google_apis;armeabi-v7a' -b google_apis/armeabi-v7a
cannam@62 115 # - Run $SDK_HOME/ndk-bundle/build/tools/make_standalone_toolchain.py --arch arm --api 24 --install-dir $TOOLCHAIN_HOME
cannam@62 116 if [ "$#" -ne 4 ]; then
cannam@62 117 echo "usage: $0 android SDK_HOME TOOLCHAIN_HOME CROSS_HOST" >&2
cannam@62 118 exit 1
cannam@62 119 fi
cannam@62 120 SDK_HOME=$2
cannam@62 121 TOOLCHAIN_HOME=$3
cannam@62 122 CROSS_HOST=$4
cannam@62 123
cannam@62 124 cd c++
cannam@62 125 test -e configure || doit autoreconf -i
cannam@62 126 test ! -e Makefile || (echo "ERROR: Directory unclean!" >&2 && false)
cannam@62 127 doit ./configure --disable-shared
cannam@62 128 doit make -j$PARALLEL capnp capnpc-c++
cannam@62 129
cannam@62 130 cp capnp capnp-host
cannam@62 131 cp capnpc-c++ capnpc-c++-host
cannam@62 132
cannam@62 133 export PATH="$TOOLCHAIN_HOME/bin:$PATH"
cannam@62 134 doit make distclean
cannam@62 135 doit ./configure --host="$CROSS_HOST" --with-external-capnp --disable-shared CXXFLAGS='-pie -fPIE' CAPNP=./capnp-host CAPNPC_CXX=./capnpc-c++-host
cannam@62 136
cannam@62 137 doit make -j$PARALLEL
cannam@62 138 doit make -j$PARALLEL capnp-test
cannam@62 139
cannam@62 140 echo "Starting emulator..."
cannam@62 141 trap 'kill $(jobs -p)' EXIT
cannam@62 142 # TODO(someday): Speed up with KVM? Then maybe we won't have to skip fuzz tests?
cannam@62 143 $SDK_HOME/emulator/emulator -avd capnp -no-window &
cannam@62 144 $SDK_HOME/platform-tools/adb 'wait-for-device'
cannam@62 145 echo "Waiting for localhost to be resolvable..."
cannam@62 146 doit $SDK_HOME/platform-tools/adb shell 'while ! ping -c 1 localhost > /dev/null 2>&1; do sleep 1; done'
cannam@62 147 # TODO(cleanup): With 'adb shell' I find I cannot put files anywhere, so I'm using 'su' a
cannam@62 148 # lot here. There is probably a better way.
cannam@62 149 doit $SDK_HOME/platform-tools/adb shell 'su 0 tee /data/capnp-test > /dev/null' < capnp-test
cannam@62 150 doit $SDK_HOME/platform-tools/adb shell 'su 0 chmod a+rx /data/capnp-test'
cannam@62 151 doit $SDK_HOME/platform-tools/adb shell 'cd /data && CAPNP_SKIP_FUZZ_TEST=1 su 0 /data/capnp-test && echo ANDROID_""TESTS_PASSED' | tee android-test.log
cannam@62 152 grep -q ANDROID_TESTS_PASSED android-test.log
cannam@62 153
cannam@62 154 doit make distclean
cannam@62 155 rm -f capnp-host capnpc-c++-host
cannam@62 156 exit 0
cannam@62 157 ;;
cannam@62 158 cmake )
cannam@62 159 cd c++
cannam@62 160 rm -rf cmake-build
cannam@62 161 mkdir cmake-build
cannam@62 162 cd cmake-build
cannam@62 163 doit cmake -G "Unix Makefiles" ..
cannam@62 164 doit make -j$PARALLEL check
cannam@62 165 exit 0
cannam@62 166 ;;
cannam@62 167 exotic )
cannam@62 168 echo "========================================================================="
cannam@62 169 echo "MinGW 64-bit"
cannam@62 170 echo "========================================================================="
cannam@62 171 "$0" mingw x86_64-w64-mingw32
cannam@62 172 echo "========================================================================="
cannam@62 173 echo "MinGW 32-bit"
cannam@62 174 echo "========================================================================="
cannam@62 175 "$0" mingw i686-w64-mingw32
cannam@62 176 echo "========================================================================="
cannam@62 177 echo "Android"
cannam@62 178 echo "========================================================================="
cannam@62 179 "$0" android /home/kenton/android-sdk-linux /home/kenton/android-24 arm-linux-androideabi
cannam@62 180 echo "========================================================================="
cannam@62 181 echo "CMake"
cannam@62 182 echo "========================================================================="
cannam@62 183 "$0" cmake
cannam@62 184 exit 0
cannam@62 185 ;;
cannam@62 186 clean )
cannam@62 187 rm -rf tmp-staging
cannam@62 188 cd c++
cannam@62 189 if [ -e Makefile ]; then
cannam@62 190 doit make maintainer-clean
cannam@62 191 fi
cannam@62 192 rm -f capnproto-*.tar.gz samples/addressbook samples/addressbook.capnp.c++ \
cannam@62 193 samples/addressbook.capnp.h
cannam@62 194 exit 0
cannam@62 195 ;;
cannam@62 196 help )
cannam@62 197 echo "usage: $0 [COMMAND]"
cannam@62 198 echo "commands:"
cannam@62 199 echo " test Runs tests (the default)."
cannam@62 200 echo " clang Runs tests using Clang compiler."
cannam@62 201 echo " gcc-4.7 Runs tests using gcc-4.7."
cannam@62 202 echo " gcc-4.8 Runs tests using gcc-4.8."
cannam@62 203 echo " gcc-4.9 Runs tests using gcc-4.9."
cannam@62 204 echo " remote HOST Runs tests on HOST via SSH."
cannam@62 205 echo " mingw Cross-compiles to MinGW and runs tests using WINE."
cannam@62 206 echo " android Cross-compiles to Android and runs tests using emulator."
cannam@62 207 echo " clean Delete temporary files that may be left after failure."
cannam@62 208 echo " help Prints this help text."
cannam@62 209 exit 0
cannam@62 210 ;;
cannam@62 211 * )
cannam@62 212 echo "unknown command: $1" >&2
cannam@62 213 echo "try: $0 help" >&2
cannam@62 214 exit 1
cannam@62 215 ;;
cannam@62 216 esac
cannam@62 217 shift
cannam@62 218 done
cannam@62 219
cannam@62 220 # Build optimized builds because they catch more problems, but also enable debugging macros.
cannam@62 221 # Enable lots of warnings and make sure the build breaks if they fire. Disable strict-aliasing
cannam@62 222 # because GCC warns about code that I know is OK. Disable sign-compare because I've fixed more
cannam@62 223 # sign-compare warnings than probably all other warnings combined and I've never seen it flag a
cannam@62 224 # real problem. Disable unused parameters because it's stupidly noisy and never a real problem.
cannam@62 225 # Enable expensive release-gating tests.
cannam@62 226 export CXXFLAGS="-O2 -DDEBUG -Wall -Wextra -Werror -Wno-strict-aliasing -Wno-sign-compare -Wno-unused-parameter -DCAPNP_EXPENSIVE_TESTS=1"
cannam@62 227
cannam@62 228 STAGING=$PWD/tmp-staging
cannam@62 229
cannam@62 230 rm -rf "$STAGING"
cannam@62 231 mkdir "$STAGING"
cannam@62 232 mkdir "$STAGING/bin"
cannam@62 233 mkdir "$STAGING/lib"
cannam@62 234 export PATH=$STAGING/bin:$PATH
cannam@62 235 export LD_LIBRARY_PATH=$STAGING/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}
cannam@62 236 export PKG_CONFIG_PATH=$STAGING/lib/pkgconfig
cannam@62 237
cannam@62 238 if [ "$QUICK" = quick ]; then
cannam@62 239 echo "************************** QUICK TEST ***********************************"
cannam@62 240 fi
cannam@62 241
cannam@62 242 echo "========================================================================="
cannam@62 243 echo "Building c++"
cannam@62 244 echo "========================================================================="
cannam@62 245
cannam@62 246 # Apple now aliases gcc to clang, so probe to find out what compiler we're really using.
cannam@62 247 if (${CXX:-g++} -dM -E -x c++ /dev/null 2>&1 | grep -q '__clang__'); then
cannam@62 248 IS_CLANG=yes
cannam@62 249 DISABLE_OPTIMIZATION_IF_GCC=
cannam@62 250 else
cannam@62 251 IS_CLANG=no
cannam@62 252 DISABLE_OPTIMIZATION_IF_GCC=-O0
cannam@62 253 fi
cannam@62 254
cannam@62 255 if [ $IS_CLANG = yes ]; then
cannam@62 256 # Don't fail out on this ridiculous "argument unused during compilation" warning.
cannam@62 257 export CXXFLAGS="$CXXFLAGS -Wno-error=unused-command-line-argument"
cannam@62 258 else
cannam@62 259 # GCC emits uninitialized warnings all over and they seem bogus. We use valgrind to test for
cannam@62 260 # uninitialized memory usage later on. GCC 4 also emits strange bogus warnings with
cannam@62 261 # -Wstrict-overflow, so we disable it.
cannam@62 262 CXXFLAGS="$CXXFLAGS -Wno-maybe-uninitialized -Wno-strict-overflow"
cannam@62 263 fi
cannam@62 264
cannam@62 265 cd c++
cannam@62 266 doit autoreconf -i
cannam@62 267 doit ./configure --prefix="$STAGING"
cannam@62 268 doit make -j$PARALLEL check
cannam@62 269
cannam@62 270 if [ $IS_CLANG = no ]; then
cannam@62 271 # Verify that generated code compiles with pedantic warnings. Make sure to treat capnp headers
cannam@62 272 # as system headers so warnings in them are ignored.
cannam@62 273 doit ${CXX:-g++} -isystem src -std=c++11 -fno-permissive -pedantic -Wall -Wextra -Werror \
cannam@62 274 -c src/capnp/test.capnp.c++ -o /dev/null
cannam@62 275 fi
cannam@62 276
cannam@62 277 echo "========================================================================="
cannam@62 278 echo "Testing c++ install"
cannam@62 279 echo "========================================================================="
cannam@62 280
cannam@62 281 doit make install
cannam@62 282
cannam@62 283 test "x$(which capnp)" = "x$STAGING/bin/capnp"
cannam@62 284 test "x$(which capnpc-c++)" = "x$STAGING/bin/capnpc-c++"
cannam@62 285
cannam@62 286 cd samples
cannam@62 287
cannam@62 288 doit capnp compile -oc++ addressbook.capnp -I"$STAGING"/include --no-standard-import
cannam@62 289 doit ${CXX:-g++} -std=c++11 addressbook.c++ addressbook.capnp.c++ -o addressbook \
cannam@62 290 $CXXFLAGS $(pkg-config --cflags --libs capnp)
cannam@62 291 echo "@@@@ ./addressbook (in various configurations)"
cannam@62 292 ./addressbook write | ./addressbook read
cannam@62 293 ./addressbook dwrite | ./addressbook dread
cannam@62 294 rm addressbook addressbook.capnp.c++ addressbook.capnp.h
cannam@62 295
cannam@62 296 doit capnp compile -oc++ calculator.capnp -I"$STAGING"/include --no-standard-import
cannam@62 297 doit ${CXX:-g++} -std=c++11 calculator-client.c++ calculator.capnp.c++ -o calculator-client \
cannam@62 298 $CXXFLAGS $(pkg-config --cflags --libs capnp-rpc)
cannam@62 299 doit ${CXX:-g++} -std=c++11 calculator-server.c++ calculator.capnp.c++ -o calculator-server \
cannam@62 300 $CXXFLAGS $(pkg-config --cflags --libs capnp-rpc)
cannam@62 301 rm -f /tmp/capnp-calculator-example-$$
cannam@62 302 ./calculator-server unix:/tmp/capnp-calculator-example-$$ &
cannam@62 303 sleep 0.1
cannam@62 304 ./calculator-client unix:/tmp/capnp-calculator-example-$$
cannam@62 305 kill %+
cannam@62 306 wait %+ || true
cannam@62 307 rm calculator-client calculator-server calculator.capnp.c++ calculator.capnp.h /tmp/capnp-calculator-example-$$
cannam@62 308
cannam@62 309 cd ..
cannam@62 310
cannam@62 311 if [ "$QUICK" = quick ]; then
cannam@62 312 doit make maintainer-clean
cannam@62 313 rm -rf "$STAGING"
cannam@62 314 exit 0
cannam@62 315 fi
cannam@62 316
cannam@62 317 echo "========================================================================="
cannam@62 318 echo "Testing --with-external-capnp"
cannam@62 319 echo "========================================================================="
cannam@62 320
cannam@62 321 doit make distclean
cannam@62 322 doit ./configure --prefix="$STAGING" --disable-shared \
cannam@62 323 --with-external-capnp CAPNP=$STAGING/bin/capnp
cannam@62 324 doit make -j$PARALLEL check
cannam@62 325
cannam@62 326 echo "========================================================================="
cannam@62 327 echo "Testing --disable-reflection"
cannam@62 328 echo "========================================================================="
cannam@62 329
cannam@62 330 doit make distclean
cannam@62 331 doit ./configure --prefix="$STAGING" --disable-shared --disable-reflection \
cannam@62 332 --with-external-capnp CAPNP=$STAGING/bin/capnp
cannam@62 333 doit make -j$PARALLEL check
cannam@62 334 doit make distclean
cannam@62 335
cannam@62 336 # Test 32-bit build now while we have $STAGING available for cross-compiling.
cannam@62 337 if [ "x`uname -m`" = "xx86_64" ]; then
cannam@62 338 echo "========================================================================="
cannam@62 339 echo "Testing 32-bit build"
cannam@62 340 echo "========================================================================="
cannam@62 341
cannam@62 342 if [[ "`uname`" =~ CYGWIN ]]; then
cannam@62 343 # It's just not possible to run cygwin32 binaries from within cygwin64.
cannam@62 344
cannam@62 345 # Build as if we are cross-compiling, using the capnp we installed to $STAGING.
cannam@62 346 doit ./configure --prefix="$STAGING" --disable-shared --host=i686-pc-cygwin \
cannam@62 347 --with-external-capnp CAPNP=$STAGING/bin/capnp
cannam@62 348 doit make -j$PARALLEL
cannam@62 349 doit make -j$PARALLEL capnp-test.exe
cannam@62 350
cannam@62 351 # Expect a cygwin32 sshd to be listening at localhost port 2222, and use it
cannam@62 352 # to run the tests.
cannam@62 353 doit scp -P 2222 capnp-test.exe localhost:~/tmp-capnp-test.exe
cannam@62 354 doit ssh -p 2222 localhost './tmp-capnp-test.exe && rm tmp-capnp-test.exe'
cannam@62 355
cannam@62 356 doit make distclean
cannam@62 357
cannam@62 358 elif [ "x${CXX:-g++}" != "xg++-4.8" ]; then
cannam@62 359 doit ./configure CXX="${CXX:-g++} -m32" --disable-shared
cannam@62 360 doit make -j$PARALLEL check
cannam@62 361 doit make distclean
cannam@62 362 fi
cannam@62 363 fi
cannam@62 364
cannam@62 365 echo "========================================================================="
cannam@62 366 echo "Testing c++ uninstall"
cannam@62 367 echo "========================================================================="
cannam@62 368
cannam@62 369 doit ./configure --prefix="$STAGING"
cannam@62 370 doit make uninstall
cannam@62 371
cannam@62 372 echo "========================================================================="
cannam@62 373 echo "Testing c++ dist"
cannam@62 374 echo "========================================================================="
cannam@62 375
cannam@62 376 doit make -j$PARALLEL distcheck
cannam@62 377 doit make distclean
cannam@62 378 rm capnproto-*.tar.gz
cannam@62 379
cannam@62 380 if [ "x`uname`" = xLinux ]; then
cannam@62 381 echo "========================================================================="
cannam@62 382 echo "Testing generic Unix (no Linux-specific features)"
cannam@62 383 echo "========================================================================="
cannam@62 384
cannam@62 385 doit ./configure --disable-shared CXXFLAGS="$CXXFLAGS -DKJ_USE_FUTEX=0 -DKJ_USE_EPOLL=0"
cannam@62 386 doit make -j$PARALLEL check
cannam@62 387 doit make distclean
cannam@62 388 fi
cannam@62 389
cannam@62 390 echo "========================================================================="
cannam@62 391 echo "Testing with -fno-rtti and -fno-exceptions"
cannam@62 392 echo "========================================================================="
cannam@62 393
cannam@62 394 # GCC miscompiles capnpc-c++ when -fno-exceptions and -O2 are specified together. The
cannam@62 395 # miscompilation happens in one specific inlined call site of Array::dispose(), but this method
cannam@62 396 # is inlined in hundreds of other places without issue, so I have no idea how to narrow down the
cannam@62 397 # bug. Clang works fine. So, for now, we disable optimizations on GCC for -fno-exceptions tests.
cannam@62 398
cannam@62 399 doit ./configure --disable-shared CXXFLAGS="$CXXFLAGS -fno-rtti"
cannam@62 400 doit make -j$PARALLEL check
cannam@62 401 doit make distclean
cannam@62 402 doit ./configure --disable-shared CXXFLAGS="$CXXFLAGS -fno-exceptions $DISABLE_OPTIMIZATION_IF_GCC"
cannam@62 403 doit make -j$PARALLEL check
cannam@62 404 doit make distclean
cannam@62 405 doit ./configure --disable-shared CXXFLAGS="$CXXFLAGS -fno-rtti -fno-exceptions $DISABLE_OPTIMIZATION_IF_GCC"
cannam@62 406 doit make -j$PARALLEL check
cannam@62 407
cannam@62 408 # Valgrind is currently "experimental and mostly broken" on OSX and fails to run the full test
cannam@62 409 # suite, but I have it installed because it did manage to help me track down a bug or two. Anyway,
cannam@62 410 # skip it on OSX for now.
cannam@62 411 if [ "x`uname`" != xDarwin ] && which valgrind > /dev/null; then
cannam@62 412 doit make distclean
cannam@62 413
cannam@62 414 echo "========================================================================="
cannam@62 415 echo "Testing with valgrind"
cannam@62 416 echo "========================================================================="
cannam@62 417
cannam@62 418 doit ./configure --disable-shared CXXFLAGS="-g"
cannam@62 419 doit make -j$PARALLEL
cannam@62 420 doit make -j$PARALLEL capnp-test
cannam@62 421 # Running the fuzz tests under Valgrind is a great thing to do -- but it takes
cannam@62 422 # some 40 minutes. So, it needs to be done as a separate step of the release
cannam@62 423 # process, perhaps along with the AFL tests.
cannam@62 424 CAPNP_SKIP_FUZZ_TEST=1 doit valgrind --leak-check=full --track-fds=yes --error-exitcode=1 ./capnp-test
cannam@62 425 fi
cannam@62 426
cannam@62 427 doit make maintainer-clean
cannam@62 428
cannam@62 429 rm -rf "$STAGING"