diff options
-rw-r--r-- | APKBUILD.5 | 8 | ||||
-rw-r--r-- | abuild.in | 16 |
2 files changed, 24 insertions, 0 deletions
@@ -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 . @@ -1533,6 +1533,9 @@ build_abuildrepo() { if options_has "checkroot"; then _check=check_fakeroot fi + if options_has "checkretry"; then + _check=check_retry + fi if ! want_check; then _check=true fi @@ -1787,6 +1790,19 @@ check_fakeroot() { do_fakeroot "$abuild_path" $forceroot $color_opt $keep_build check } +# wrap check() with retries +check_retry() { + count=${ABUILD_RETRY_COUNT:=5} + (cd "$startdir"; + try=1 + while [ $try -le $count ]; do + msg "Test attempt $try of $count..." + check && exit 0 + try=$(($try+1)) + [ $try -gt $count ] && exit 1 + done) +} + # build and package in fakeroot rootpkg() { cd "$startdir" |