diff --git a/0001-skip-kernel-buildin-modules.patch b/0001-skip-kernel-buildin-modules.patch new file mode 100644 index 0000000..c7d07f5 --- /dev/null +++ b/0001-skip-kernel-buildin-modules.patch @@ -0,0 +1,47 @@ +From df5e18b8d7c8359b48bc133bfa29734934d18160 Mon Sep 17 00:00:00 2001 +From: Johannes Meixner +Date: Mon, 10 Aug 2020 16:20:38 +0200 +Subject: [PATCH] Merge pull request #2469 from + rear/skip-kernel-builtin-modules-issue2414 + +In 400_copy_modules.sh skip copying kernel modules that are builtin modules. +The new behaviour is that when modules are listed in modules.builtin +and are also shown by modinfo then those modules are now skipped. +Before for such modules the modules file(s) would have been included +in the recovery system. +See https://github.com/rear/rear/issues/2414 +--- + usr/share/rear/build/GNU/Linux/400_copy_modules.sh | 12 ++++++++++-- + 1 file changed, 10 insertions(+), 2 deletions(-) + +diff --git a/usr/share/rear/build/GNU/Linux/400_copy_modules.sh b/usr/share/rear/build/GNU/Linux/400_copy_modules.sh +index d8d733d2..641b7f83 100644 +--- a/usr/share/rear/build/GNU/Linux/400_copy_modules.sh ++++ b/usr/share/rear/build/GNU/Linux/400_copy_modules.sh +@@ -133,8 +133,13 @@ for dummy in "once" ; do + module=${module#.o} + # Strip trailing ".ko" if there: + module=${module#.ko} +- # Continue with the next module if the current one does not exist: ++ # Continue with the next module if the current one does not exist as a module file: + modinfo $module 1>/dev/null || continue ++ # Continue with the next module if the current one is a kernel builtin module ++ # cf. https://github.com/rear/rear/issues/2414#issuecomment-668632798 ++ # Quoting the grep search value is mandatory here ($module might be empty or blank), ++ # cf. "Beware of the emptiness" in https://github.com/rear/rear/wiki/Coding-Style ++ grep -q "$( echo $module | tr '_-' '..' )" /lib/modules/$KERNEL_VERSION/modules.builtin && continue + # Resolve module dependencies: + # Get the module file plus the module files of other needed modules. + # This is currently only a "best effort" attempt because +@@ -166,7 +171,10 @@ done + + # Remove those modules that are specified in the EXCLUDE_MODULES array: + for exclude_module in "${EXCLUDE_MODULES[@]}" ; do +- # Continue with the next module if the current one does not exist: ++ # Continue with the next module only if the current one does not exist as a module file ++ # but do not continue with the next module if the current one is a kernel builtin module ++ # so when a module file exists that gets removed regardless if it is also a builtin module ++ # cf. https://github.com/rear/rear/issues/2414#issuecomment-669115481 + modinfo $exclude_module 1>/dev/null || continue + # In this case it is ignored when a module exists but 'modinfo -F filename' cannot show its filename + # because then it is assumed that also no module file had been copied above: diff --git a/rear.spec b/rear.spec index c07e2f9..6f24bc8 100644 --- a/rear.spec +++ b/rear.spec @@ -3,13 +3,15 @@ Name: rear Version: 2.6 -Release: 1%{?dist} +Release: 2%{?dist} Summary: Relax-and-Recover is a Linux disaster recovery and system migration tool URL: http://relax-and-recover.org/ License: GPLv3 # as GitHub stopped with download section we need to go back to Sourceforge for downloads Source0: https://sourceforge.net/projects/rear/files/rear/%{version}/rear-%{version}.tar.gz +# Skip buildin modules, RHBZ#1831311 +Patch0: 0001-skip-kernel-buildin-modules.patch # rear contains only bash scripts plus documentation so that on first glance it could be "BuildArch: noarch" # but actually it is not "noarch" because it only works on those architectures that are explicitly supported. @@ -117,6 +119,9 @@ fi #-- CHANGELOG -----------------------------------------------------------------# %changelog +* Tue Sep 22 2020 Christopher Engelhard - 2.6-2 +- Backport upstream PR#2469 to fix RHBZ #1831311 + * Tue Sep 22 2020 Christopher Engelhard - 2.6-1 - Update to 2.6 - Streamline & clean up spec file