super-test.sh 19.5 KB
Newer Older
1
#! /usr/bin/env bash
2 3 4 5 6 7 8 9

set -euo pipefail

doit() {
  echo "@@@@ $@"
  "$@"
}

10 11 12 13 14 15 16 17 18 19 20 21 22
function test_samples() {
  echo "@@@@ ./addressbook (in various configurations)"
  ./addressbook write | ./addressbook read
  ./addressbook dwrite | ./addressbook dread
  rm -f /tmp/capnp-calculator-example-$$
  ./calculator-server unix:/tmp/capnp-calculator-example-$$ &
  sleep 0.1
  ./calculator-client unix:/tmp/capnp-calculator-example-$$
  kill %+
  wait %+ || true
  rm -f /tmp/capnp-calculator-example-$$
}

Kenton Varda's avatar
Kenton Varda committed
23 24
QUICK=

25 26
PARALLEL=$(nproc 2>/dev/null || echo 1)

27 28 29
# Have automake dump test failure to stdout. Important for CI.
export VERBOSE=true

Kenton Varda's avatar
Kenton Varda committed
30 31
while [ $# -gt 0 ]; do
  case "$1" in
32 33 34
    -j* )
      PARALLEL=${1#-j}
      ;;
Kenton Varda's avatar
Kenton Varda committed
35 36 37 38 39
    test )
      ;;  # nothing
    quick )
      QUICK=quick
      ;;
40 41 42
    caffeinate )
      # Re-run preventing sleep.
      shift
43
      exec caffeinate -ims $0 $@
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
      ;;
    tmpdir )
      # Clone to a temp directory.
      if [ "$#" -lt 2 ]; then
        echo "usage: $0 tmpdir NAME [COMMAND]" >&2
        exit 1
      fi
      DIR=/tmp/$2
      shift 2
      if [ -e $DIR ]; then
        if [ "${DIR/*..*}" = "" ]; then
          echo "NO DO NOT PUT .. IN THERE IT'S GOING TO GO IN /tmp AND I'M GONNA DELETE IT" >&2
          exit 1
        fi
        if [ ! -e "$DIR/super-test.sh" ]; then
          echo "$DIR exists and it doesn't look like one of mine." >&2
          exit 1
        fi
        # make distcheck leaves non-writable files when it fails, so we need to chmod to be safe.
        chmod -R +w $DIR
        rm -rf $DIR
      fi
      git clone . $DIR
      cd $DIR
68
      exec ./super-test.sh "$@"
69
      ;;
Kenton Varda's avatar
Kenton Varda committed
70 71 72 73 74 75 76 77 78 79
    remote )
      if [ "$#" -lt 2 ]; then
        echo "usage: $0 remote HOST [COMMAND]" >&2
        exit 1
      fi
      HOST=$2
      shift 2
      echo "========================================================================="
      echo "Pushing code to $HOST..."
      echo "========================================================================="
80
      BRANCH=$(git rev-parse --abbrev-ref HEAD)
Kenton Varda's avatar
Kenton Varda committed
81
      ssh $HOST '(chmod -fR +w tmp-test-capnp || true) && rm -rf tmp-test-capnp && mkdir tmp-test-capnp && git init tmp-test-capnp'
82
      git push ssh://$HOST/~/tmp-test-capnp "$BRANCH:test"
83 84
      ssh $HOST "cd tmp-test-capnp && git checkout test"
      exec ssh $HOST "cd tmp-test-capnp && ./super-test.sh $@ && cd .. && rm -rf tmp-test-capnp"
Kenton Varda's avatar
Kenton Varda committed
85
      ;;
Kenton Varda's avatar
Kenton Varda committed
86 87 88 89 90 91 92 93
    compiler )
      if [ "$#" -lt 2 ]; then
        echo "usage: $0 compiler CXX_NAME" >&2
        exit 1
      fi
      export CXX="$2"
      shift
      ;;
Kenton Varda's avatar
Kenton Varda committed
94 95 96
    clang )
      export CXX=clang++
      ;;
97 98 99
    gcc-4.9 )
      export CXX=g++-4.9
      ;;
Kenton Varda's avatar
Kenton Varda committed
100 101 102
    gcc-4.8 )
      export CXX=g++-4.8
      ;;
