File smartmontools-update-smart-drivedb.patch of Package smartmontools
Index: smartmontools-7.5/configure.ac
===================================================================
--- smartmontools-7.5.orig/configure.ac
+++ smartmontools-7.5/configure.ac
@@ -733,12 +733,8 @@ AC_SUBST([os_nisdomainname])
AC_SUBST([os_man_filter])
AC_SUBST([os_win32_manifest])
-# Create drivedb.h update branch name from version: 5.41[.X] -> RELEASE_5_41_DRIVEDB
-DRIVEDB_BRANCH=`echo "$drivedb_version" | sed 's,^\([[0-9]]*\.[[0-9]]*\)\..*$,\1,' \
- | sed -n 's,^\([[0-9]][[0-9]]*\)\.\([[0-9]][[0-9]]*\)$,RELEASE_\1_\2_DRIVEDB,p'`
-if test -z "$DRIVEDB_BRANCH"; then
- AC_MSG_ERROR([Unable to create DRIVEDB_BRANCH for version: $drivedb_version])
-fi
+# drivedb.h update branch
+DRIVEDB_BRANCH=$smartmontools_drivedb_version
AC_SUBST([DRIVEDB_BRANCH])
# Enable platform-specific makefile sections
Index: smartmontools-7.5/configure
===================================================================
--- smartmontools-7.5.orig/configure
+++ smartmontools-7.5/configure
@@ -7813,12 +7813,8 @@ fi
-# Create drivedb.h update branch name from version: 5.41[.X] -> RELEASE_5_41_DRIVEDB
-DRIVEDB_BRANCH=`echo "$drivedb_version" | sed 's,^\([0-9]*\.[0-9]*\)\..*$,\1,' \
- | sed -n 's,^\([0-9][0-9]*\)\.\([0-9][0-9]*\)$,RELEASE_\1_\2_DRIVEDB,p'`
-if test -z "$DRIVEDB_BRANCH"; then
- as_fn_error $? "Unable to create DRIVEDB_BRANCH for version: $drivedb_version" "$LINENO" 5
-fi
+# drivedb.h update branch
+DRIVEDB_BRANCH=$smartmontools_drivedb_version
# Enable platform-specific makefile sections
Index: smartmontools-7.5/update-smart-drivedb.in
===================================================================
--- smartmontools-7.5.orig/update-smart-drivedb.in
+++ smartmontools-7.5/update-smart-drivedb.in
@@ -4,12 +4,10 @@
#
# Home page of code is: https://www.smartmontools.org
#
-# Copyright (C) 2010-22 Christian Franke
+# Copyright (C) 2010-25 Christian Franke
#
# SPDX-License-Identifier: GPL-2.0-or-later
#
-# $Id: update-smart-drivedb.in 5699 2025-04-25 14:45:35Z chrfranke $
-#
set -e
@@ -22,6 +20,7 @@ exec_prefix="@exec_prefix@"
sbindir="@sbindir@"
datarootdir="@datarootdir@"
datadir="@datadir@"
+# shellcheck disable=SC2034
localstatedir="@localstatedir@"
drivedbinstdir="@drivedbinstdir@"
drivedbdir="@drivedbdir@"
@@ -64,10 +63,8 @@ Usage: $myname [OPTIONS] [DESTFILE]
[default: first one found in $pathinfo]
-u, --url-of LOCATION
Use URL of LOCATION for download:
- github (GitHub mirror of SVN repository)
- sf (Sourceforge code browser)
- svn (SVN repository) [default]
- svni (SVN repository via HTTP instead of HTTPS)
+ github (upstream git repository) [default]
+ svn (previous SVN repository)
trac (Trac code browser)
--url URL Download from URL
--file FILE Copy from local FILE
@@ -78,8 +75,8 @@ EOF
'--no-verify --file $drivedbinstdir/drivedb.h'
EOF
cat <<EOF
- --trunk Download from SVN trunk (requires '--no-verify')
- --branch X.Y Download from branches/RELEASE_X_Y_DRIVEDB
+ --main Download from main branch (requires '--no-verify')
+ --branch X.Y Download from branch X.Y
--cacert FILE Use CA certificates from FILE to verify the peer
--capath DIR Use CA certificate files from DIR to verify the peer
--insecure Don't abort download if certificate verification fails
@@ -92,8 +89,8 @@ EOF
-h, --help Print this help text
Updates $default_drivedb
-or DESTFILE from branches/$default_branch of smartmontools
-SVN repository.
+or DESTFILE from branch 'drivedb/$default_branch' of smartmontools git
+repository.
EOF
}
@@ -127,15 +124,12 @@ warning()
selecturl()
{
case $1 in
- github) # https://github.com/smartmontools/smartmontools/raw/origin/$branch/smartmontools/drivedb.h
- # https://github.com/smartmontools/smartmontools/raw/master/smartmontools/drivedb.h
- # redirected to:
- url='https://raw.githubusercontent.com/smartmontools/smartmontools/master/smartmontools/drivedb.h' ;;
- sf) url='https://sourceforge.net/p/smartmontools/code/HEAD/tree/trunk/smartmontools/drivedb.h?format=raw' ;;
- svn) url='https://svn.code.sf.net/p/smartmontools/code/trunk/smartmontools/drivedb.h' ;;
- svni) url='http://svn.code.sf.net/p/smartmontools/code/trunk/smartmontools/drivedb.h' ;;
- trac) url='https://www.smartmontools.org/export/HEAD/trunk/smartmontools/drivedb.h' ;;
- *) error "$1: is none of 'github sf svn svni trac'"
+ github) # https://github.com/smartmontools/smartmontools/raw/refs/heads/main/src/drivedb.h
+ # redirected to:
+ url='https://raw.githubusercontent.com/smartmontools/smartmontools/refs/heads/main/src/drivedb.h' ;;
+ svn) url='https://svn.code.sf.net/p/smartmontools/code/trunk/smartmontools/drivedb.h' ;;
+ trac) url='https://www.smartmontools.org/browser/src/drivedb.h?format=raw&rev=main' ;;
+ *) error "$1: is none of 'github svn trac'"
esac
}
@@ -197,6 +191,17 @@ vrun2()
return $rc
}
+# rm_f FILE...
+rm_f()
+{
+ while [ $# -ne 0 ]; do
+ if [ -f "$1" ]; then
+ vrun rm -f "$1"
+ fi
+ shift
+ done
+}
+
# download URL FILE
download()
{
@@ -231,15 +236,6 @@ download()
vrun2 "$f" "$tool" -stderr -noredir -source "$u" || rc=$?
;;
- svn*)
- vrun "$tool" $q export \
- --non-interactive --no-auth-cache \
- ${cacert:+--config-option "servers:global:ssl-trust-default-ca=no"} \
- ${cacert:+--config-option "servers:global:ssl-authority-files=$cacert"} \
- ${insecure:+--trust-server-cert} \
- "$u" "$f" || rc=$?
- ;;
-
fetch*) # FreeBSD
vrun "$tool" $q --no-redirect \
${cacert:+--ca-cert "$cacert"} \
@@ -288,115 +284,11 @@ check_file()
return 0
}
-# unexpand_svn_id < INFILE > OUTFILE
-unexpand_svn_id()
-{
- sed 's,\$''Id'': drivedb\.h [0-9][0-9]* 2[-0-9]* [012][:0-9]*Z [a-z][a-z0-9]* \$,$''Id''$,'
-}
-
# selectkey BRANCH
selectkey()
{
case $1 in
- RELEASE_5_4[0-3]_DRIVEDB|RELEASE_6_[0-6]_DRIVEDB)
-# Smartmontools Signing Key (ext. to 2024) <smartmontools-database@listi.jpberlin.de>
-# Smartmontools Signing Key (through 2018) <smartmontools-database@listi.jpberlin.de>
-# Smartmontools Signing Key (through 2018) <smartmontools-database@lists.sourceforge.net>
-# Key ID DFD22559
-public_key="\
------BEGIN PGP PUBLIC KEY BLOCK-----
-
-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
-1TC5jSVOIEqOE4TwzRz1Y/dfqSU=
-=3Lcg
------END PGP PUBLIC KEY BLOCK-----
-"
- ;;
-
- RELEASE_7_[0235]_DRIVEDB)
+ 7.[0235])
# Smartmontools Signing Key (through 2025) <smartmontools-database@listi.jpberlin.de>
# Smartmontools Signing Key (through 2020) <smartmontools-database@listi.jpberlin.de>
# Key ID 721042C5
@@ -488,7 +380,7 @@ Q/qvYlwkbKOdlahjoHrFlkhADSBaO9N1OZp3OYDj
"
;;
- *) error "No known public key for branches/$1" ;;
+ *) error "No known public key for branch '$1'" ;;
esac
}
@@ -542,31 +434,36 @@ gpg_verify()
# get_db_version DRIVEDB > VERSION
get_db_version()
{
- local r v x
- x=`sed -n '/^[ {]*"VERSION: *[^"]*"/{
- s,^[ {]*"VERSION: \([1-9][./0-9]* [^"]*\)".*$,\1,p
+ local v
+ v=`sed -n '/^[ {]*"VERSION: .*"/{
+ s,^[ {]*"VERSION: \([1-9][./0-9]*\)[ "].*$,\1,p
q
}' "$1"` || return 1
- v=${x%% *}
test -n "$v" || return 0
- if [ "${v%/*}" = "$v" ]; then # trunk: get rev from expanded SVN-Id
- r=`echo "$x" | sed -n 's,^[^$]*\$''Id: drivedb\.h \([1-9][0-9]*\) .*$,\1,p'`
- test -n "$r" || r="?"
- v="$v/$r"
- fi
+ test "${v%/*}" != "$v" || v="$v/?"
echo "$v"
}
-# mv_all PREFIX OLD NEW
-mv_all()
+# drivedb_mv OLD NEW
+drivedb_mv()
{
- mv -f "${1}${2}" "${1}${3}" && \
- mv -f "${1}${2}.raw" "${1}${3}.raw" && \
- if [ -f "${1}${2}.raw.asc" ]; then
- mv -f "${1}${2}.raw.asc" "${1}${3}.raw.asc"
- else
- rm -f "${1}${3}.raw.asc"
- fi
+ local ext nf of
+ for ext in "" ".asc" ".raw" ".raw.asc"; do
+ of="${drivedb}${1}${ext}"
+ nf="${drivedb}${2}${ext}"
+ if [ -f "$of" ]; then
+ vrun mv -f "$of" "$nf"
+ else
+ rm_f "$nf"
+ fi
+ done
+}
+
+# drivedb_error "MESSAGE"
+drivedb_error()
+{
+ drivedb_mv ".new" ".error"
+ error "${drivedb}.error${1}"
}
# Parse options
@@ -578,7 +475,7 @@ file=
quiet=
q="-q"
dryrun=
-trunk=
+main=
branch=$default_branch
cacert=
capath=
@@ -624,13 +521,16 @@ while true; do case $1 in
--dryrun)
dryrun=t ;;
- --trunk)
- trunk=t ;;
+ --main)
+ main=t ;;
--branch)
check_optarg "$@"; shift
- branch=`echo "$1" | sed -n 's,^\([567]\)\.\([0-9][0-9]*\)$,RELEASE_\1_\2_DRIVEDB,p'`
- test -n "$branch" || error "invalid branch version '$1'" ;;
+ branch=$1
+ case $branch in
+ 5.4[0-3]|6.[0-6]|7.[0235]) ;;
+ *) error "invalid branch '$branch'" ;;
+ esac ;;
--cacert)
check_optarg "$@"; shift
@@ -680,14 +580,26 @@ esac
# Check selected source
case "${url_of:+url_of}${url:+url}${file:+file}" in
''|url_of)
- test -n "$url_of" || url_of=svn
+ test -n "$url_of" || url_of=github
selecturl "$url_of"
- if [ -z "$trunk" ]; then # select branch
- url=`echo "$url" | sed -e "s,/trunk/,/branches/$branch/," \
- -e "s,/master/,/origin/$branch/,"`
- elif [ -z "$no_verify" ]; then
- error "'--trunk' requires '--no-verify'"
- fi ;;
+ case $url in
+ */main/*|*rev=main*)
+ if [ -z "$main" ]; then
+ url=`echo "$url" | sed -e "s,/main/,/drivedb/$branch/," \
+ -e "s,rev=main,rev=drivedb/$branch,"`
+ case $branch in
+ [567].*) url=`echo "$url" | sed -e 's,/src/,/smartmontools/,'` ;;
+ esac
+ elif [ -z "$no_verify" ]; then
+ error "'--main' requires '--no-verify'"
+ fi
+ ;;
+ */trunk/*)
+ test -z "$main" || error "'--main' is not supported with '-u svn'"
+ url=`echo "$url" | sed -e "s,/trunk/,/branches/RELEASE_${branch}_DRIVEDB/," \
+ -e 's,_\([0-9]*\)\.\([0-9]*\)_,_\1_\2_,'`;;
+ *) error "$url: invalid URL (internal)" ;;
+ esac ;;
url)
test -z "`echo "$url" | sed -e 's,^[a-z][a-z0-9]*:[^ ][^ ]*$,,'`" \
|| error "$url: Invalid URL" ;;
@@ -697,12 +609,23 @@ esac
# Determine path of signature file
file_asc=
+file_raw_asc=
url_asc=
-if [ -z "$no_verify" ]; then case $url in
- '') file_asc="$file.raw.asc" ;;
- *\?*) url_asc=`echo "$url" | sed 's,?,.raw.asc?,'` ;;
- *) url_asc="$url.raw.asc" ;;
-esac; fi
+if [ -z "$no_verify" ]; then
+ if [ -n "$url" ]; then
+ case $branch in
+ [567].*) raw=".raw" ;;
+ *) raw= ;;
+ esac
+ case $url in
+ *\?*) url_asc=`echo "$url" | sed "s,?,$raw.asc?,"` ;;
+ *) url_asc="$url$raw.asc" ;;
+ esac
+ else
+ file_asc="$file.asc"
+ file_raw_asc="$file.raw.asc"
+ fi
+fi
if [ -z "$file" ]; then
if [ -z "$tool" ]; then
@@ -727,17 +650,6 @@ if [ -z "$file" ]; then
fi
# Check option compatibility
-case "$tool:$url_of" in
- svn:svn*) ;;
- svn:*) error "'-t svn' requires '-u svn' or '-u svni'" ;;
-esac
-case "$tool:${capath:+set}" in
- svn:set) warning "'--capath' is ignored if '-t svn' is used" ;;
-esac
-case "$url_of:$insecure" in
- svni:t) insecure= ;;
- svni:*) error "'-u svni' requires '--insecure'" ;;
-esac
case "$tool:$insecure" in
lynx:t) warning "'--insecure' is ignored if '-t lynx' is used" ;;
esac
@@ -768,7 +680,7 @@ usageerr=
tmpdir=`dirname "$drivedb"`
# Remove possible garbage from last download
-test -n "$dryrun" || rm -f "$drivedb.new" "$drivedb.new.raw" "$drivedb.new.raw.asc" || exit 1
+rm_f "$drivedb.new" "$drivedb.new.asc" "$drivedb.new.raw" "$drivedb.new.raw.asc" || exit 1
if [ -n "$url" ]; then
# Download
@@ -776,17 +688,17 @@ if [ -n "$url" ]; then
rc=0
download "$url" "$drivedb.new" || rc=$?
if [ $rc != 0 ]; then
- rm -f "$drivedb.new"
+ rm_f "$drivedb.new"
error "drivedb.h: download failed ($tool: exit $rc)"
fi
if [ -n "$url_asc" ]; then
- vecho "Download drivedb.h.raw.asc with $tool"
+ vecho "Download drivedb.h.asc with $tool"
rc=0
- download "$url_asc" "$drivedb.new.raw.asc" || rc=$?
+ download "$url_asc" "$drivedb.new.asc" || rc=$?
if [ $rc != 0 ]; then
- rm -f "$drivedb.new" "$drivedb.new.raw.asc"
- error "drivedb.h.raw.asc: download failed ($tool: exit $rc) ('--no-verify' to ignore)"
+ rm_f "$drivedb.new" "$drivedb.new.asc"
+ error "drivedb.h.asc: download failed ($tool: exit $rc) ('--no-verify' to ignore)"
fi
fi
else
@@ -794,16 +706,20 @@ else
if [ ! -f "$file" ]; then
error "$file: file not found"
fi
- if [ -n "$file_asc" ] && [ ! -f "$file_asc" ]; then
- error "$file_asc: file not found ('--no-verify' to ignore)"
+ if [ -n "$file_asc" ]; then
+ if [ ! -f "$file_asc" ]; then
+ test -f "$file_raw_asc" \
+ || error "$file_asc, $file_raw_asc: file not found ('--no-verify' to ignore)"
+ file_asc=$file_raw_asc
+ fi
fi
if ! vrun cp "$file" "$drivedb.new"; then
error "$file: copy failed"
fi
if [ -n "$file_asc" ]; then
- if ! vrun cp "$file_asc" "$drivedb.new.raw.asc"; then
- rm -f "$drivedb.new"
+ if ! vrun cp "$file_asc" "$drivedb.new.asc"; then
+ rm_f "$drivedb.new"
error "$file_asc: copy failed"
fi
fi
@@ -812,96 +728,65 @@ fi
test -z "$dryrun" || exit 0
# Check files, adjust timestamps and permissions
-if ! errmsg=`check_file "$drivedb.new" '/' 10000 1000000`; then
- rm -f "$drivedb.new.raw.asc"
- mv -f "$drivedb.new" "$drivedb.error"
- error "$drivedb.error: $errmsg"
-fi
+errmsg=`check_file "$drivedb.new" '/' 10000 1000000` \
+|| drivedb_error ": $errmsg"
touch "$drivedb.new"
chmod 0644 "$drivedb.new"
-if [ -f "$drivedb.new.raw.asc" ]; then
- if ! errmsg=`check_file "$drivedb.new.raw.asc" '-' 200 2000`; then
- rm -f "$drivedb.new"
- mv -f "$drivedb.new.raw.asc" "$drivedb.error.raw.asc"
- error "$drivedb.error.raw.asc: $errmsg"
- fi
- touch "$drivedb.new.raw.asc"
- chmod 0644 "$drivedb.new.raw.asc"
+if [ -f "$drivedb.new.asc" ]; then
+ errmsg=`check_file "$drivedb.new.asc" '-' 200 2000` \
+ || drivedb_error ".asc: $errmsg"
+ touch "$drivedb.new.asc"
+ chmod 0644 "$drivedb.new.asc"
fi
-# Create raw file with unexpanded SVN Id
-# (This assumes newlines are LF and not CR/LF)
-unexpand_svn_id < "$drivedb.new" > "$drivedb.new.raw"
-chmod 0644 "$drivedb.new.raw"
-
# Check whether installed file is identical
-equal=
-if [ -f "$drivedb" ]; then
- if [ ! -f "$drivedb.raw" ]; then
- # Create missing raw file
- unexpand_svn_id < "$drivedb" > "$drivedb.raw"
- chmod 0644 "$drivedb.raw"
- fi
- # Ignore missing Id keyword expansion in new file
- if cmp "$drivedb.raw" "$drivedb.new.raw" >/dev/null 2>&1 \
- && { cmp "$drivedb" "$drivedb.new" >/dev/null 2>&1 \
- || cmp "$drivedb.raw" "$drivedb.new" >/dev/null 2>&1; }
- then
- equal=t
- fi
-fi
+equal=t
+cmp "$drivedb" "$drivedb.new" >/dev/null 2>&1 || equal=
if [ -z "$no_verify" ]; then
- # Verify raw file
- if ! gpg_verify "$drivedb.new.raw.asc" "$drivedb.new.raw"; then
- mv_all "$drivedb" ".new" ".error"
+ # Verify new file
+ if ! gpg_verify "$drivedb.new.asc" "$drivedb.new"; then
test -z "$equal" \
|| warning "$drivedb: *** installed file is identical to broken new file ***"
- error "$drivedb.error.raw: *** BAD signature or outdated key ***"
+ drivedb_error ": *** BAD signature or outdated key ***"
fi
fi
# Get version
newver=`get_db_version "$drivedb.new"`
if [ -z "$newver" ]; then
- if [ -z "$force" ]; then
- mv_all "$drivedb" ".new" ".error"
- error "$drivedb.error: no VERSION information found ('--force' to ignore)"
- fi
+ test -n "$force" \
+ || drivedb_error ": no VERSION information found ('--force' to ignore)"
newver="?/?"
elif [ "${newver##*/}" = "?" ]; then
- if [ -z "$trunk" ]; then
- mv_all "$drivedb" ".new" ".error"
- error "$drivedb.error: VERSION information is incomplete ('--trunk' to ignore)"
- fi
+ test -n "$main" \
+ || drivedb_error ": VERSION information is incomplete ('--main' to ignore)"
fi
if [ "$smartctl" != "-" ]; then
# Check syntax
- if ! "$smartctl" -B "$drivedb.new" -P showall >/dev/null; then
- mv_all "$drivedb" ".new" ".error"
- error "$drivedb.error: rejected by $smartctl, probably no longer compatible"
- fi
+ "$smartctl" -B "$drivedb.new" -P showall >/dev/null \
+ || drivedb_error ": rejected by $smartctl, probably no longer compatible"
vecho "$smartctl: syntax OK"
fi
# Always install if missing
rm -f "$drivedb.lastcheck"
if [ ! -f "$drivedb" ]; then
- mv_all "$drivedb" ".new" ""
+ drivedb_mv ".new" ""
iecho "$drivedb $newver newly installed${no_verify:+ (NOT VERIFIED)}"
exit 0
fi
# Keep old file if identical
if [ -n "$equal" ]; then
- if [ -f "$drivedb.new.raw.asc" ] \
- && ! cmp "$drivedb.new.raw.asc" "$drivedb.raw.asc" >/dev/null 2>&1; then
- mv -f "$drivedb.new.raw.asc" "$drivedb.raw.asc"
- iecho "$drivedb.raw.asc $newver updated"
+ if [ -f "$drivedb.new.asc" ] \
+ && ! cmp "$drivedb.new.asc" "$drivedb.asc" >/dev/null 2>&1; then
+ vrun mv -f "$drivedb.new.asc" "$drivedb.asc"
+ iecho "$drivedb.asc $newver updated"
fi
- rm -f "$drivedb.new" "$drivedb.new.raw" "$drivedb.new.raw.asc"
+ rm_f "$drivedb.new" "$drivedb.new.asc" "$drivedb.raw" "$drivedb.raw.asc"
touch "$drivedb.lastcheck"
iecho "$drivedb $newver is already up to date${no_verify:+ (NOT VERIFIED)}"
exit 0
@@ -913,12 +798,12 @@ test -n "$oldver" || oldver="?/?"
if [ "${newver##*/}" = "?" ] \
|| [ "${oldver##*/}" = "?" ] \
|| [ "${newver%/*}" != "${oldver%/*}" ]; then
- # Always install from trunk or other branch
+ # Always install if from main or other branch
updmsg="replaced with"
elif [ "${newver##*/}" -lt "${oldver##*/}" ]; then
# Install older file only if '--force' is used
if [ -z "$force" ]; then
- rm -f "$drivedb.new" "$drivedb.new.raw" "$drivedb.new.raw.asc"
+ rm_f "$drivedb.new" "$drivedb.new.asc"
iecho "$drivedb $oldver not downgraded to $newver ('--force' to override)"
exit 0
fi
@@ -927,6 +812,6 @@ else
updmsg="updated to"
fi
-mv_all "$drivedb" "" ".old"
-mv_all "$drivedb" ".new" ""
+drivedb_mv "" ".old"
+drivedb_mv ".new" ""
iecho "$drivedb $oldver $updmsg $newver${no_verify:+ (NOT VERIFIED)}"
Index: smartmontools-7.5/update-smart-drivedb.8.in
===================================================================
--- smartmontools-7.5.orig/update-smart-drivedb.8.in
+++ smartmontools-7.5/update-smart-drivedb.8.in
@@ -1,11 +1,9 @@
.ig
Copyright (C) 2013 Hannes von Haugwitz <hannes@vonhaugwitz.com>
-Copyright (C) 2014-23 Christian Franke
+Copyright (C) 2014-25 Christian Franke
SPDX-License-Identifier: GPL-2.0-or-later
-$Id: update-smart-drivedb.8.in 5605 2024-03-29 17:12:50Z chrfranke $
-
..
.\" Macros borrowed from pages generated with Pod::Man
.de Sp \" Vertical space (when we can't use .PP)
@@ -25,7 +23,7 @@ $Id: update-smart-drivedb.8.in 5605 2024
.\" Use groff extension \(aq (apostrophe quote, ASCII 0x27) if possible
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
-.TH UPDATE-SMART-DRIVEDB 8 "CURRENT_SVN_DATE" "CURRENT_SVN_VERSION" "SMART Monitoring Tools"
+.TH UPDATE-SMART-DRIVEDB 8 "@SMARTMONTOOLS_GIT_REV_DATE@" "smartmontools-@SMARTMONTOOLS_GIT_VER_DESC@" "SMART Monitoring Tools"
.SH NAME
update-smart-drivedb \- update smartmontools drive database
.Sp
@@ -40,17 +38,20 @@ update-smart-drivedb \- update smartmont
.\"! It does not contain info specific to other platforms.]
.\"! .PP
.\" %ENDIF NOT OS ALL
+.PP
+[NEW EXPERIMENTAL UPDATE-SMART-DRIVEDB 8.0 CHANGE]
+This tool has been considerably modified due to the move of smartmontools
+from SourceForge SVN to GitHub.
+.PP
.B update-smart-drivedb
updates
.B /usr/local/var/lib/smartmontools/drivedb.h
or
.I DESTFILE
-from branches/RELEASE_6_0_DRIVEDB of smartmontools SVN repository.
-.PP
+from branch 'drivedb/7.5' of smartmontools git repository.
The tools used for downloading are either
.BR curl (1),
.BR wget (1),
-.BR lynx (1),
.\" %IF OS FreeBSD
.BR fetch (1)
[FreeBSD only],
@@ -60,13 +61,13 @@ The tools used for downloading are eithe
[OpenBSD only],
.\" %ENDIF OS OpenBSD
or
-.BR svn (1).
+.BR lynx (1).
.PP
The downloaded file is verified with OpenPGP/GPG key ID 721042C5.
The public key block is included in the script.
.PP
-The old file is kept if the downloaded file is identical (ignoring
-the differences in Id string) otherwise it is moved to
+The old file is kept if the downloaded file is identical, otherwise it is
+moved to
.BR drivedb.h.old .
.PP
The old file is also kept if the downloaded file reports an older version
@@ -87,14 +88,14 @@ The default is
.B \-t [DIR/]TOOL, \-\-tool [DIR/]TOOL
Use TOOL for download.
TOOL is one of:
-.I curl wget lynx
+.I curl wget
.\" %IF OS FreeBSD
.I fetch
.\" %ENDIF OS FreeBSD
.\" %IF OS OpenBSD
.I ftp
.\" %ENDIF OS OpenBSD
-.IR svn .
+.IR lynx .
The default is the first one found in PATH.
If a DIR is also specified, the plain TOOL name must begin with any of the
above names.
@@ -104,31 +105,25 @@ Use URL of LOCATION for download.
LOCATION is one of:
.br
.I github
-(GitHub mirror of SVN repository),
-.br
-.I sf
-(Sourceforge code browser),
+(upstream git repository),
.br
.I svn
-(SVN repository),
-.br
-.I svni
-(SVN repository via HTTP instead of HTTPS),
+(previous SVN repository),
.br
.I trac
(Trac code browser).
.br
The default is
-.IR svn .
+.IR github .
.TP
.B \-\-url URL
Download from URL.
-A valid OpenPGP/GPG signature with \*(Aq.raw.asc\*(Aq extension must also
+A valid OpenPGP/GPG signature with \*(Aq[.raw].asc\*(Aq extension must also
exist unless \*(Aq\-\-no\-verify\*(Aq is also specified.
.TP
.B \-\-file FILE
Copy from local FILE.
-A valid OpenPGP/GPG signature \*(AqFILE.raw.asc\*(Aq must also exist
+A valid OpenPGP/GPG signature \*(AqFILE[.raw].asc\*(Aq must also exist
unless \*(Aq\-\-no\-verify\*(Aq is also specified.
.\" %IF ENABLE_DB_INSTALL
.TP
@@ -139,15 +134,12 @@ This is the same as:
\*(Aq\-\-no\-verify \-\-file /usr/local/share/smartmontools/drivedb.h\*(Aq
.\" %ENDIF ENABLE_DB_INSTALL
.TP
-.B \-\-trunk
-Download from SVN trunk.
-This requires \*(Aq\-\-no\-verify\*(Aq because the trunk versions are not
-signed.
+.B \-\-main
+Download from main branch.
+This requires \*(Aq\-\-no\-verify\*(Aq because these versions are not signed.
.TP
.B \-\-branch X.Y
-Download from branches/RELEASE_\fBX\fP_\fBY\fP_DRIVEDB.
-This also selects the OpenPGP/GPG key for older branches
-(5.40 to 6.6: Key ID DFD22559).
+Download from branch X.Y.
.TP
.B \-\-cacert FILE
Use CA certificates from FILE to verify the peer.
@@ -157,8 +149,6 @@ Use CA certificate files from DIR to ver
.TP
.B \-\-insecure
Don't abort download if certificate verification fails.
-This option is also required if a HTTP URL is selected with \*(Aq\-u\*(Aq
-option.
.TP
.B \-\-no\-verify
Don't verify signature with GnuPG.
@@ -187,20 +177,20 @@ Print help text.
Regular update:
.Vb 2
# update-smart-drivedb
-/usr/local/var/lib/smartmontools/drivedb.h 7.2/5225 updated to 7.2/5237
+/usr/local/var/lib/smartmontools/drivedb.h 7.5/5701 updated to 7.5/5706
.Ve
.PP
Revert to previous version:
.Vb 2
# update-smart-drivedb --force \e
--file /usr/local/var/lib/smartmontools/drivedb.h.old
-/usr/local/var/lib/smartmontools/drivedb.h 7.2/5237 downgraded to 7.2/5225
+/usr/local/var/lib/smartmontools/drivedb.h 7.5/5706 downgraded to 7.5/5701
.Ve
.PP
-Download the database from SVN trunk to current directory:
+Download the database from main branch to current directory:
.Vb 2
-$ update-smart-drivedb --trunk --no-verify -s - -u trac drivedb-trunk.h
-drivedb-trunk.h 7.3/5254 newly installed (NOT VERIFIED)
+$ update-smart-drivedb --main --no-verify -s - -u trac drivedb-main.h
+drivedb-main.h 7.5/? newly installed (NOT VERIFIED)
.Ve
.Sp
.SH "EXIT STATUS"
@@ -224,20 +214,20 @@ originally installed drive database.
.B /usr/local/var/lib/smartmontools/drivedb.h
current drive database.
.TP
-.B /usr/local/var/lib/smartmontools/drivedb.h.raw
-current drive database with unexpanded SVN Id string.
-.TP
-.B /usr/local/var/lib/smartmontools/drivedb.h.raw.asc
+.B /usr/local/var/lib/smartmontools/drivedb.h.asc
signature file.
.TP
-.B /usr/local/var/lib/smartmontools/drivedb.h.*old*
+.B /usr/local/var/lib/smartmontools/drivedb.h.old[.asc]
previous files.
.TP
-.B /usr/local/var/lib/smartmontools/drivedb.h.*error*
+.B /usr/local/var/lib/smartmontools/drivedb.h.error[.asc]
new files if rejected due to errors.
.TP
.B /usr/local/var/lib/smartmontools/drivedb.h.lastcheck
empty file created if downloaded file was identical.
+.TP
+.B /usr/local/var/lib/smartmontools/drivedb.h.raw[.asc]
+no longer used and removed if still present.
.Sp
.SH AUTHORS
\fBChristian Franke\fP.
@@ -258,6 +248,4 @@ Alternatively send the info to the smart
\fBsmartctl\fP(8), \fBsmartd\fP(8).
.Sp
.SH PACKAGE VERSION
-CURRENT_SVN_VERSION CURRENT_SVN_DATE CURRENT_SVN_REV
-.br
-$Id: update-smart-drivedb.8.in 5605 2024-03-29 17:12:50Z chrfranke $
+smartmontools-@SMARTMONTOOLS_GIT_VER_DESC@ @SMARTMONTOOLS_GIT_REV_DATE@ @SMARTMONTOOLS_GIT_REV@