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
> 
> 

Reply via email to