Skip to content

Commit

Permalink
kpatch-build: simplify distro support
Browse files Browse the repository at this point in the history
Rather than adding yet another set of conditionals to handle the Anolis
OS distribution, refactor the SUPPORTED_DISTROS code using an
associative array.  The array is keyed by the short distro name, and
contains the longer distribution description.

Signed-off-by: Wardenjohn<[email protected]>
  • Loading branch information
zhangyongde.zyd committed Jan 17, 2024
1 parent 8513926 commit 89c494f
Showing 1 changed file with 39 additions and 13 deletions.
52 changes: 39 additions & 13 deletions kpatch-build/kpatch-build
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,20 @@ LLD="${CROSS_COMPILE:-}ld.lld"
READELF="${CROSS_COMPILE:-}readelf"
OBJCOPY="${CROSS_COMPILE:-}objcopy"


declare -rA SUPPORTED_DEB_DISTROS=(
["debian"]="Debian OS"
["ubuntu"]="Ubuntu OS")

declare -rA SUPPORTED_RPM_DISTROS=(
["centos"]="CentOS"
["fedora"]="Fedora"
["openEuler"]="OpenEuler"
["ol"]="Oracle"
["photon"]="Photon OS"
["rhel"]="RHEL")


warn() {
echo "ERROR: $1" >&2
}
Expand Down Expand Up @@ -649,6 +663,25 @@ module_name_string() {
echo "${1//[^a-zA-Z0-9_-]/-}" | cut -c 1-55
}

is_supported_deb_distro(){
[[ -n "${SUPPORTED_DEB_DISTROS[$1]:-}" ]]
}

is_supported_rpm_distro(){
[[ -n "${SUPPORTED_RPM_DISTROS[$1]:-}" ]]
}

print_supported_distro(){
if is_supported_deb_distro "$DISTRO"; then
echo "${SUPPORTED_DEB_DISTROS[$DISTRO]} distribution detected"
elif is_supported_rpm_distro "$DISTRO"; then
echo "${SUPPORTED_RPM_DISTROS[$DISTRO]} distribution detected"
else
echo "$DISTRO is not supported"
fi
}


usage() {
echo "usage: $(basename "$0") [options] <patch1 ... patchN>" >&2
echo " patchN Input patchfile(s)" >&2
Expand Down Expand Up @@ -865,16 +898,14 @@ fi

[[ -z "$TARGETS" ]] && TARGETS="vmlinux modules"

if [[ "$DISTRO" = fedora ]] || [[ "$DISTRO" = rhel ]] || [[ "$DISTRO" = ol ]] ||
[[ "$DISTRO" = centos ]] || [[ "$DISTRO" = openEuler ]] ||
[[ "$DISTRO" = photon ]]; then
if is_supported_rpm_distro "$DISTRO"; then

[[ -z "$VMLINUX" ]] && VMLINUX="/usr/lib/debug/lib/modules/$ARCHVERSION/vmlinux"
[[ -e "$VMLINUX" ]] || die "kernel-debuginfo-$ARCHVERSION not installed"

export PATH="/usr/lib64/ccache:$PATH"

elif [[ "$DISTRO" = ubuntu ]] || [[ "$DISTRO" = debian ]]; then
elif is_supported_deb_distro "$DISTRO"; then
[[ -z "$VMLINUX" ]] && VMLINUX="/usr/lib/debug/boot/vmlinux-$ARCHVERSION"

if [[ "$DISTRO" = ubuntu ]]; then
Expand Down Expand Up @@ -906,14 +937,9 @@ elif [[ -e "$KERNEL_SRCDIR"/.config ]] && [[ -e "$VERSIONFILE" ]] && [[ "$(cat "
echo "Using cache at $KERNEL_SRCDIR"

else
if [[ "$DISTRO" = fedora ]] || [[ "$DISTRO" = rhel ]] || [[ "$DISTRO" = ol ]] || [[ "$DISTRO" = centos ]] || [[ "$DISTRO" = openEuler ]] || [[ "$DISTRO" = photon ]]; then
if is_supported_rpm_distro "$DISTRO"; then

[[ "$DISTRO" = fedora ]] && echo "Fedora distribution detected"
[[ "$DISTRO" = rhel ]] && echo "RHEL distribution detected"
[[ "$DISTRO" = ol ]] && echo "Oracle Linux distribution detected"
[[ "$DISTRO" = centos ]] && echo "CentOS distribution detected"
[[ "$DISTRO" = openEuler ]] && echo "OpenEuler distribution detected"
[[ "$DISTRO" = photon ]] && echo "Photon OS distribution detected"
print_supported_distro "$DISTRO"

clean_cache

Expand Down Expand Up @@ -1009,9 +1035,9 @@ else

(cd "$KERNEL_SRCDIR" && make mrproper 2>&1 | logger) || die

elif [[ "$DISTRO" = ubuntu ]] || [[ "$DISTRO" = debian ]]; then
elif is_supported_deb_distro "$DISTRO"; then

echo "Debian/Ubuntu distribution detected"
print_supported_distro "$DISTRO"

if [[ "$DISTRO" = ubuntu ]]; then

Expand Down

0 comments on commit 89c494f

Please sign in to comment.