@@ -7,14 +7,6 @@ if [ "${VERBOSE:-0}" -ge 2 ] || [ "${DEBUG:-0}" -eq 1 ]; then
7
7
set -x
8
8
fi
9
9
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
-
18
10
exit_clean () {
19
11
local exit_code=$?
20
12
rm -rf " $tmpdir "
@@ -25,26 +17,86 @@ errecho() {
25
17
>&2 echo " $@ "
26
18
}
27
19
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
40
52
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
41
80
fi
42
81
82
+ releasever=$( get_releasever " $releasever " )
83
+
43
84
# 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
46
97
latestver=$( echo " $latestver " | grep -v " rc[0-9]*" )
47
98
fi
99
+
48
100
latestver=$( echo " $latestver " | sort -V | tail -1 | cut -d ' :' -f2)
49
101
latestrpm=" kernel-core-$latestver .rpm"
50
102
@@ -58,7 +110,8 @@ if [ "x$latestrpm" != "x" ] && [ "x$releasever" != "x" ]; then
58
110
trap ' exit_clean' 0 1 2 3 6 15
59
111
tmpdir=" $( mktemp -d -p " $localdir " ) "
60
112
# 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
62
115
mv " $latestrpm " " $tmpdir /$latestrpm .untrusted"
63
116
64
117
# check signature
0 commit comments