Date: Thursday, November 3, 2016 @ 21:03:56
  Author: seblu
Revision: 279819

upgpkg: dkms 2.3-1

- fix FS#50404
- fix FS#50370
- fix FS#51635

Modified:
  dkms/trunk/PKGBUILD
  dkms/trunk/hook.install
  dkms/trunk/hook.remove
  dkms/trunk/hook.sh

--------------+
 PKGBUILD     |   18 +++++++++---------
 hook.install |    5 ++---
 hook.remove  |    5 ++---
 hook.sh      |   50 ++++++++++++++++++++++++++++++++++----------------
 4 files changed, 47 insertions(+), 31 deletions(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD    2016-11-03 20:55:37 UTC (rev 279818)
+++ PKGBUILD    2016-11-03 21:03:56 UTC (rev 279819)
@@ -3,11 +3,11 @@
 # Contributor: Balwinder S "bsd" Dheeman (bdheeman AT gmail.com)
 
 pkgname=dkms
-pkgver=2.2.0.3+git151023
-pkgrel=12
+pkgver=2.3
+pkgrel=1
 pkgdesc='Dynamic Kernel Modules System'
 arch=('any')
-url='http://linux.dell.com/dkms/'
+url='https://github.com/dell/dkms'
 license=('GPL2')
 depends=('bash' 'kmod' 'gcc' 'make' 'patch')
 makedepends=('git')
@@ -17,7 +17,7 @@
             'linux-grsec-headers: build modules against the GRSEC kernel')
 backup=('etc/dkms/framework.conf')
 install=$pkgname.install
-source=('git+git://linux.dell.com/dkms.git#commit=7b6e78f'
+source=("git+https://github.com/dell/dkms.git#tag=$pkgver";
         '02-no-kernel-hook.patch'
         'hook.install'
         'hook.remove'
@@ -24,9 +24,9 @@
         'hook.sh')
 md5sums=('SKIP'
          '82d520c39c99c34977e48b313a189c6c'
-         'e6eada07fc3a56a491e14dfeafec746f'
-         '094e692184902a7ee584c84f3a9e375d'
-         'f2a86ab70daba2e8623156f5221152a9')
+         '2dfc9905738199bf1fdbaa08d306e265'
+         '4d959fdd4f168b5a6921712404066566'
+         'c3971151a2945e5491b786579810cd15')
 
 prepare() {
   cd dkms
@@ -35,8 +35,8 @@
   local filename
   for filename in "${source[@]}"; do
     if [[ "$filename" =~ \.patch$ ]]; then
-      msg2 "Applying patch $filename"
-      patch -p1 -N -i "$srcdir/$filename"
+      msg2 "Applying patch ${filename##*/}"
+      patch -p1 -N -i "$srcdir/${filename##*/}"
     fi
   done
 

Modified: hook.install
===================================================================
--- hook.install        2016-11-03 20:55:37 UTC (rev 279818)
+++ hook.install        2016-11-03 21:03:56 UTC (rev 279819)
@@ -3,9 +3,8 @@
 Operation = Upgrade
 Type = File
 Target = usr/src/*/dkms.conf
-Target = usr/lib/modules/*/
-Target = !usr/lib/modules/extramodules-*
-Target = !usr/lib/modules/*/?*
+Target = usr/lib/modules/*/build/include/
+Target = usr/lib/modules/*/kernel/
 
 [Action]
 Description = Install DKMS modules

Modified: hook.remove
===================================================================
--- hook.remove 2016-11-03 20:55:37 UTC (rev 279818)
+++ hook.remove 2016-11-03 21:03:56 UTC (rev 279819)
@@ -3,9 +3,8 @@
 Operation = Remove
 Type = File
 Target = usr/src/*/dkms.conf
-Target = usr/lib/modules/*/
-Target = !usr/lib/modules/extramodules-*
-Target = !usr/lib/modules/*/?*
+Target = usr/lib/modules/*/build/include/
+Target = usr/lib/modules/*/kernel/
 
 [Action]
 Description = Remove DKMS modules

Modified: hook.sh
===================================================================
--- hook.sh     2016-11-03 20:55:37 UTC (rev 279818)
+++ hook.sh     2016-11-03 21:03:56 UTC (rev 279819)
@@ -41,17 +41,13 @@
 # handle actions on module addition/upgrade/removal
 # $1: module name
 # $2: module version
-# $*: dkms args
-do_module() {
-       local modname="$1"; shift
-       local modver="$1"; shift
+# $3: dkms action
+parse_module() {
        pushd "$install_tree" >/dev/null
-       # do $@ for each kernel with headers for $modname v$modver
        local path
        for path in */build/; do
                local kver="${path%%/*}"
-               check_kernel "$kver" || continue
-               run dkms "$@" -m "$modname" -v "$modver" -k "$kver"
+               dkms_register "$1" "$2" "$kver" "$3"
        done
        popd >/dev/null
 }
@@ -58,21 +54,38 @@
 
 # handle actions on kernel addition/upgrade/removal
 # $1: kernel version
-# $*: dkms args
-do_kernel() {
-       local kver="$1"; shift
-       check_kernel "$kver" || return
-       # do $@ once for each dkms module in $source_tree
+# $2: dkms action
+parse_kernel() {
        local path
        for path in "$source_tree"/*-*/dkms.conf; do
-               if [[ "$path" =~ ^$source_tree/([^/]+)-([^/]+)/dkms\.conf$ ]]; 
then
-                       run dkms "$@" -m "${BASH_REMATCH[1]}" -v 
"${BASH_REMATCH[2]}" -k "$kver"
+               if [[ -f "$path" && "$path" =~ 
^$source_tree/([^/]+)-([^/]+)/dkms\.conf$ ]]; then
+                       dkms_register "${BASH_REMATCH[1]}" "${BASH_REMATCH[2]}" 
"$1" "$2"
                fi
        done
 }
 
+# register a dkms call
+# this function suppress echo call for a module
+# $1: module name, $2: module version, $3: kernel version, $4: action
+dkms_register() {
+       DKMS_ACTION["$1/$2/$3"]="$4"
+}
+
+# run registered dkms commands
+dkms_run() {
+       local modname modver kver args nvk
+       for nvk in "${!DKMS_ACTION[@]}"; do
+               mod=${nvk%/*}
+               kver=${nvk##*/}
+               check_kernel "$kver" || return
+               run dkms "${DKMS_ACTION[$nvk]}" "$mod" -k "$kver"
+       done
+}
+
 # emulated program entry point
 main() {
+       [[ -n "$DKMS_ALPM_HOOK_DEBUG" ]] && set -x
+
        # prevent to have all each dkms call to fail
        if (( EUID )); then
                echo 'You must be root to use this hook' >&2
@@ -100,15 +113,20 @@
                fi
        done
 
+       # Storage for DKMS action to run
+       declare -A DKMS_ACTION
+
        # parse stdin paths to guess what do do
        while read -r path; do
                if [[ "/$path" =~ ^$source_tree/([^/]+)-([^/]+)/dkms\.conf$ ]]; 
then
-                       do_module "${BASH_REMATCH[1]}" "${BASH_REMATCH[2]}" "$@"
+                       parse_module "${BASH_REMATCH[1]}" "${BASH_REMATCH[2]}" 
"$@"
                elif [[ "/$path" =~ ^$install_tree/([^/]+)/ ]]; then
-                       do_kernel "${BASH_REMATCH[1]}" "$@"
+                       parse_kernel "${BASH_REMATCH[1]}" "$@"
                fi
        done
 
+       dkms_run
+
        return 0
 }
 

Reply via email to