Kenton Varda's avatar
Kenton Varda committed
103 104 105
    gcc-4.7 )
      export CXX=g++-4.7
      ;;
106 107 108 109 110 111 112 113 114 115 116
    mingw )
      if [ "$#" -ne 2 ]; then
        echo "usage: $0 mingw CROSS_HOST" >&2
        exit 1
      fi
      CROSS_HOST=$2

      cd c++
      test -e configure || doit autoreconf -i
      test ! -e Makefile || (echo "ERROR: Directory unclean!" >&2 && false)

117
      export WINEPATH='Z:\usr\'"$CROSS_HOST"'\lib;Z:\usr\lib\gcc\'"$CROSS_HOST"'\6.3-win32;Z:'"$PWD"'\.libs'
118

119
      doit ./configure --host="$CROSS_HOST" --disable-shared CXXFLAGS='-static-libgcc -static-libstdc++'
120

121
      doit make -j$PARALLEL check
122 123 124 125 126
      doit make distclean
      rm -f *-mingw.exe
      exit 0
      ;;
    android )
Kenton Varda's avatar
Kenton Varda committed
127 128
      # To install Android SDK:
      # - Download command-line tools: https://developer.android.com/studio/index.html#command-tools
129
      # - export SDKMANAGER_OPTS="--add-modules java.se.ee"
Kenton Varda's avatar
Kenton Varda committed
130
      # - 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
131
      # - export AVDMANAGER_OPTS="--add-modules java.se.ee"
Kenton Varda's avatar
Kenton Varda committed
132 133
      # - Run $SDK_HOME/tools/bin/avdmanager create avd -n capnp -k 'system-images;android-25;google_apis;armeabi-v7a' -b google_apis/armeabi-v7a
      # - Run $SDK_HOME/ndk-bundle/build/tools/make_standalone_toolchain.py --arch arm --api 24 --install-dir $TOOLCHAIN_HOME
134 135 136 137 138 139 140 141 142 143 144 145
      if [ "$#" -ne 4 ]; then
        echo "usage: $0 android SDK_HOME TOOLCHAIN_HOME CROSS_HOST" >&2
        exit 1
      fi
      SDK_HOME=$2
      TOOLCHAIN_HOME=$3
      CROSS_HOST=$4

      cd c++
      test -e configure || doit autoreconf -i
      test ! -e Makefile || (echo "ERROR: Directory unclean!" >&2 && false)
      doit ./configure --disable-shared
146
      doit make -j$PARALLEL capnp capnpc-c++
147 148 149 150 151 152

      cp capnp capnp-host
      cp capnpc-c++ capnpc-c++-host

      export PATH="$TOOLCHAIN_HOME/bin:$PATH"
      doit make distclean
153
      doit ./configure --host="$CROSS_HOST" CC=clang CXX=clang++ --with-external-capnp --disable-shared CXXFLAGS='-fPIE' LDFLAGS='-pie' LIBS='-static-libstdc++ -static-libgcc -ldl' CAPNP=./capnp-host CAPNPC_CXX=./capnpc-c++-host
154

155 156
      doit make -j$PARALLEL
      doit make -j$PARALLEL capnp-test
157 158 159

      echo "Starting emulator..."
      trap 'kill $(jobs -p)' EXIT
160
      # TODO(someday): Speed up with KVM? Then maybe we won't have to skip fuzz tests?
Kenton Varda's avatar
Kenton Varda committed
161 162
      $SDK_HOME/emulator/emulator -avd capnp -no-window &
      $SDK_HOME/platform-tools/adb 'wait-for-device'
163
      echo "Waiting for localhost to be resolvable..."
Kenton Varda's avatar
Kenton Varda committed
164 165 166 167 168
      doit $SDK_HOME/platform-tools/adb shell 'while ! ping -c 1 localhost > /dev/null 2>&1; do sleep 1; done'
      # TODO(cleanup): With 'adb shell' I find I cannot put files anywhere, so I'm using 'su' a
      #   lot here. There is probably a better way.
      doit $SDK_HOME/platform-tools/adb shell 'su 0 tee /data/capnp-test > /dev/null' < capnp-test
      doit $SDK_HOME/platform-tools/adb shell 'su 0 chmod a+rx /data/capnp-test'
