diff -Nru dkms-2.6.1/debian/changelog dkms-2.6.1/debian/changelog --- dkms-2.6.1/debian/changelog 2019-09-02 08:08:14.000000000 +0000 +++ dkms-2.6.1/debian/changelog 2019-10-14 10:38:32.000000000 +0000 @@ -1,3 +1,12 @@ +dkms (2.6.1-4ubuntu2.4) disco; urgency=medium + + * revert 0019-fix-OBSOLETE_BY-be-blocked-by-force-Closes-89.patch + * cherry-pick from upstream 9bbef17 for issue #89 #42 + - 0019-add-force-version-override-and-dkms-_version-overrid.patch + + + -- Alex Tu Mon, 14 Oct 2019 18:38:32 +0800 + dkms (2.6.1-4ubuntu2.3) disco; urgency=medium * dkms: cherry-pick from upstream a35d981 for issue #89 diff -Nru dkms-2.6.1/debian/patches/0019-add-force-version-override-and-dkms-_version-overrid.patch dkms-2.6.1/debian/patches/0019-add-force-version-override-and-dkms-_version-overrid.patch --- dkms-2.6.1/debian/patches/0019-add-force-version-override-and-dkms-_version-overrid.patch 1970-01-01 00:00:00.000000000 +0000 +++ dkms-2.6.1/debian/patches/0019-add-force-version-override-and-dkms-_version-overrid.patch 2019-10-14 10:38:32.000000000 +0000 @@ -0,0 +1,83 @@ +From: Alex Tu +Date: Wed, 25 Sep 2019 16:00:23 +0800 +Subject: add --force-version-override and {dkms}_version-override option + +when --force-version-override or {dkms}_version-override content be +found under /usr/share/dkms/modules_to_force_install/{file}, then it +will skip the code block of version comparing with existed module. +--- + dkms | 26 ++++++++++++++++++++++---- + 1 file changed, 22 insertions(+), 4 deletions(-) + +diff --git a/dkms b/dkms +index 981c8a7..20332e9 100644 +--- a/dkms ++++ b/dkms +@@ -135,7 +135,7 @@ show_usage() + echo $" [action] = { add | remove | build | install | uninstall | match | autoinstall" + echo $" | mkdriverdisk | mktarball | ldtarball | mkrpm | mkkmp | mkdeb | mkbmdeb | status }" + echo $" [options] = [-m module] [-v module-version] [-k kernel-version] [-a arch]" +- echo $" [-d distro] [-c dkms.conf-location] [-q] [--force] [--all]" ++ echo $" [-d distro] [-c dkms.conf-location] [-q] [--force] [--force-version-override] [--all]" + echo $" [--templatekernel=kernel] [--directive='cli-directive=cli-value']" + echo $" [--config=kernel-.config-location] [--archive=tarball-location]" + echo $" [--kernelsourcedir=source-location] [--no-prepare-kernel] [--no-initrd]" +@@ -811,6 +811,11 @@ check_version_sanity() + read -a kernels_module < <(find_module "$lib_tree" "${4}") + [ -z $kernels_module ] || return 0 + ++ if [[ "$force_version_override" == "true" ]]; then ++ # Skip the following version checking code. ++ return 0 ++ fi ++ + if [[ ${kernels_module[1]} ]]; then + warn $"Warning! Cannot do version sanity checking because multiple ${4}$module_suffix" \ + $"modules were found in kernel $1." +@@ -1426,6 +1431,10 @@ force_installation() + + for elem in $to_force; do + if [ "${1}" = "${elem}" ]; then ++ echo "force" ++ return 0 ++ elif [ "${1}_version-override" = "${elem}" ]; then ++ echo "version-override" + return 0 + fi + done +@@ -1447,9 +1456,14 @@ install_module() + tmp_force="$force" + + # If the module is set to be force-installed +- force_installation $module && echo "Forcing installation of $module" \ +- && force="true" +- ++ local ret=$(force_installation $module) ++ if [[ "$ret" == "force" ]];then ++ force="true" ++ echo "Forcing installation of $module" ++ elif [[ "$ret" == "version-override" ]];then ++ force_version_override="true" ++ echo "Forcing version override of $module" ++ fi + # Make sure that kernel exists to install into + [[ -e $install_tree/$kernelver ]] || die 6 \ + $"The directory $install_tree/$kernelver doesn't exist." \ +@@ -3581,6 +3595,7 @@ kernel_source_dir="" + ksourcedir_fromcli="" + action="" + force="" ++force_version_override="" + no_prepare_kernel="" + no_clean_kernel="" + binaries_only="" +@@ -3664,6 +3679,9 @@ while (($# > 0)); do + --force) + force="true" + ;; ++ --force-version-override) ++ force_version_override="true" ++ ;; + --all) + all="true" + ;; diff -Nru dkms-2.6.1/debian/patches/0019-fix-OBSOLETE_BY-be-blocked-by-force-Closes-89.patch dkms-2.6.1/debian/patches/0019-fix-OBSOLETE_BY-be-blocked-by-force-Closes-89.patch --- dkms-2.6.1/debian/patches/0019-fix-OBSOLETE_BY-be-blocked-by-force-Closes-89.patch 2019-09-02 07:16:41.000000000 +0000 +++ dkms-2.6.1/debian/patches/0019-fix-OBSOLETE_BY-be-blocked-by-force-Closes-89.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,34 +0,0 @@ -From ee06dc33b39cb61b1613831d9234183374550d3f Mon Sep 17 00:00:00 2001 -From: Alex Tu -Date: Tue, 30 Jul 2019 15:08:04 +0800 -Subject: [PATCH] fix: OBSOLETE_BY be blocked by --force (Closes #89) - ---- - dkms | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/dkms b/dkms -index 2293b49..126188f 100644 ---- a/dkms -+++ b/dkms -@@ -753,7 +753,7 @@ check_version_sanity() - local -a my=(${1//-/ }) - local obsolete=0 - if [[ ${obs} && ${my} ]]; then -- if [[ $(VER ${obs}) == $(VER ${my}) && ! $force ]]; then -+ if [[ $(VER ${obs}) == $(VER ${my}) ]]; then - # They get obsoleted possibly in this kernel release - if [[ ! ${obs[1]} ]]; then - # They were obsoleted in this upstream kernel -@@ -765,7 +765,7 @@ check_version_sanity() - # They were obsoleted in this ABI bump of the kernel - obsolete=1 - fi -- elif [[ $(VER ${my}) > $(VER ${obs}) && ! $force ]]; then -+ elif [[ $(VER ${my}) > $(VER ${obs}) ]]; then - # They were obsoleted in an earlier kernel release - obsolete=1 - fi --- -2.17.1 - diff -Nru dkms-2.6.1/debian/patches/series dkms-2.6.1/debian/patches/series --- dkms-2.6.1/debian/patches/series 2019-09-02 08:08:14.000000000 +0000 +++ dkms-2.6.1/debian/patches/series 2019-10-14 10:38:32.000000000 +0000 @@ -11,4 +11,4 @@ revert-removal-of-modules-from-dkms-built-tree.patch 0017-fix-OBSOLETE_BY-in-DKMS.CONF-Closes-81.patch lp-1827697.patch -0019-fix-OBSOLETE_BY-be-blocked-by-force-Closes-89.patch +0019-add-force-version-override-and-dkms-_version-overrid.patch