summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKlemens Nanni <kn@cvs.openbsd.org>2021-08-29 13:31:53 +0000
committerKlemens Nanni <kn@cvs.openbsd.org>2021-08-29 13:31:53 +0000
commit409b89b45f65cc2d68727d1e0f9ca26b0e8bc541 (patch)
tree69172da268a7b799830e7710a73ee85021d9cd80
parent5362b565902672cd8a94091ce7513564b28d2a24 (diff)
Merge sysupgrade watchdog and prompt timeout code
Provide TIMOUT_{ACTION,PERIOD_SEC} in {start,stop,reset}_timeout() to have install.sub and dot.profile use the same mnemonic helpers.
-rw-r--r--distrib/miniroot/dot.profile21
-rw-r--r--distrib/miniroot/install.sub32
2 files changed, 21 insertions, 32 deletions
diff --git a/distrib/miniroot/dot.profile b/distrib/miniroot/dot.profile
index 6a998d92ba3..1b9939c61ad 100644
--- a/distrib/miniroot/dot.profile
+++ b/distrib/miniroot/dot.profile
@@ -1,4 +1,4 @@
-# $OpenBSD: dot.profile,v 1.47 2021/08/29 13:16:22 kn Exp $
+# $OpenBSD: dot.profile,v 1.48 2021/08/29 13:31:52 kn Exp $
# $NetBSD: dot.profile,v 1.1 1995/12/18 22:54:43 pk Exp $
#
# Copyright (c) 2009 Kenneth R. Westerback
@@ -43,17 +43,13 @@ umask 022
# emacs-style command line editing.
set -o emacs
+# Leave installer prompt without user interaction.
+TIMEOUT_ACTION='kill $$'
TIMEOUT_PERIOD_SEC=5
-# Stop the background timer.
-stop_timeout() {
- kill -KILL $WDPID 2>/dev/null
-}
-
-# Start a co-process to XXX.
start_timeout() {
(
- sleep $TIMEOUT_PERIOD_SEC && kill $$
+ sleep $TIMEOUT_PERIOD_SEC && eval $TIMEOUT_ACTION
) |&
WDPID=$!
@@ -61,6 +57,15 @@ start_timeout() {
exec 3>&p; exec 3>&-
}
+stop_timeout() {
+ kill -KILL $WDPID 2>/dev/null
+}
+
+reset_watchdog() {
+ stop_timeout
+ start_timeout
+}
+
if [[ -z $DONEPROFILE ]]; then
DONEPROFILE=YES
diff --git a/distrib/miniroot/install.sub b/distrib/miniroot/install.sub
index 45a89748987..fb24b32784a 100644
--- a/distrib/miniroot/install.sub
+++ b/distrib/miniroot/install.sub
@@ -1,5 +1,5 @@
#!/bin/ksh
-# $OpenBSD: install.sub,v 1.1174 2021/08/29 13:05:43 kn Exp $
+# $OpenBSD: install.sub,v 1.1175 2021/08/29 13:31:52 kn Exp $
#
# Copyright (c) 1997-2015 Todd Miller, Theo de Raadt, Ken Westerback
# Copyright (c) 2015, Robert Peichaer <rpe@openbsd.org>
@@ -1629,7 +1629,7 @@ install_files() {
# Fetch and verify the set files.
for _f in $_get_sets; do
- $UU && reset_watchdog
+ $UU && reset_timeout
rm -f /tmp/h /tmp/fail
@@ -1694,7 +1694,7 @@ install_files() {
# Install the set files.
for _f in $_get_sets; do
- $UU && reset_watchdog
+ $UU && reset_timeout
_fsrc="$_src/$_f"
# Take the set file from the prefetch area if possible.
@@ -1743,7 +1743,7 @@ install_files() {
cp ${_src#file://}/SHA256 /mnt/var/db/installed.SHA256
fi
- $UU && reset_watchdog
+ $UU && reset_timeout
}
# Fetch install sets from an HTTP server possibly using a proxy.
@@ -3283,25 +3283,9 @@ check_unattendedupgrade() {
) > /dev/null 2>&1
}
-WATCHDOG_PERIOD_SEC=$((30 * 60))
-
-# Restart the background timer.
-reset_watchdog() {
- kill -KILL $WDPID 2>/dev/null
- start_watchdog
-}
-
-# Start a co-process to reboot a stalled sysupgrade.
-# This mechanism is only used during non-interactive sysupgrade.
-start_watchdog() {
- (
- sleep $WATCHDOG_PERIOD_SEC && reboot
- ) |&
- WDPID=$!
-
- # Close standard input of the co-process.
- exec 3>&p; exec 3>&-
-}
+# Reboot out of a stalled non-interactive sysupgrade.
+TIMEOUT_ACTION=reboot
+TIMEOUT_PERIOD_SEC=$((30 * 60))
# ------------------------------------------------------------------------------
# Initial actions common to both installs and upgrades.
@@ -3452,7 +3436,7 @@ elif $UU; then
MODE=upgrade
check_unattendedupgrade || exit 1
- start_watchdog
+ start_timeout
get_responsefile
do_autoinstall