169
      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
170 171 172 173
      grep -q ANDROID_TESTS_PASSED android-test.log

      doit make distclean
      rm -f capnp-host capnpc-c++-host
Kenton Varda's avatar
Kenton Varda committed
174 175
      exit 0
      ;;
176
    cmake )
177
      cd c++
178 179 180 181
      rm -rf cmake-build
      mkdir cmake-build
      cd cmake-build
      doit cmake -G "Unix Makefiles" ..
182
      doit make -j$PARALLEL check
183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245
      exit 0
      ;;
    cmake-package )
      # Test that a particular configuration of Cap'n Proto can be discovered and configured against
      # by a CMake project using the find_package() command. This is currently implemented by
      # building the samples against the desired configuration.
      #
      # Takes one argument, the build configuration, which must be one of:
      #
      #   autotools-shared
      #   autotools-static
      #   cmake-shared
      #   cmake-static

      if [ "$#" -ne 2 ]; then
        echo "usage: $0 cmake-package CONFIGURATION" >&2
        echo "  where CONFIGURATION is one of {autotools,cmake}-{static,shared}" >&2
        exit 1
      fi

      CONFIGURATION=$2
      WORKSPACE=$(pwd)/cmake-package/$CONFIGURATION
      SOURCE_DIR=$(pwd)/c++

      rm -rf $WORKSPACE
      mkdir -p $WORKSPACE/{build,build-samples,inst}

      # Configure
      cd $WORKSPACE/build
      case "$CONFIGURATION" in
        autotools-shared )
          autoreconf -i $SOURCE_DIR
          doit $SOURCE_DIR/configure --prefix="$WORKSPACE/inst" --disable-static
          ;;
        autotools-static )
          autoreconf -i $SOURCE_DIR
          doit $SOURCE_DIR/configure --prefix="$WORKSPACE/inst" --disable-shared
          ;;
        cmake-shared )
          doit cmake $SOURCE_DIR -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$WORKSPACE/inst" \
              -DBUILD_TESTING=OFF -DBUILD_SHARED_LIBS=ON
          # The CMake build does not currently set the rpath of the capnp compiler tools.
          export LD_LIBRARY_PATH="$WORKSPACE/inst/lib"
          ;;
        cmake-static )
          doit cmake $SOURCE_DIR -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$WORKSPACE/inst" \
              -DBUILD_TESTING=OFF -DBUILD_SHARED_LIBS=OFF
          ;;
        * )
          echo "Unrecognized cmake-package CONFIGURATION argument, must be {autotools,cmake}-{static,shared}" >&2
          exit 1
          ;;
      esac

      # Build and install
      doit make -j$PARALLEL install

      # Configure, build, and execute the samples.
      cd $WORKSPACE/build-samples
      doit cmake $SOURCE_DIR/samples -G "Unix Makefiles" -DCMAKE_PREFIX_PATH="$WORKSPACE/inst" \
          -DCAPNPC_FLAGS=--no-standard-import -DCAPNPC_IMPORT_DIRS="$WORKSPACE/inst/include"
      doit make -j$PARALLEL

246
      test_samples
247 248 249 250 251

      echo "========================================================================="
      echo "Cap'n Proto ($CONFIGURATION) installs a working CMake config package."
      echo "========================================================================="

252 253
      exit 0
      ;;
254 255 256 257 258 259 260 261 262 263 264 265
    exotic )
      echo "========================================================================="
      echo "MinGW 64-bit"
      echo "========================================================================="
      "$0" mingw x86_64-w64-mingw32
      echo "========================================================================="
      echo "MinGW 32-bit"
      echo "========================================================================="
      "$0" mingw i686-w64-mingw32
      echo "========================================================================="
      echo "Android"
      echo "========================================================================="
Kenton Varda's avatar
Kenton Varda committed
266
      "$0" android /home/kenton/android-sdk-linux /home/kenton/android-24 arm-linux-androideabi
267 268 269 270
      echo "========================================================================="
      echo "CMake"
      echo "========================================================================="
      "$0" cmake
