@@ -7,14 +7,6 @@ if [ "${VERBOSE:-0}" -ge 2 ] || [ "${DEBUG:-0}" -eq 1 ]; then
77 set -x
88fi
99
10- localdir=" $( dirname " $( readlink -f " $0 " ) " ) "
11- releasever=" $1 "
12- # Set to 1 to include rc srpm
13- rc=" $2 "
14-
15- kernelver=" $( cat " $localdir /version" ) "
16- kernelsrc=" linux-$kernelver "
17-
1810exit_clean () {
1911 local exit_code=$?
2012 rm -rf " $tmpdir "
@@ -25,26 +17,86 @@ errecho() {
2517 >&2 echo " $@ "
2618}
2719
28- # example of releasever: '29' or 'rawhide'
29- if [ " x$releasever " != " x" ]; then
30- if [[ ! " $releasever " =~ ^[1-9][0-9]$ ]] && [ " $releasever " != " rawhide" ]; then
31- errecho " Invalid release format"
32- exit 1
33- fi
34- elif [ " x$releasever " == " x" ]; then
35- listver=" $( curl -s -L https://dl.fedoraproject.org/pub/fedora/linux/releases 2> /dev/null) "
36- releasever=" $( echo " $listver " | sed -e ' s/<[^>]*>//g' | awk ' {print $1}' | grep -o " [1-9][0-9]" | tail -1) "
37- if ! [[ " $releasever " =~ ^[1-9][0-9]$ ]]; then
38- errecho " An error occurred while trying to determine latest Fedora version"
39- exit 1
20+ usage () {
21+ errecho " Usage: $0 [OPTIONS]... []
22+
23+ This script is used for fetching latest Fedora kernel config for the current
24+ kernel version used by Qubes.
25+
26+ Options:
27+ --releasever <Fedora RELEASEVER> Fedora release version to use. Default is latest.
28+ --include-testing Include testing updates repository
29+ --include-rc Include release candidate kernels
30+
31+ Remark:
32+ Ensure to have downloaded kernel sources in local directory (make get-sources).
33+ "
34+ exit 1
35+ }
36+
37+ get_releasever () {
38+ releasever=" $1 "
39+ # example of releasever: '29' or 'rawhide'
40+ if [ " x$releasever " != " x" ]; then
41+ if [[ ! " $releasever " =~ ^[1-9][0-9]$ ]] && [ " $releasever " != " rawhide" ]; then
42+ errecho " Invalid release format"
43+ exit 1
44+ fi
45+ elif [ " x$releasever " == " x" ]; then
46+ listver=" $( curl -s -L https://dl.fedoraproject.org/pub/fedora/linux/releases 2> /dev/null) "
47+ releasever=" $( echo " $listver " | sed -e ' s/<[^>]*>//g' | awk ' {print $1}' | grep -o " [1-9][0-9]" | tail -1) "
48+ if ! [[ " $releasever " =~ ^[1-9][0-9]$ ]]; then
49+ errecho " An error occurred while trying to determine latest Fedora version"
50+ exit 1
51+ fi
4052 fi
53+ echo " $releasever "
54+ }
55+
56+ localdir=" $( dirname " $( readlink -f " $0 " ) " ) "
57+ kernelver=" $( cat " $localdir /version" ) "
58+ kernelsrc=" linux-$kernelver "
59+
60+ if ! OPTS=$( getopt -o hv:t:r: --long help,releasever:,include-testing,include-rc -n " $0 " -- " $@ " ) ; then
61+ errecho " An error occurred while parsing options."
62+ exit 1
63+ fi
64+
65+ eval set -- " $OPTS "
66+
67+ while [[ $# -gt 0 ]]; do
68+ case " $1 " in
69+ -a | --releasever ) releasever=" $2 " ; shift ;;
70+ -m | --include-testing ) ktesting=" 1" ; shift ;;
71+ -i | --include-rc ) krc=" 1" ; shift ;;
72+ -h | --help) usage ;;
73+ esac
74+ shift
75+ done
76+
77+ if [ ! -e " $localdir /$kernelsrc .tar.xz" ]; then
78+ errecho " Cannot find $kernelsrc .tar.xz in local directory."
79+ exit 1
4180fi
4281
82+ releasever=$( get_releasever " $releasever " )
83+
4384# get the latest kernel rpm
44- latestver=$( dnf -q repoquery kernel-core --disablerepo=* --enablerepo=fedora --enablerepo=updates --releasever=" $releasever " )
45- if [ " $rc " != " 1" ]; then
85+ repo_opts=" --disablerepo=* --enablerepo=fedora --enablerepo=updates --releasever=$releasever "
86+
87+ # include testing
88+ if [ " $ktesting " == " 1" ]; then
89+ repo_opts=" $repo_opts --enablerepo=updates-testing"
90+ fi
91+
92+ # shellcheck disable=SC2086
93+ latestver=$( dnf -q repoquery kernel-core $repo_opts )
94+
95+ # include rc
96+ if [ " $krc " != " 1" ]; then
4697latestver=$( echo " $latestver " | grep -v " rc[0-9]*" )
4798fi
99+
48100latestver=$( echo " $latestver " | sort -V | tail -1 | cut -d ' :' -f2)
49101latestrpm=" kernel-core-$latestver .rpm"
50102
@@ -58,7 +110,8 @@ if [ "x$latestrpm" != "x" ] && [ "x$releasever" != "x" ]; then
58110 trap ' exit_clean' 0 1 2 3 6 15
59111 tmpdir=" $( mktemp -d -p " $localdir " ) "
60112 # download latest kernel rpm
61- dnf -q download kernel-core --disablerepo=* --enablerepo=fedora --enablerepo=updates --releasever=" $releasever "
113+ # shellcheck disable=SC2086
114+ dnf -q download kernel-core $repo_opts
62115 mv " $latestrpm " " $tmpdir /$latestrpm .untrusted"
63116
64117 # check signature
0 commit comments