scripts/run-regression-tests: Add support for distro kernels

A few examples of how to run the regression tests against a distro kernel:

scripts/run-regression-tests -l 4.18.0-147.5.1.el8_1^CentOS^8.1.1911-nc
scripts/run-regression-tests -l 4.18.0-80.11.2.el8_0^CentOS^8.0.1905-nc
scripts/run-regression-tests -l 3.10.0-1127.el7^CentOS^7.8.2003-nc
scripts/run-regression-tests -l 3.10.0-1062.18.1.el7^CentOS^7.7.1908-nc
scripts/run-regression-tests -l 3.10.0-957.27.2.el7^CentOS^7.6.1810-nc
scripts/run-regression-tests -l 3.10.0-862.14.4.el7^CentOS^7.5.1804-nc



git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@8885 d57e44dd-8a1f-0410-8b47-8ef2f437770f
This commit is contained in:
Bart Van Assche
2020-05-09 22:54:47 +00:00
parent b3b658bd09
commit 6773f8e9a5
7 changed files with 91 additions and 29 deletions
+39 -4
View File
@@ -2,6 +2,9 @@
# Shell functions for parsing the Linux kernel version and for downloading
# from kernel.org.
# shellcheck source=./rhel-rpm-functions
source "$(dirname "$0")/../scripts/rhel-rpm-functions" || return $?
kernel_mirror="http://cdn.kernel.org/pub/linux/kernel"
kernel_downloads="$HOME/software/downloads"
kernel_tree="$HOME/software/linux-kernel"
@@ -435,10 +438,37 @@ EOF
done
}
function download_and_extract_distro_rpm {
[ -n "$1" ] || return $?
local arr
readarray -d ^ -t arr <<<"$1^^^^"
local kver=${arr[0]}
local distro=${arr[1]}
local release=${arr[2]}
(
cd "${kernel_downloads}" || exit $?
urls=($(get_srpm_urls "$distro" "$release" x86_64))
for url in "${urls[@]}"; do
wget -q -nc "${url}/kernel-${kver}.src.rpm" && break
done
)
local tmpdir=kernel-tree-tmp-$$
rm -rf "linux-$1" "${tmpdir}"
mkdir "${tmpdir}" || return $?
(
cd "${tmpdir}" &&
rpm2cpio "${kernel_downloads}/kernel-${kver}.src.rpm" |
cpio -i --make-directories --quiet &&
tar xaf linux-${kver}.tar.* &&
mv "linux-${kver}" ".." &&
cd "../linux-${kver}"
) || return $?
rm -rf "${tmpdir}"
}
function download_and_extract_kernel_tree {
if [ -e "${kernel_tree}" ]; then
rm -rf "linux-$1"
mkdir "linux-$1"
{ [ "${1/^}" = "$1" ] &&
(
cd "${kernel_tree}" &&
{
@@ -450,12 +480,17 @@ function download_and_extract_kernel_tree {
git fetch stable
}
} &&
{ git tag -l "v$1" | grep -q '^v'; } &&
git archive "v$1"
) | tar -C "linux-$1" -xf-
) | {
rm -rf "linux-$1" &&
mkdir "linux-$1" &&
tar -C "linux-$1" -xf- 2>/dev/null
}; } || download_and_extract_distro_rpm "$1"
else
download_kernel "$1" && extract_kernel_tree "$1"
fi &&
(cd "linux-$1" && patch_kernel "$1")
(cd "linux-${1/^*}" && patch_kernel "${1/^*}")
}
# For shellcheck