13142: Raise open files limit.
[arvados.git] / build / run-build-packages-one-target.sh
index 0e7e399a37f8ce4bb359b7946f8b81fd6e1dfff7..31a546fd350d60cf65bdb0237f93f2b17335eede 100755 (executable)
@@ -21,8 +21,12 @@ Syntax:
     Build only a specific package
 --only-test <package>
     Test only a specific package
+--force-test
+    Test even if there is no new untested package
 --build-version <string>
-    Version to build (default: \$ARVADOS_BUILDING_VERSION or 0.1.timestamp.commithash)
+    Version to build (default:
+    \$ARVADOS_BUILDING_VERSION-\$ARVADOS_BUILDING_ITERATION or
+    0.1.timestamp.commithash)
 
 WORKSPACE=path         Path to the Arvados source tree to build packages from
 
@@ -47,7 +51,7 @@ if ! [[ -d "$WORKSPACE" ]]; then
 fi
 
 PARSEDOPTS=$(getopt --name "$0" --longoptions \
-    help,debug,test-packages,target:,command:,only-test:,only-build:,build-version: \
+    help,debug,test-packages,target:,command:,only-test:,force-test,only-build:,build-version: \
     -- "" "$@")
 if [ $? -ne 0 ]; then
     exit 1
@@ -72,6 +76,9 @@ while [ $# -gt 0 ]; do
             test_packages=1
             packages="$2"; shift
             ;;
+        --force-test)
+            FORCE_TEST=true
+            ;;
         --only-build)
             ONLY_BUILD="$2"; shift
             ;;
@@ -86,12 +93,15 @@ while [ $# -gt 0 ]; do
             test_packages=1
             ;;
         --build-version)
-            if ! [[ "$2" =~ (.*)-(.*) ]]; then
+            if [[ -z "$2" ]]; then
+                :
+            elif ! [[ "$2" =~ (.*)-(.*) ]]; then
                 echo >&2 "FATAL: --build-version '$2' does not include an iteration. Try '${2}-1'?"
                 exit 1
+            else
+                ARVADOS_BUILDING_VERSION="${BASH_REMATCH[1]}"
+                ARVADOS_BUILDING_ITERATION="${BASH_REMATCH[2]}"
             fi
-            ARVADOS_BUILDING_VERSION="${BASH_REMATCH[1]}"
-            ARVADOS_BUILDING_ITERATION="${BASH_REMATCH[2]}"
             shift
             ;;
         --)
@@ -106,7 +116,9 @@ done
 
 set -e
 
-echo "build version='$ARVADOS_BUILDING_VERSION', package iteration='$ARVADOS_BUILDING_ITERATION'"
+if [[ -n "$ARVADOS_BUILDING_VERSION" ]]; then
+    echo "build version='$ARVADOS_BUILDING_VERSION', package iteration='$ARVADOS_BUILDING_ITERATION'"
+fi
 
 if [[ -n "$test_packages" ]]; then
     if [[ -n "$(find $WORKSPACE/packages/$TARGET -name '*.rpm')" ]] ; then
@@ -154,6 +166,7 @@ popd
 
 if test -z "$packages" ; then
     packages="arvados-api-server
+        arvados-client
         arvados-docker-cleaner
         arvados-git-httpd
         arvados-node-manager
@@ -169,14 +182,10 @@ if test -z "$packages" ; then
         keep-rsync
         keepstore
         keep-web
-        libarvados-perl"
-
-    case "$TARGET" in
-        *)
-            packages="$packages python-arvados-fuse
-                  python-arvados-python-client python-arvados-cwl-runner"
-            ;;
-    esac
+        libarvados-perl
+        python-arvados-fuse
+        python-arvados-python-client
+        python-arvados-cwl-runner"
 fi
 
 FINAL_EXITCODE=0
@@ -200,6 +209,14 @@ if [[ -n "$test_packages" ]]; then
         if [[ -n "$ONLY_BUILD" ]] && [[ "$p" != "$ONLY_BUILD" ]]; then
             continue
         fi
+        if [[ -e "${WORKSPACE}/packages/.last_test_${TARGET}" ]] && [[ -z "$FORCE_TEST" ]]; then
+          MATCH=`find ${WORKSPACE}/packages/ -newer ${WORKSPACE}/packages/.last_test_${TARGET} -regex .*${TARGET}/$p.*`
+          if [[ "$MATCH" == "" ]]; then
+            # No new package has been built that needs testing
+            echo "Skipping $p test because no new package was built since the last test."
+            continue
+          fi
+        fi
         echo
         echo "START: $p test on $IMAGE" >&2
         if docker run --rm \
@@ -216,6 +233,8 @@ if [[ -n "$test_packages" ]]; then
             echo "ERROR: $p test on $IMAGE failed with exit status $FINAL_EXITCODE" >&2
         fi
     done
+
+    touch ${WORKSPACE}/packages/.last_test_${TARGET}
 else
     echo
     echo "START: build packages on $IMAGE" >&2