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