From b758f5b5ffdb33c99d34d89c9a5c5206a6475876 Mon Sep 17 00:00:00 2001 From: basebuilder_pel7x64builder0 Date: Tue, 27 Nov 2018 14:35:36 +0100 Subject: [PATCH] kmod package update Signed-off-by: basebuilder_pel7x64builder0 --- SOURCES/weak-modules | 74 +++++++++++++++++++++++++------------------- SPECS/kmod.spec | 49 ++++++++++++++++------------- 2 files changed, 70 insertions(+), 53 deletions(-) diff --git a/SOURCES/weak-modules b/SOURCES/weak-modules index 807e9cde..9cb6d2fd 100644 --- a/SOURCES/weak-modules +++ b/SOURCES/weak-modules @@ -162,7 +162,7 @@ decompress_initramfs() { # initramfs. The current directory must be the root of the uncompressed # initramfs. The unsorted list of files is output to stdout. list_module_files() { - find . -iname \*.ko 2>/dev/null + find . -iname \*.ko -o -iname '*.ko.xz' -o -iname '*.ko.gz' 2>/dev/null find etc/modprobe.d usr/lib/modprobe.d -name \*.conf 2>/dev/null } @@ -280,8 +280,11 @@ EOF module_has_changed() { declare module=$1 krel=$2 + declare orig_module=$module module=${module%.ko} + [[ $module == $orig_module ]] && module=${module%.ko.xz} + [[ $module == $orig_module ]] && module=${module%.ko.gz} module=${module##*/} eval "changed_modules_${krel//[^a-zA-Z0-9]/_}=$krel" @@ -378,7 +381,9 @@ find_modules() { local dirs="$*" for dir in $dirs; do - find $BASEDIR/lib/modules/$krel/$dir -name '*.ko' 2>/dev/null + find $BASEDIR/lib/modules/$krel/$dir \ + -name '*.ko' -o -name '*.ko.xz' -o -name '*.ko.gz' \ + 2>/dev/null done } @@ -389,7 +394,8 @@ find_modules_dirs() { local dirs="$*" for dir in $dirs; do - find $dir -name '*.ko' 2>/dev/null + find $dir -name '*.ko' -o -name '*.ko.xz' -o -name '*.ko.gz' \ + 2>/dev/null done } @@ -426,26 +432,24 @@ remove_weak_link_quiet() { rmdir --parents --ignore-fail-on-non-empty "$(dirname "${subpath#/}")" 2>/dev/null ) } -# prepare_for_dry_run: +# prepare_sandbox: # Takes kernel release, creates temporary weak-modules directory for it # and depmod config to operate on it. # Sets the global state accordingly -prepare_for_dry_run() { +prepare_sandbox() { local krel="$1" local orig_dir local dir local conf="$tmpdir/depmod.conf" - [[ -z "$dry_run" ]] && return - #directory orig_dir=$(weak_updates_dir $krel) dir="$tmpdir/$krel/weak-updates" mkdir -p "$dir" # the orig_dir can be empty - cp -R "$orig_dir/*" "$dir" 2>/dev/null + cp -R "$orig_dir"/* "$dir" 2>/dev/null weak_updates_dir_override="$dir" @@ -457,11 +461,25 @@ prepare_for_dry_run() { } -# finish_dry_run: -# restore global state after dry_run changes -finish_dry_run() { +# finish_sandbox: +# restore global state after sandboxing +# copy configuration to the kernel directory if not dry run +finish_sandbox() { + local krel="$1" + local override="$weak_updates_dir_override" + local wa_dir + weak_updates_dir_override="" depmod="$depmod_orig" + + [[ -n "$dry_run" ]] && return + + wa_dir="$(weak_updates_dir $krel)" + + rm -rf "$wa_dir" + mkdir -p "$wa_dir" + + cp -R "${override}"/* "$wa_dir" 2>/dev/null } @@ -482,30 +500,23 @@ finish_dry_run() { update_modules_for_krel() { local krel="$1" local func="$2" - local do_fallback="$3" + local force_update="$3" [[ -r "$BASEDIR/boot/symvers-$krel.gz" ]] || return - prepare_for_dry_run $krel + prepare_sandbox $krel global_link_state_save $krel - $func $krel - if ! validate_weak_links $krel && [[ -n "$do_fallback" ]]; then - global_link_state_restore $krel - finish_dry_run + $func $krel - return; + if ! validate_weak_links $krel && [[ -z "$force_update" ]]; then + global_link_state_restore $krel fi global_link_state_announce_changes $krel - if [[ -n "$dry_run" ]]; then - pr_verbose "Dry run: restoring configuration" - global_link_state_restore $krel - fi - - finish_dry_run + finish_sandbox $krel } # update_modules: @@ -516,14 +527,14 @@ update_modules_for_krel() { # Triggers initrd rebuild for the kernels, which modules are installed. update_modules() { local func="$1" - local do_fallback="$2" + local force_update="$2" local module_krel read_modules_list || exit 1 [[ ${#modules[@]} -gt 0 ]] || return for krel in $(find_installed_kernels); do - update_modules_for_krel $krel $func $do_fallback + update_modules_for_krel $krel $func $force_update done for module in "${modules[@]}"; do @@ -778,22 +789,21 @@ global_link_state_announce_changes() { # to the current requirements RPM will track existing of only one version # of extra/ module (no same extra/ modules for different kernels). remove_modules() { - local no_fallback="" - - update_modules remove_weak_links $no_fallback + update_modules remove_weak_links force_update } # add_modules: # Read in a list of modules from stdinput and process them for compatibility # with installed kernels under /lib/modules. add_modules() { - update_modules add_weak_links do_fallback + no_force_update="" + + update_modules add_weak_links $no_force_update } add_kernel() { local krel=${1:-$(uname -r)} local tmp - local no_fallback="" tmp=$(mktemp -p $tmpdir) @@ -812,7 +822,7 @@ add_kernel() { read_modules_list < $tmp rm -f $tmp - update_modules_for_krel $krel add_weak_links $no_fallback + update_modules_for_krel $krel add_weak_links force_update } remove_kernel() { diff --git a/SPECS/kmod.spec b/SPECS/kmod.spec index 8cd9c87c..f665c694 100644 --- a/SPECS/kmod.spec +++ b/SPECS/kmod.spec @@ -1,6 +1,6 @@ Name: kmod Version: 20 -Release: 15%{?dist}.7 +Release: 23%{?dist} Summary: Linux kernel module management utilities Group: System Environment/Kernel @@ -138,36 +138,43 @@ install -m 0644 %{SOURCE2} $RPM_BUILD_ROOT%{_sysconfdir}/depmod.d/dist.conf %{_libdir}/libkmod.so %changelog -* Wed Dec 13 2017 Yauheni Kaliuta - 20-15.el7_4.7 -- depmod: module_is_higher_priority: fix modname length calculation. - Resolves: rhbz#1525364. +* Tue Aug 28 2018 Yauheni Kaliuta - 20-23 +- weak-modules: fix initial state creation for dry-run +- weak-modules: check compatibility in a temporary directory + Resolves: rhbz#1619889. + +* Thu Jun 21 2018 Yauheni Kaliuta - 20-22 +- weak-modules: add compressed modules support. + Resolves: rhbz#1593448 -* Thu Nov 16 2017 Yauheni Kaliuta - 20-15.el7_4.6 -- Backport external directories support. - Related: rhbz#1511943. +* Fri Dec 8 2017 Yauheni Kaliuta - 20-21 +- depmod: module_is_higher_priority: fix modname length calculation. + Resolves: rhbz#1522994 -* Fri Nov 10 2017 Yauheni Kaliuta - 20-15.el7_4.5 +* Thu Nov 9 2017 Yauheni Kaliuta - 20-20 - weak-modules: use function to generate weak_updates_dir - weak-modules: implement dry-run on the tempdir - Resolves: rhbz#1511943. + Resolves: rhbz#1510058 -* Fri Sep 15 2017 Yauheni Kaliuta - 20-15.el7_4.4 -- bump up version for internal reasons. - Related: rhbz#1489696. +* Thu Sep 14 2017 Yauheni Kaliuta - 20-19 +- weak-modules: fix dry-run for non-lib-modules installation + Resolves: rhbz#1477073 -* Thu Sep 14 2017 Yauheni Kaliuta - 20-15.el7_4.3 -- weak-modules: implement dry run by symlink restoration. -- weak-modules: fix dry-run for non-lib-modules installation. - Resolves: rhbz#1489696. +* Thu Aug 17 2017 Yauheni Kaliuta - 20-18 +- depmod: external directories support. + Resolves: rhbz#1361857 +- BuildRequires automake autoconf libtool. -* Thu Aug 17 2017 Yauheni Kaliuta - 20-15.el7_4.2 +* Mon Aug 7 2017 Yauheni Kaliuta - 20-17 - libkmod-elf: resolve CRC if module is built with MODULE_REL_CRCS. - weak-modules: process only weak-updates related depmod output. - Resolves: rhbz#1482385 + Resolves: rhbz#1468305 +- weak-modules: implement dry run by symlink restoration. + Resolves: rhbz#1477073 -* Wed Jul 12 2017 Yauheni Kaliuta - 20-15.el7_4.1 -- weak-modules: fallback weak-modules state if incompatible installed - Resolves: rhbz#1469990 +* Wed Jul 12 2017 Yauheni Kaliuta - 20-16 +- weak-modules: fallback weak-modules state if incompatible installed. + Resolved: rhbz#1468042 * Fri May 12 2017 Yauheni Kaliuta - 20-15 - weak-modules: install weak link even if there is same name in extra.