summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--APKBUILD.58
-rw-r--r--abuild.in13
2 files changed, 21 insertions, 0 deletions
diff --git a/APKBUILD.5 b/APKBUILD.5
index af22a59..9baf772 100644
--- a/APKBUILD.5
+++ b/APKBUILD.5
@@ -298,6 +298,14 @@ Do not use this option.
.It Cm !check
Specifies that the package will not run a test suite.
The reason for disabling the check phase should be noted in a comment.
+.It Cm checkretry
+Specifies that the package's test suite should be re-run multiple times in
+case of failure. The reason should be noted in a comment. Note that this
+option and
+.Cm checkroot
+cannot be used in the same package;
+.Cm checkretry
+will take precedence.
.It Cm checkroot
Specifies that the package's test suite will be run in
.Xr fakeroot 8 .
diff --git a/abuild.in b/abuild.in
index 13e9824..932efb2 100644
--- a/abuild.in
+++ b/abuild.in
@@ -1557,6 +1557,9 @@ build_abuildrepo() {
if options_has "checkx11"; then
_check=check_x11
fi
+ if options_has "checkretry"; then
+ _check=check_retry
+ fi
if ! want_check; then
_check=true
fi
@@ -1853,6 +1856,16 @@ check_x11() {
env DISPLAY=:7 dbus-run-session "$abuild_path" $forceroot $color_opt $keep_build check
}
+# wrap check() with retries
+check_retry() {
+ count=${ABUILD_RETRY_COUNT:=5}
+ (cd "$startdir";
+ while test $((count=$(($count-1)))) -ge 0; do
+ msg "Trying check..."
+ check && exit 0;
+ done; exit 1)
+}
+
# build and package in fakeroot
rootpkg() {
cd "$startdir"