Hello folks,

First of all congratulations on a new OpenBSD release and thanks for
introducing sysupgrade in -current.

Before sysupgrade, I was using a custom script for achieving the same
result with only difference that I was checking if a new snapshot (or
release) is available by looking at BUILDINFO before starting the
upgrade process.

Patch below introduce the same behaviour using SHA256.sig as control
file. If you believe there is a valid use case for reinstalling already
applied sets to the running system please let me know and I can add a
-f force option.

Cheers,
Marco

Index: usr.sbin/sysupgrade/sysupgrade.8
===================================================================
RCS file: /cvs/src/usr.sbin/sysupgrade/sysupgrade.8,v
retrieving revision 1.2
diff -u -p -u -r1.2 sysupgrade.8
--- usr.sbin/sysupgrade/sysupgrade.8    26 Apr 2019 05:54:49 -0000      1.2
+++ usr.sbin/sysupgrade/sysupgrade.8    27 Apr 2019 11:54:40 -0000
@@ -28,7 +28,7 @@
 .Nm
 is a utility to upgrade
 .Ox
-to the next release or a new snapshot.
+to the next release or a new snapshot if available.
 .Pp
 .Nm
 downloads the necessary files to

Index: usr.sbin/sysupgrade/sysupgrade.sh
===================================================================
RCS file: /cvs/src/usr.sbin/sysupgrade/sysupgrade.sh,v
retrieving revision 1.6
diff -u -p -u -r1.6 sysupgrade.sh
--- usr.sbin/sysupgrade/sysupgrade.sh   26 Apr 2019 21:52:39 -0000      1.6
+++ usr.sbin/sysupgrade/sysupgrade.sh   27 Apr 2019 11:54:48 -0000
@@ -110,7 +110,19 @@ fi
 
 cd ${SETSDIR}
 
-unpriv -f SHA256.sig ftp -Vmo SHA256.sig ${URL}SHA256.sig
+unpriv -f SHA256.sig.tmp ftp -Vmo SHA256.sig.tmp ${URL}SHA256.sig
+TMP_SHA=$(sha256 -q SHA256.sig.tmp)
+
+unpriv touch SHA256.sig
+CUR_SHA=$(sha256 -q SHA256.sig)
+
+if [[ "${TMP_SHA}" = "${CUR_SHA}" ]]; then
+       rm SHA256.sig.tmp
+       return 0
+fi
+
+unpriv cat SHA256.sig.tmp >SHA256.sig
+rm SHA256.sig.tmp
 
 _KEY=openbsd-${_KERNV[0]%.*}${_KERNV[0]#*.}-base.pub
 _NEXTKEY=openbsd-${NEXT_VERSION%.*}${NEXT_VERSION#*.}-base.pub

Reply via email to