Re: sysupgrade -S siteXY.tgz

Florian Obser <[email protected]>
Newsgroups gmane.os.openbsd.tech
Message-ID <[email protected]>
On 2026-06-12 19:01 +02, Stefan Sperling <[email protected]> wrote:
> At present, a site set with custom files must be uploaded to the same
> mirror which base sets are fetched from. Else the site set is not
> available during installation and upgrades. This makes it a bit
> difficult to use official installation mirrors with site sets during
> upgrades since a custom mirror is required to serve the site set from.

This sounds useful; maybe you can trick someone who actually understands
shell scripts to do a review?

Two comments inline.

>
>
>  add support for custom site sets to sysupgrade
>  
> M  usr.sbin/sysupgrade/sysupgrade.8   |   7+  0-
> M  usr.sbin/sysupgrade/sysupgrade.sh  |  18+  3-
>
> 2 files changed, 25 insertions(+), 3 deletions(-)
>
> commit - b5f1a9c5e77f3bfe0e6eed9fcd0cf0c458ccac64
> commit + b974289573def6a011ddb7b1456b120de0c9cafc
> blob - 41438ad98167851b352ac80e274b7b4d347fe219
> blob + b32efa8b370cde5425d834bd2e65c33be3e2e277
> --- usr.sbin/sysupgrade/sysupgrade.8
> +++ usr.sbin/sysupgrade/sysupgrade.8
> @@ -25,6 +25,7 @@
>  .Op Fl fkns
>  .Op Fl b Ar base-directory
>  .Op Fl R Ar version
> +.Op Fl S Ar siteXY.tgz
>  .Op Ar installurl | path
>  .Sh DESCRIPTION
>  .Nm
> @@ -73,6 +74,12 @@ Downgrading is unlikely to work.
>  .It Fl s
>  Upgrade to a snapshot.
>  The default is to upgrade to the next release.
> +.It Fl S Ar siteXY.tgz
> +Install a custom
> +.Ar siteXY.tgz
> +set during the upgrade in addition to the regular
> +.Ox
> +release sets.
>  .El
>  .Pp
>  When updating to a release or snapshot which lacks the required signify
> blob - 6d893e5f9e245140768c595fddcc4b7e274ea95d
> blob + 482fe3dd0b1ea2d3af1fc1ebf7d77223b989c023
> --- usr.sbin/sysupgrade/sysupgrade.sh
> +++ usr.sbin/sysupgrade/sysupgrade.sh
> @@ -35,7 +35,7 @@ err()
>  
>  usage()
>  {
> -	echo "usage: ${0##*/} [-fkns] [-b base-directory] [-R version] [installurl | path]" 1>&2
> +	echo "usage: ${0##*/} [-fkns] [-b base-directory] [-R version] [-S siteXY.tgz] [installurl | path]" 1>&2
>  	return 1
>  }
>  
> @@ -79,11 +79,13 @@ FORCE_VERSION=false
>  KEEP=false
>  REBOOT=true
>  WHAT='release'
> +PATH_SITESET=''
> +SITESET=''
>  
>  VERSION=$(uname -r)
>  NEXT_VERSION=$(echo ${VERSION} + 0.1 | bc)
>  
> -while getopts b:fknrR:s arg; do
> +while getopts b:fknrR:sS: arg; do
>  	case ${arg} in
>  	b)	SETSDIR=${OPTARG}/_sysupgrade;;
>  	f)	FORCE=true;;
> @@ -95,6 +97,11 @@ while getopts b:fknrR:s arg; do
>  		    err "invalid version: ${OPTARG}"
>  		NEXT_VERSION=${OPTARG};;
>  	s)	SNAP=true;;
> +	S)	PATH_SITESET=$(realpath "${OPTARG}");
> +		SITESET=$(basename "${OPTARG}");
> +		[[ "${SITESET}" == @(site[0-9][0-9].tgz) ]] || 

trailing whitespace

> +		    err "invalid site set: ${OPTARG}";
> +		;;
>  	*)	usage;;
>  	esac
>  done
> @@ -218,14 +225,22 @@ if [[ -n ${DL} ]]; then
>  	unpriv cksum -qC SHA256 ${DL}
>  fi
>  
> +if [ -n "${PATH_SITESET}" ]; then
> +	cp ${PATH_SITESET} .
> +	ls -l > index.txt

why do you need index.txt? As far as I can work out it's only being used
by install_http() and sysupgrade doesn't end up there?

> +fi
> +
>  cat <<__EOT >/auto_upgrade.conf
>  Location of sets = disk
>  Pathname to the sets = ${SETSDIR}/
>  Directory does not contain SHA256.sig. Continue without verification = yes
>  __EOT
> +if [ -n "${SITESET}" ]; then
> +	echo "Set name(s) = +${SITESET}" >>/auto_upgrade.conf
> +fi
>  
>  if ! ${KEEP}; then
> -	CLEAN=$(echo BUILDINFO SHA256 ${SETS} | sed -e 's/ /,/g')
> +	CLEAN=$(echo BUILDINFO SHA256 ${SETS} index.txt ${SITESET} | sed -e 's/ /,/g')
>  	cat <<__EOT > /etc/rc.firsttime
>  rm -f ${SETSDIR}/{${CLEAN}}
>  __EOT
>

-- 
In my defence, I have been left unsupervised.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.