X-Git-Url: https://iankelling.org/git/?p=distro-setup;a=blobdiff_plain;f=filesystem%2Fusr%2Flocal%2Fbin%2Fmyupgrade;h=737cb13ccb5c7a8967ae945d2f9208735f9f2dd5;hp=b990fbb70c080db20d91855c4c1d46931cd54bc1;hb=77917a8fbf2032a8b2634a1b3de0879ec45cf213;hpb=b1c29177fe76f8f2a557f7f36c987df3ef2a6cb4 diff --git a/filesystem/usr/local/bin/myupgrade b/filesystem/usr/local/bin/myupgrade index b990fbb..737cb13 100755 --- a/filesystem/usr/local/bin/myupgrade +++ b/filesystem/usr/local/bin/myupgrade @@ -4,30 +4,69 @@ if [ -z "$BASH_VERSION" ]; then echo "error: shell is not bash" >&2; exit 1; fi -set -eE -o pipefail -trap 'echo "$0:$LINENO:error: \"$BASH_COMMAND\" returned $?" >&2' ERR +source /usr/local/lib/err +pre="${0##*/}:" +m() { printf "$pre %s\n" "$*"; "$@"; } +e() { printf "$pre %s\n" "$*"; } +err() { echo "[$(date +'%Y-%m-%d %H:%M:%S%z')]: $pre: $*" >&2; } + +if [[ $EUID == 0 ]]; then + err "run as nonroot" + exit 1 +fi hn=$(hostname -f) source /a/bin/bash_unpublished/source-state + +l() { + "$@" |& systemd-cat -t myupgrade +} +l /a/bin/buildscripts/rust + +has_x=false +for pkg in xorg wayland; do + if dpkg -s -- $x |& grep -Fx "Status: install ok installed" &> /dev/null; then + has_x=true + break + fi +done + +if $has_x; then + l /a/bin/buildscripts/tor-browser + l /a/bin/buildscripts/misc +fi + + +source /a/bin/distro-setup/path-add-function +export GOPATH=$HOME/go +path-add $GOPATH/bin +path-add /usr/local/go/bin +l /a/bin/buildscripts/go +l go get -u mvdan.cc/fdroidcl + +cmd="sudo /usr/sbin/checkrestart -p" +if [[ $($cmd | sed '/^Found 0 processes using old versions of upgraded files$/d' | wc -l) != 0 ]]; then + $cmd | pee cat wall +fi + +# no automatic reboot for these hosts if [[ $HOSTNAME == "$MAIL_HOST" || $hn == li.b8.nz ]]; then exit 0 fi -/usr/sbin/checkrestart -v -i bash -b /a/bin/distro-setup/checkrestart-blacklist | \ - sed '/^Found 0 processes using old versions of upgraded files$/d' >/var/log/checkrestart.log - if [[ -s /var/log/checkrestart.log ]]; then for x in {30..1}; do - echo "pid $PID. unattended upgrade, rebooting in $((x*10)) seconds" | wall -n + echo "pid $PID. unattended upgrade, rebooting in $((x*10)) seconds" | sudo wall -n sleep 10 done for x in {30..1}; do if ! fuser /var/lib/dpkg/lock &> /dev/null; then - /sbin/reboot + echo "pid $PID. unattended upgrade, rebooting now" | pee cat "sudo wall -n" + sudo /sbin/reboot exit 0 fi - echo "pid $PID. unattended upgrade reboot waiting 10 seconds for dpkg lock" | wall -n + echo "pid $PID. unattended upgrade reboot waiting 10 seconds for dpkg lock" | sudo wall -n sleep 10 done - echo "pid $PID. dpkg locked for 5 minutes, automatic reboot failed" | pee cat "wall -n" + echo "pid $PID. dpkg locked for 5 minutes, automatic reboot failed" | pee cat "sudo wall -n" fi