271 272 273 274 275 276 277
      echo "========================================================================="
      echo "CMake config packages"
      echo "========================================================================="
      "$0" cmake-package autotools-shared
      "$0" cmake-package autotools-static
      "$0" cmake-package cmake-shared
      "$0" cmake-package cmake-static
278
      exit 0
279
      ;;
Kenton Varda's avatar
Kenton Varda committed
280 281 282 283 284 285 286 287 288 289 290 291 292 293 294
    clean )
      rm -rf tmp-staging
      cd c++
      if [ -e Makefile ]; then
        doit make maintainer-clean
      fi
      rm -f capnproto-*.tar.gz samples/addressbook samples/addressbook.capnp.c++ \
            samples/addressbook.capnp.h
      exit 0
      ;;
    help )
      echo "usage: $0 [COMMAND]"
      echo "commands:"
      echo "  test          Runs tests (the default)."
      echo "  clang         Runs tests using Clang compiler."
295
      echo "  gcc-4.7       Runs tests using gcc-4.7."
Kenton Varda's avatar
Kenton Varda committed
296
      echo "  gcc-4.8       Runs tests using gcc-4.8."
297
      echo "  gcc-4.9       Runs tests using gcc-4.9."
Kenton Varda's avatar
Kenton Varda committed
298
      echo "  remote HOST   Runs tests on HOST via SSH."
299 300
      echo "  mingw         Cross-compiles to MinGW and runs tests using WINE."
      echo "  android       Cross-compiles to Android and runs tests using emulator."
Kenton Varda's avatar
Kenton Varda committed
301 302 303 304 305 306 307 308 309 310 311 312
      echo "  clean         Delete temporary files that may be left after failure."
      echo "  help          Prints this help text."
      exit 0
      ;;
    * )
      echo "unknown command: $1" >&2
      echo "try: $0 help" >&2
      exit 1
      ;;
  esac
  shift
done
313

314
# Build optimized builds because they catch more problems, but also enable debugging macros.
315
# Enable lots of warnings and make sure the build breaks if they fire.  Disable strict-aliasing
316 317
# because GCC warns about code that I know is OK.  Disable sign-compare because I've fixed more
# sign-compare warnings than probably all other warnings combined and I've never seen it flag a
318
# real problem. Disable unused parameters because it's stupidly noisy and never a real problem.
319 320
# Enable expensive release-gating tests.
export CXXFLAGS="-O2 -DDEBUG -Wall -Wextra -Werror -Wno-strict-aliasing -Wno-sign-compare -Wno-unused-parameter -DCAPNP_EXPENSIVE_TESTS=1"
321

322 323
STAGING=$PWD/tmp-staging

324 325 326 327 328 329 330
rm -rf "$STAGING"
mkdir "$STAGING"
mkdir "$STAGING/bin"
mkdir "$STAGING/lib"
export PATH=$STAGING/bin:$PATH
export LD_LIBRARY_PATH=$STAGING/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}
export PKG_CONFIG_PATH=$STAGING/lib/pkgconfig
Kenton Varda's avatar
Kenton Varda committed
331 332 333 334

if [ "$QUICK" = quick ]; then
  echo "************************** QUICK TEST ***********************************"
fi
335 336 337 338 339

echo "========================================================================="
echo "Building c++"
echo "========================================================================="

340 341 342
# Apple now aliases gcc to clang, so probe to find out what compiler we're really using.
if (${CXX:-g++} -dM -E -x c++ /dev/null 2>&1 | grep -q '__clang__'); then
  IS_CLANG=yes
343
  DISABLE_OPTIMIZATION_IF_GCC=
344
else
345
  IS_CLANG=no
346
  DISABLE_OPTIMIZATION_IF_GCC=-O0
347 348
fi

349
if [ $IS_CLANG = yes ]; then
350 351
  # Don't fail out on this ridiculous "argument unused during compilation" warning.
  export CXXFLAGS="$CXXFLAGS -Wno-error=unused-command-line-argument"
352
else
353
  # GCC emits uninitialized warnings all over and they seem bogus. We use valgrind to test for
354 355 356
  # uninitialized memory usage later on. GCC 4 also emits strange bogus warnings with
  # -Wstrict-overflow, so we disable it.
  CXXFLAGS="$CXXFLAGS -Wno-maybe-uninitialized -Wno-strict-overflow"
