On Wed, Apr 29, 2020 at 10:28:12PM -0500, James Jerkins wrote: > 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
*if* we want the ability to upgrade not all sets, it should be done automatically for the sets that are currently present, not with an option. The latter is a sure way to end up with partial upgrades. -Otto > > > 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 > >