Hello, This patch adds two new options to sysupgrade. The first option is for small box systems like an APU system that only has the base and manual sets installed. The second option is for headless systems without X11 like servers. I have tested this patch from the 6.5 release to 6.6 release to current for both the minimal and no X11 options. In order to test, I did remove the ftp -N option which is not present in the 6.5 or 6.6 releases. I also tested sysupgrade without invoking either new option from 6.5 to 6.6 to current for regression. All of these tests resulted in a successful upgrade.
I also repeated the above tests from a full install to minimal and base installs and, of course, the system is broken after such an upgrade. While it is possible to check for the presence of clang or xinit to guess if the requested upgrade is safe, I believe it would still only be a guess that couldn't eliminate all the creative ways someone could break their installation. If anyone has a suggestion for how to address this problem I am willing to work on it and submit an updated patch. Thank you to all the OpenBSD developers for the incredible work you do every day on OpenBSD and for sharing your work. James Index: sysupgrade.sh =================================================================== RCS file: /cvs/src/usr.sbin/sysupgrade/sysupgrade.sh,v retrieving revision 1.37 diff -u -p -u -p -r1.37 sysupgrade.sh --- sysupgrade.sh 26 Jan 2020 22:08:36 -0000 1.37 +++ sysupgrade.sh 30 Apr 2020 03:07:15 -0000 @@ -34,7 +34,7 @@ ug_err() usage() { - ug_err "usage: ${0##*/} [-fkn] [-r | -s] [installurl]" + ug_err "usage: ${0##*/} [-fkn] [-r | -s] [-x | -z] [installurl]" } unpriv() @@ -78,14 +78,18 @@ SNAP=false FORCE=false KEEP=false REBOOT=true +NOX11=false +MINIMAL=false -while getopts fknrs arg; do +while getopts fknrsxz arg; do case ${arg} in f) FORCE=true;; k) KEEP=true;; n) REBOOT=false;; r) RELEASE=true;; s) SNAP=true;; + x) NOX11=true;; + z) MINIMAL=true;; *) usage;; esac done @@ -96,6 +100,10 @@ if $RELEASE && $SNAP; then usage fi +if $MINIMAL && $NOX11; then + usage +fi + set -A _KERNV -- $(sysctl -n kern.version | sed 's/^OpenBSD \([1-9][0-9]*\.[0-9]\)\([^ ]*\).*/\1 \2/;q') @@ -152,9 +160,19 @@ if cmp -s /var/db/installed.SHA256 SHA25 exit 0 fi +if $MINIMAL; then +# INSTALL.*, bsd*, base*, man* + SETS=$(sed -n -e 's/^SHA256 (\(.*\)) .*/\1/' \ + -e '/^INSTALL\./p;/^bsd/p;/^base/p;/^man/p' SHA256) +elif $NOX11; then +# INSTALL.*, bsd*, *.tgz without x* + SETS=$(sed -n -e 's/^SHA256 (\(.*\)) .*/\1/' \ + -e '/^INSTALL\./p;/^bsd/p;/^x/d;/\.tgz$/p' SHA256) +else # INSTALL.*, bsd*, *.tgz -SETS=$(sed -n -e 's/^SHA256 (\(.*\)) .*/\1/' \ - -e '/^INSTALL\./p;/^bsd/p;/\.tgz$/p' SHA256) + SETS=$(sed -n -e 's/^SHA256 (\(.*\)) .*/\1/' \ + -e '/^INSTALL\./p;/^bsd/p;/\.tgz$/p' SHA256) +fi OLD_FILES=$(ls) OLD_FILES=$(rmel SHA256 $OLD_FILES) Index: sysupgrade.8 =================================================================== RCS file: /cvs/src/usr.sbin/sysupgrade/sysupgrade.8,v retrieving revision 1.10 diff -u -p -u -p -r1.10 sysupgrade.8 --- sysupgrade.8 3 Oct 2019 12:43:58 -0000 1.10 +++ sysupgrade.8 30 Apr 2020 03:07:30 -0000 @@ -24,6 +24,7 @@ .Nm .Op Fl fkn .Op Fl r | s +.Op Fl x | z .Op Ar installurl .Sh DESCRIPTION .Nm @@ -66,6 +67,16 @@ This is the default if the system is cur .It Fl s Upgrade to a snapshot. This is the default if the system is currently running a snapshot. +.It Fl x +Perform an upgrade of the kernel and all sets except the X11 sets. +This option will render your system +.Sy unusable +if the current installation includes other sets. +.It Fl z +Perform an upgrade of the kernel and base and manual sets. +This option will render your system +.Sy unusable +if the current installation includes other sets. .El .Sh FILES .Bl -tag -width "/auto_upgrade.conf" -compact