357
fi
358

359 360 361
cd c++
doit autoreconf -i
doit ./configure --prefix="$STAGING"
362
doit make -j$PARALLEL check
363

364 365 366
if [ $IS_CLANG = no ]; then
  # Verify that generated code compiles with pedantic warnings.  Make sure to treat capnp headers
  # as system headers so warnings in them are ignored.
Kenton Varda's avatar
Kenton Varda committed
367
  doit ${CXX:-g++} -isystem src -std=c++1y -fno-permissive -pedantic -Wall -Wextra -Werror \
368
      -c src/capnp/test.capnp.c++ -o /dev/null
Kenton Varda's avatar
Kenton Varda committed
369 370
fi

371 372 373 374 375 376
echo "========================================================================="
echo "Testing c++ install"
echo "========================================================================="

doit make install

Kenton Varda's avatar
Kenton Varda committed
377 378
test "x$(which capnp)" = "x$STAGING/bin/capnp"
test "x$(which capnpc-c++)" = "x$STAGING/bin/capnpc-c++"
379

380
cd samples
381

382
doit capnp compile -oc++ addressbook.capnp -I"$STAGING"/include --no-standard-import
Kenton Varda's avatar
Kenton Varda committed
383
doit ${CXX:-g++} -std=c++1y addressbook.c++ addressbook.capnp.c++ -o addressbook \
384 385 386
    $CXXFLAGS $(pkg-config --cflags --libs capnp)

doit capnp compile -oc++ calculator.capnp -I"$STAGING"/include --no-standard-import
Kenton Varda's avatar
Kenton Varda committed
387
doit ${CXX:-g++} -std=c++1y calculator-client.c++ calculator.capnp.c++ -o calculator-client \
388
    $CXXFLAGS $(pkg-config --cflags --libs capnp-rpc)
Kenton Varda's avatar
Kenton Varda committed
389
doit ${CXX:-g++} -std=c++1y calculator-server.c++ calculator.capnp.c++ -o calculator-server \
390
    $CXXFLAGS $(pkg-config --cflags --libs capnp-rpc)
391 392 393 394

test_samples
rm addressbook addressbook.capnp.c++ addressbook.capnp.h
rm calculator-client calculator-server calculator.capnp.c++ calculator.capnp.h
395

396 397 398 399 400 401 402 403 404 405 406
rm -rf cmake-build
mkdir cmake-build
cd cmake-build

doit cmake .. -G "Unix Makefiles" -DCMAKE_PREFIX_PATH="$STAGING" \
    -DCAPNPC_FLAGS=--no-standard-import -DCAPNPC_IMPORT_DIRS="$STAGING/include"
doit make -j$PARALLEL

test_samples
cd ../..
rm -rf samples/cmake-build
407

408 409 410 411 412 413
if [ "$QUICK" = quick ]; then
  doit make maintainer-clean
  rm -rf "$STAGING"
  exit 0
fi

414 415 416 417 418
echo "========================================================================="
echo "Testing --with-external-capnp"
echo "========================================================================="

doit make distclean
419 420
doit ./configure --prefix="$STAGING" --disable-shared \
    --with-external-capnp CAPNP=$STAGING/bin/capnp
421
doit make -j$PARALLEL check
422 423 424 425 426 427 428 429

echo "========================================================================="
echo "Testing --disable-reflection"
echo "========================================================================="

doit make distclean
doit ./configure --prefix="$STAGING" --disable-shared --disable-reflection \
    --with-external-capnp CAPNP=$STAGING/bin/capnp
430
doit make -j$PARALLEL check
431 432 433 434 435 436 437 438 439 440 441 442 443 444
doit make distclean

# Test 32-bit build now while we have $STAGING available for cross-compiling.
if [ "x`uname -m`" = "xx86_64" ]; then
  echo "========================================================================="
  echo "Testing 32-bit build"
  echo "========================================================================="

  if [[ "`uname`" =~ CYGWIN ]]; then
    # It's just not possible to run cygwin32 binaries from within cygwin64.

    # Build as if we are cross-compiling, using the capnp we installed to $STAGING.
    doit ./configure --prefix="$STAGING" --disable-shared --host=i686-pc-cygwin \
        --with-external-capnp CAPNP=$STAGING/bin/capnp
