aboutsummaryrefslogtreecommitdiff
path: root/build.sh
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2017-10-19 11:06:26 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2017-10-19 11:14:01 +0200
commit3712018cdfca06dbdf58514d6f238922c11ac8de (patch)
tree6422d7a7eacac77e83d7a5c3cb0ca2445b3eb5d3 /build.sh
parent1558209fdb2fe5fc33293c2510483cfbc5154ad3 (diff)
Implement network timeout option (--timeout) in build script/batch files
Diffstat (limited to 'build.sh')
-rwxr-xr-xbuild.sh43
1 files changed, 33 insertions, 10 deletions
diff --git a/build.sh b/build.sh
index 7ab3aae..818d3f3 100755
--- a/build.sh
+++ b/build.sh
@@ -56,6 +56,7 @@ while test $# -ne 0; do
diag " --repo <loc> Alternative package repository location."
diag " --trust <fp> Certificate fingerprint to trust."
diag " --make <jobs> Bootstrap using GNU make instead of script."
+ diag " --timeout <sec> Network operations timeout in seconds."
diag
diag "By default the script will install into /usr/local using sudo(1)."
diag "To use sudo for a custom installation directory you need to specify"
@@ -121,6 +122,16 @@ while test $# -ne 0; do
make="$1"
shift
;;
+ --timeout)
+ shift
+ if test $# -eq 0; then
+ diag "error: value in seconds expected after --timeout"
+ diag "$usage"
+ exit 1
+ fi
+ timeout="$1"
+ shift
+ ;;
*)
cxx="$1"
break
@@ -178,6 +189,26 @@ case "$sys" in
;;
esac
+# We don't have arrays in POSIX shell but we should be ok as well as none of
+# the option values contain spaces. Note also that the expansion must be
+# unquoted.
+#
+bpkg_fetch_ops=
+bpkg_build_ops=
+
+if test -n "$timeout"; then
+ bpkg_fetch_ops="--fetch-timeout $timeout"
+ bpkg_build_ops="--fetch-timeout $timeout"
+fi
+
+if test "$trust" = "yes"; then
+ bpkg_fetch_ops="$bpkg_fetch_ops --trust-yes"
+elif test "$trust" = "no"; then
+ bpkg_fetch_ops="$bpkg_fetch_ops --trust-no"
+elif test -n "$trust"; then
+ bpkg_fetch_ops="$bpkg_fetch_ops --trust $trust"
+fi
+
# Bootstrap, stage 1.
#
run cd build2
@@ -230,16 +261,8 @@ config.install.root="$idir" \
config.install.sudo="$conf_sudo"
run bpkg-stage add "$BUILD2_REPO"
-if test -z "$trust"; then
- run bpkg-stage fetch
-elif test "$trust" = "yes"; then
- run bpkg-stage --trust-yes fetch
-elif test "$trust" = "no"; then
- run bpkg-stage --trust-no fetch
-else
- run bpkg-stage --trust "$trust" fetch
-fi
-run bpkg-stage build --yes build2 bpkg
+run bpkg-stage $bpkg_fetch_ops fetch
+run bpkg-stage $bpkg_build_ops build --yes build2 bpkg
run bpkg-stage install build2 bpkg
run which b