Skip to content

Commit

Permalink
Support Anolis OS in a more elegant way
Browse files Browse the repository at this point in the history
This is a combination of 2 commits.
This is the 1st commit message:

Support Anolis OS in a more elegant way

There are many different distribution of linux kernel.
However, it may not be good to support one new distribution
just by adding a judgment condition. Therefore, I move it into
a function. In the future, if a new distribution need to be supported,
it may be more elegant.

This is the commit message #2:

fix the bug of wrong shell condition and contains more distro

This commit fix the fowlling problem:
1. move SUPPORTED_DISTRO to SUPPORTED_RPM_DISTROS
2. fix the wrong ID of "Anolis" to "anolis" in SUPPORTED_RPM_DISTROS
3. change distro in function to local variable
4. rename is_supported_distro to is_supported_rpm_distro; print_supported_distro
to print_supported_rpm_distro
5. fix the bug of return value of is_supported_rpm_distro
6. contains ubuntu and debian release in print_supported_rpm_distro, and adjust the vmlinux search logic at the same time.
  • Loading branch information
Wardenjohn committed Dec 13, 2023
1 parent 8513926 commit 3fdda35
Showing 1 changed file with 48 additions and 23 deletions.
71 changes: 48 additions & 23 deletions kpatch-build/kpatch-build
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,17 @@ LLD="${CROSS_COMPILE:-}ld.lld"
READELF="${CROSS_COMPILE:-}readelf"
OBJCOPY="${CROSS_COMPILE:-}objcopy"

SUPPORTED_RPM_DISTROS="
fedora
rhel
centos
openEuler
photon
anolis
ubuntu
debian
"

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

is_supported_rpm_distro(){
local distro=$1
for each_distro in ${SUPPORTED_RPM_DISTROS}; do
if [[ $distro = "$each_distro" ]]; then
return 0
fi
done
return 1
}

print_supported_rpm_distro(){
[[ "$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"
[[ "$DISTRO" = anolis ]] && echo "Anolis OS distribution detected"
[[ "$DISTRO" = ubuntu ]] && echo "Ubuntu OS distribution detected"
[[ "$DISTRO" = debian ]] && echo "Debian OS distribution detected"
}

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

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

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

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

export PATH="/usr/lib64/ccache:$PATH"
if [[ "$DISTRO" = ubuntu ]] || [[ "$DISTRO" = debian ]]; then
[[ -z "$VMLINUX" ]] && VMLINUX="/usr/lib/debug/boot/vmlinux-$ARCHVERSION"

elif [[ "$DISTRO" = ubuntu ]] || [[ "$DISTRO" = debian ]]; then
[[ -z "$VMLINUX" ]] && VMLINUX="/usr/lib/debug/boot/vmlinux-$ARCHVERSION"
if [[ "$DISTRO" = ubuntu ]]; then
[[ -e "$VMLINUX" ]] || die "linux-image-$ARCHVERSION-dbgsym not installed"

if [[ "$DISTRO" = ubuntu ]]; then
[[ -e "$VMLINUX" ]] || die "linux-image-$ARCHVERSION-dbgsym not installed"
elif [[ "$DISTRO" = debian ]]; then
[[ -e "$VMLINUX" ]] || die "linux-image-$ARCHVERSION-dbg not installed"
fi
else
[[ -z "$VMLINUX" ]] && VMLINUX="/usr/lib/debug/lib/modules/$ARCHVERSION/vmlinux"
[[ -e "$VMLINUX" ]] || die "kernel-debuginfo-$ARCHVERSION not installed"

elif [[ "$DISTRO" = debian ]]; then
[[ -e "$VMLINUX" ]] || die "linux-image-$ARCHVERSION-dbg not installed"
export PATH="/usr/lib64/ccache:$PATH"
fi

export PATH="/usr/lib/ccache:$PATH"
fi
save_env

Expand All @@ -906,14 +936,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

[[ "$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"
if is_supported_rpm_distro "$DISTRO"; then

print_supported_rpm_distro "$DISTRO"

clean_cache

Expand Down

0 comments on commit 3fdda35

Please sign in to comment.