## Abstract
This patch adds an argument to sysupgrade(8) which makes it possible
to check if an upgrade is available, similar to "syspatch -c".
This works both, for snapshots and releases.

## Usage
Add "-c" to sysupgrade.
If the script exits with a zero, an upgrade is available. If it fails
you are already on the newest version or an upgrade cannot be pulled
for whatever reason.

## Motivation
I want a cronjob on my desktop (which is on -current) that checks
regularly if a new snapshot is available and notifies me if this is
the case. syspatch(8) already has such a feature, so why not add
one to sysupgrade? Also it could be useful on -stable and -release
systems.

## Notes
This was already brought up a year ago by Andrew Klaus, however it
got no feedback at all. Also this diff is a smaller one.
The Message-ID of that patch:
c714aaea-208a-346f-9d83-20e590888fb1

Feedback and thoughts?

Index: usr.sbin/sysupgrade/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
--- usr.sbin/sysupgrade/sysupgrade.8    3 Oct 2019 12:43:58 -0000       1.10
+++ usr.sbin/sysupgrade/sysupgrade.8    3 Aug 2020 10:44:53 -0000
@@ -14,7 +14,7 @@
 .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 .\"
-.Dd $Mdocdate: October 3 2019 $
+.Dd $Mdocdate: August 3 2020 $
 .Dt SYSUPGRADE 8
 .Os
 .Sh NAME
@@ -22,7 +22,7 @@
 .Nd upgrade system to the next release or a new snapshot
 .Sh SYNOPSIS
 .Nm
-.Op Fl fkn
+.Op Fl fknc
 .Op Fl r | s
 .Op Ar installurl
 .Sh DESCRIPTION
@@ -60,6 +60,9 @@ By default they will be deleted after th
 Fetch and verify the files and create
 .Pa /bsd.upgrade
 but do not reboot.
+.It Fl c
+Check if there is an upgrade available. It will succeed if a new version
+is available or will fail if not.
 .It Fl r
 Upgrade to the next release.
 This is the default if the system is currently running a release.
Index: usr.sbin/sysupgrade/sysupgrade.sh
===================================================================
RCS file: /cvs/src/usr.sbin/sysupgrade/sysupgrade.sh,v
retrieving revision 1.39
diff -u -p -u -p -r1.39 sysupgrade.sh
--- usr.sbin/sysupgrade/sysupgrade.sh   4 Jul 2020 18:30:46 -0000       1.39
+++ usr.sbin/sysupgrade/sysupgrade.sh   3 Aug 2020 10:44:53 -0000
@@ -34,7 +34,7 @@ ug_err()

 usage()
 {
-       ug_err "usage: ${0##*/} [-fkn] [-r | -s] [installurl]"
+       ug_err "usage: ${0##*/} [-fknc] [-r | -s] [installurl]"
 }

 unpriv()
@@ -75,12 +75,14 @@ SNAP=false
 FORCE=false
 KEEP=false
 REBOOT=true
+CHECK=false

-while getopts fknrs arg; do
+while getopts fkncrs arg; do
        case ${arg} in
        f)      FORCE=true;;
        k)      KEEP=true;;
        n)      REBOOT=false;;
+       c)      CHECK=true;;
        r)      RELEASE=true;;
        s)      SNAP=true;;
        *)      usage;;
@@ -146,6 +148,14 @@ rm SHA256.sig

 if cmp -s /var/db/installed.SHA256 SHA256 && ! $FORCE; then
        echo "Already on latest snapshot."
+       if $CHECK; then
+               exit 1
+       fi
+       exit 0
+fi
+
+if $CHECK; then
+       echo "Upgrade is available"
        exit 0
 fi

Reply via email to