445 446
    doit make -j$PARALLEL
    doit make -j$PARALLEL capnp-test.exe
447

448 449 450 451 452 453 454 455
    # Expect a cygwin32 sshd to be listening at localhost port 2222, and use it
    # to run the tests.
    doit scp -P 2222 capnp-test.exe localhost:~/tmp-capnp-test.exe
    doit ssh -p 2222 localhost './tmp-capnp-test.exe && rm tmp-capnp-test.exe'

    doit make distclean

  elif [ "x${CXX:-g++}" != "xg++-4.8" ]; then
456
    doit ./configure CXX="${CXX:-g++} -m32" CXXFLAGS="$CXXFLAGS ${ADDL_M32_FLAGS:-}" --disable-shared
457
    doit make -j$PARALLEL check
458 459 460 461 462 463 464 465 466
    doit make distclean
  fi
fi

echo "========================================================================="
echo "Testing c++ uninstall"
echo "========================================================================="

doit ./configure --prefix="$STAGING"
467 468 469 470 471 472
doit make uninstall

echo "========================================================================="
echo "Testing c++ dist"
echo "========================================================================="

473
doit make -j$PARALLEL distcheck
474 475 476
doit make distclean
rm capnproto-*.tar.gz

477 478 479 480 481 482
if [ "x`uname`" = xLinux ]; then
  echo "========================================================================="
  echo "Testing generic Unix (no Linux-specific features)"
  echo "========================================================================="

  doit ./configure --disable-shared CXXFLAGS="$CXXFLAGS -DKJ_USE_FUTEX=0 -DKJ_USE_EPOLL=0"
483
  doit make -j$PARALLEL check
484 485 486
  doit make distclean
fi

487 488 489 490
echo "========================================================================="
echo "Testing with -fno-rtti and -fno-exceptions"
echo "========================================================================="

491 492 493 494 495
# GCC miscompiles capnpc-c++ when -fno-exceptions and -O2 are specified together. The
# miscompilation happens in one specific inlined call site of Array::dispose(), but this method
# is inlined in hundreds of other places without issue, so I have no idea how to narrow down the
# bug. Clang works fine. So, for now, we disable optimizations on GCC for -fno-exceptions tests.

496
doit ./configure --disable-shared CXXFLAGS="$CXXFLAGS -fno-rtti"
497
doit make -j$PARALLEL check
498
doit make distclean
499
doit ./configure --disable-shared CXXFLAGS="$CXXFLAGS -fno-exceptions $DISABLE_OPTIMIZATION_IF_GCC"
500
doit make -j$PARALLEL check
501
doit make distclean
502
doit ./configure --disable-shared CXXFLAGS="$CXXFLAGS -fno-rtti -fno-exceptions $DISABLE_OPTIMIZATION_IF_GCC"
503
doit make -j$PARALLEL check
504

505 506 507 508
# Valgrind is currently "experimental and mostly broken" on OSX and fails to run the full test
# suite, but I have it installed because it did manage to help me track down a bug or two.  Anyway,
# skip it on OSX for now.
if [ "x`uname`" != xDarwin ] && which valgrind > /dev/null; then
Kenton Varda's avatar
Kenton Varda committed
509 510
  doit make distclean

511 512 513 514 515
  echo "========================================================================="
  echo "Testing with valgrind"
  echo "========================================================================="

  doit ./configure --disable-shared CXXFLAGS="-g"
516 517
  doit make -j$PARALLEL
  doit make -j$PARALLEL capnp-test
518 519 520
  # Running the fuzz tests under Valgrind is a great thing to do -- but it takes
  # some 40 minutes. So, it needs to be done as a separate step of the release
  # process, perhaps along with the AFL tests.
Kenton Varda's avatar
Kenton Varda committed
521
  CAPNP_SKIP_FUZZ_TEST=1 doit valgrind --leak-check=full --track-fds=yes --error-exitcode=1 --child-silent-after-fork=yes --sim-hints=lax-ioctls ./capnp-test
522 523
fi

524 525 526
doit make maintainer-clean

rm -rf "$STAGING"