[Pkg-dkms-commits] [dkms] 01/01: Add support for BUILD_DEPENDS[0]

Aron Xu aron at debian.org
Wed Apr 27 07:59:42 UTC 2016


This is an automated email from the git hooks/post-receive script.

aron pushed a commit to branch master
in repository dkms.

commit 029b3bb3a68f135ace2f57c35c283ede9c69c418
Author: Darik Horn <dajhorn at vanadac.com>
Date:   Wed Apr 27 15:58:19 2016 +0800

    Add support for BUILD_DEPENDS[0]
---
 ...OST_BUILD-to-the-dkms_conf_variables-list.patch |  24 ++++
 ...02-Add_BUILD_DEPENDS_configuration_option.patch | 146 +++++++++++++++++++++
 debian/patches/series                              |   2 +
 3 files changed, 172 insertions(+)

diff --git a/debian/patches/1491729-0001-Add-POST_BUILD-to-the-dkms_conf_variables-list.patch b/debian/patches/1491729-0001-Add-POST_BUILD-to-the-dkms_conf_variables-list.patch
new file mode 100644
index 0000000..40f6c8b
--- /dev/null
+++ b/debian/patches/1491729-0001-Add-POST_BUILD-to-the-dkms_conf_variables-list.patch
@@ -0,0 +1,24 @@
+From: Darik Horn <dajhorn at vanadac.com>
+Date: Mon, 27 Feb 2012 20:45:37 -0600
+Subject: Add POST_BUILD to the dkms_conf_variables list.
+
+The POST_BUILD directive is ignored by the read_conf() function
+because it not in dkms_conf_variables list.
+---
+ dkms |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/dkms b/dkms
+index 4381dd4..df1ff57 100644
+--- a/dkms
++++ b/dkms
+@@ -24,7 +24,7 @@
+ # All of the variables we will accept from dkms.conf.
+ # Does not include directives
+ readonly dkms_conf_variables="CLEAN REMAKE_INITRD remake_initrd PACKAGE_NAME
+-       PACKAGE_VERSION POST_ADD POST_INSTALL POST_REMOVE PRE_BUILD
++       PACKAGE_VERSION POST_ADD POST_BUILD POST_INSTALL POST_REMOVE PRE_BUILD
+        PRE_INSTALL BUILD_EXCLUSIVE_KERNEL BUILD_EXCLUSIVE_ARCH
+        build_exclude OBSOLETE_BY MAKE MAKE_MATCH MODULES_CONF
+        modules_conf_array PATCH PATCH_MATCH patch_array BUILT_MODULE_NAME
+-- 
diff --git a/debian/patches/1491729-0002-Add_BUILD_DEPENDS_configuration_option.patch b/debian/patches/1491729-0002-Add_BUILD_DEPENDS_configuration_option.patch
new file mode 100644
index 0000000..72805a3
--- /dev/null
+++ b/debian/patches/1491729-0002-Add_BUILD_DEPENDS_configuration_option.patch
@@ -0,0 +1,146 @@
+From: Darik Horn <dajhorn at vanadac.com>
+Date: Mon, 15 Jul 2013 16:25:02 -0500
+Subject: Add BUILD_DEPENDS configuration option.
+
+Implement a BUILD_DEPENDS directive that instructs `dkms autoinstall`
+to build Linux modules in a specific order. The motivating case is
+
+  lustre -> zfs -> spl
+
+Where ZFS fails to build if SPL is not already installed.
+
+[ Colin Ian King: Modified to sync with latest dkms patches ]
+
+Signed-off-by: Darik Horn <dajhorn at vanadac.com>
+Signed-off-by: Brian Behlendorf <behlendorf1 at llnl.gov>
+
+Index: dkms/dkms
+===================================================================
+--- dkms.orig/dkms
++++ dkms/dkms
+@@ -25,7 +25,7 @@ shopt -s extglob
+ # Does not include directives
+ readonly dkms_conf_variables="CLEAN REMAKE_INITRD remake_initrd PACKAGE_NAME
+        PACKAGE_VERSION POST_ADD POST_BUILD POST_INSTALL POST_REMOVE PRE_BUILD
+-       PRE_INSTALL BUILD_EXCLUSIVE_KERNEL BUILD_EXCLUSIVE_ARCH
++       PRE_INSTALL BUILD_DEPENDS BUILD_EXCLUSIVE_KERNEL BUILD_EXCLUSIVE_ARCH
+        build_exclude OBSOLETE_BY MAKE MAKE_MATCH MODULES_CONF
+        modules_conf_array PATCH PATCH_MATCH patch_array BUILT_MODULE_NAME
+        built_module_name BUILT_MODULE_LOCATION built_module_location
+@@ -3135,15 +3135,26 @@ make_kmp()
+ # by hand if dkms_autoinstaller is not used.
+ autoinstall() {
+     local status mv mvka m v k a last_v last_m tenative
++    local install_count next_depends
+     local -a to_install=()
++    local -a next_install=()
++    local -a installed_modules=()
++    local -A build_depends=()
++
+     # Walk through our list of installed and built modules, and create
+     # a list of modules that need to be reinstalled.
+     while read status mvka; do
+         IFS='/' read m v k a <<< "$mvka"
+         [[ ! $last_m ]] && last_m="$m"
+         # If the module is already installed or weak-installed, skip it.
+-        _is_module_installed "$m" "$v" "$kernelver" "$arch" && continue
+-        module_status_weak "$m" "$v" "$kernelver" "$arch" >/dev/null && continue
++        if _is_module_installed "$m" "$v" "$kernelver" "$arch"; then
++            installed_modules[${#installed_modules[@]}]="$m"
++            continue
++        fi
++        if module_status_weak "$m" "$v" "$kernelver" "$arch" >/dev/null; then
++            installed_modules[${#installed_modules[@]}]="$m"
++            continue
++        fi
+         # if the module does not want to be autoinstalled, skip it.
+         read_conf_or_die "$k" "$a" "$dkms_tree/$m/$v/source/dkms.conf"
+         if [[ ! $AUTOINSTALL ]]; then
+@@ -3152,7 +3163,10 @@ autoinstall() {
+         elif [[ $last_m != $m ]]; then
+             last_m="$m"
+             last_v='0'
+-            [[ $tenative ]] && to_install[${#to_install[@]}]="$tenative"
++            if [[ $tenative ]]; then
++                to_install[${#to_install[@]}]="$tenative"
++                build_depends["$m"]="${BUILD_DEPENDS[@]}"
++            fi
+             tenative=''
+         fi
+         if [[ ($(VER $v) > $(VER $last_v)) ]]; then
+@@ -3162,14 +3176,50 @@ autoinstall() {
+     done < <(module_status)
+     # We may have exited the loop with $tenative set.  If it is,
+     # it contains something that should be updated.
+-    [[ $tenative ]] && to_install[${#to_install[@]}]="$tenative"
++    if [[ $tenative ]]; then
++        to_install[${#to_install[@]}]="$tenative"
++        build_depends["$m"]="${BUILD_DEPENDS[@]}"
++    fi
+     [[ $to_install ]] || return 0
+-    # Install modules that need to be updated in parallel.
+-    for mv in "${to_install[@]}"; do
+-        IFS=/ read m v <<< "$mv"
+-        (module="$m"; module_version="$v"; install_module) &
++
++    while true; do
++        install_count=0
++        next_install=( )
++
++        # Step 1: Remove installed modules from all dependency lists.
++        for m in ${!build_depends[@]}; do
++            next_depends=
++            for d in ${build_depends[$m]}; do
++                for i in ${installed_modules[@]}; do
++                    [[ "$d" = "$i" ]] && continue 2
++                done
++                next_depends+="$d "
++            done
++            build_depends[$m]="${next_depends%% }"
++        done
++
++        # Step 2: Install modules that have an empty dependency list.
++        for mv in "${to_install[@]}"; do
++            IFS=/ read m v <<< "$mv"
++            if [[ -z "${build_depends[$m]}" ]]; then
++                (module="$m"; module_version="$v"; install_module) &
++                installed_modules[${#installed_modules[@]}]="$m"
++                install_count=$(($install_count +1))
++            else
++                next_install[${#next_install[@]}]="$mv"
++            fi
++         done
++
++         wait
++
++         # Step 3: Keep going if at least one module was installed during
++         # this iteration.
++         [[ "$install_count" -gt 0 ]] || break;
++
++         # Step 4: Remove modules that were installed during Step 2 from
++         # the job queue.
++         to_install=( "${next_install[@]}" )
+     done
+-    wait
+ }
+ 
+ function make_redhat3_driver_disk ()
+Index: dkms/dkms.8
+===================================================================
+--- dkms.orig/dkms.8
++++ dkms/dkms.8
+@@ -824,6 +824,14 @@ on
+ .B dkms_autoinstaller
+ for more information.
+ .TP
++.B BUILD_DEPENDS[#]=
++This optional directive is an array that allows you to specify other modules as
++dependencies for your module. Each array element should be the
++.B PACKAGE_NAME
++of another module that is managed by dkms. Do not specify a version or
++architecture in the dependency. Note that this directive is only advisory;
++missing or broken dependencies cause non-fatal warnings.
++.TP
+ .B BUILD_EXCLUSIVE_KERNEL=
+ This optional directive allows you to specify a regular expression which defines
+ the subset of kernels which DKMS is allowed to build your module for.  If the kernel
diff --git a/debian/patches/series b/debian/patches/series
index b1227ca..562850e 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -4,3 +4,5 @@
 757758.patch
 fix_have_one_kernel_for_non-zero_return_code.diff
 690865.patch
+1491729-0001-Add-POST_BUILD-to-the-dkms_conf_variables-list.patch
+1491729-0002-Add_BUILD_DEPENDS_configuration_option.patch

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-dkms/dkms.git



More information about the Pkg-dkms-commits mailing list