]> The Tcpdump Group git mirrors - tcpdump/blobdiff - build_matrix.sh
Remove PLATFORMS (was merged into README.md)
[tcpdump] / build_matrix.sh
index b9bb7cd05e976da8689a917205bfe52298343a25..63d01f736051335cdd695d7aafa1ce027645a7f1 100755 (executable)
@@ -16,13 +16,19 @@ set -e
 # ANSI color escape sequences
 ANSI_MAGENTA="\\033[35;1m"
 ANSI_RESET="\\033[0m"
+uname -a
+date
 # Install directory prefix
-PREFIX=/tmp/local
+if [ -z "$PREFIX" ]; then
+    PREFIX=$(mktemp -d -t tcpdump_build_matrix_XXXXXXXX)
+    echo "PREFIX set to '$PREFIX'"
+    export PREFIX
+fi
 COUNT=0
 
 travis_fold() {
-    local action="$1"
-    local name="$2"
+    local action=${1:?}
+    local name=${2:?}
     if [ "$TRAVIS" != true ]; then return; fi
     echo -ne "travis_fold:$action:$LABEL.script.$name\\r"
     sleep 1
@@ -38,8 +44,11 @@ echo_magenta() {
 build_tcpdump() {
     for CC in ${MATRIX_CC:-gcc clang}; do
         export CC
-        # Exclude gcc on OSX (it is just an alias for clang)
-        if [ "$CC" = gcc ] && [ "$TRAVIS_OS_NAME" = osx ]; then continue; fi
+        # Exclude gcc on macOS (it is just an alias for clang).
+        if [ "$CC" = gcc ] && [ "$(uname -s)" = Darwin ]; then
+            echo '(skipped)'
+            continue
+        fi
         for CMAKE in ${MATRIX_CMAKE:-no yes}; do
             export CMAKE
             for CRYPTO in ${MATRIX_CRYPTO:-no yes}; do
@@ -47,7 +56,7 @@ build_tcpdump() {
                 for SMB in ${MATRIX_SMB:-no yes}; do
                     export SMB
                     COUNT=$((COUNT+1))
-                    echo_magenta "===== SETUP $COUNT: build_libpcap:$BUILD_LIBPCAP remote:${REMOTE:-?} compiler:$CC cmake:$CMAKE crypto:$CRYPTO smb:$SMB ====="
+                    echo_magenta "===== SETUP $COUNT: BUILD_LIBPCAP=$BUILD_LIBPCAP REMOTE=${REMOTE:-?} CC=$CC CMAKE=$CMAKE CRYPTO=$CRYPTO SMB=$SMB ====="
                     # LABEL is needed to build the travis fold labels
                     LABEL="$BUILD_LIBPCAP.$REMOTE.$CC.$CMAKE.$CRYPTO.$SMB"
                     # Run one build with setup environment variables:
@@ -56,7 +65,7 @@ build_tcpdump() {
                     echo 'Cleaning...'
                     travis_fold start cleaning
                     if [ "$CMAKE" = yes ]; then rm -rf build; else make distclean; fi
-                    rm -rf $PREFIX/bin/tcpdump*
+                    rm -rf "$PREFIX"/bin/tcpdump*
                     git status -suall
                     # Cancel changes in configure
                     git checkout configure
@@ -67,39 +76,29 @@ build_tcpdump() {
     done
 }
 
-choose_libpcap() {
-    if [ "$BUILD_LIBPCAP" = no ]; then
-        echo_magenta 'Use system libpcap'
-        rm -rf /tmp/local
-    else
-        # Build libpcap with autoconf
-        CMAKE_SAVE=$CMAKE
-        CMAKE=no
-        echo_magenta "Build libpcap (cmake:$CMAKE remote:$REMOTE)"
-        (cd ../libpcap && ./build.sh && make distclean)
-        CMAKE=$CMAKE_SAVE
-    fi
-}
-
 touch .devel configure
 for BUILD_LIBPCAP in ${MATRIX_BUILD_LIBPCAP:-no yes}; do
-export BUILD_LIBPCAP
+    export BUILD_LIBPCAP
     if [ "$BUILD_LIBPCAP" = yes ]; then
-        for REMOTE in ${MATRIX_REMOTE:-no yes}; do
+        for REMOTE in ${MATRIX_REMOTE:-no}; do
             export REMOTE
-            choose_libpcap
+            # Build libpcap with Autoconf.
+            echo_magenta "Build libpcap (CMAKE=no REMOTE=$REMOTE)"
+            (cd ../libpcap && CMAKE=no ./build.sh)
             # Set PKG_CONFIG_PATH for configure when building libpcap
             if [ "$CMAKE" != no ]; then
-                export PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig
+                export PKG_CONFIG_PATH="$PREFIX/lib/pkgconfig"
             fi
             build_tcpdump
         done
     else
-        choose_libpcap
+        echo_magenta 'Use system libpcap'
+        rm -rf "$PREFIX"/*
+        make -C ../libpcap distclean || :
         build_tcpdump
     fi
 done
 
-rm -rf $PREFIX
+rm -rf "$PREFIX"
 echo_magenta "Tested setup count: $COUNT"
 # vi: set tabstop=4 softtabstop=0 expandtab shiftwidth=4 smarttab autoindent :