[arch-commits] Commit in dkms/repos (9 files)

Sébastien Luttringer seblu at archlinux.org
Fri Dec 11 09:00:44 UTC 2020


    Date: Friday, December 11, 2020 @ 09:00:44
  Author: seblu
Revision: 403965

archrelease: copy trunk to community-testing-any

Added:
  dkms/repos/community-testing-any/
  dkms/repos/community-testing-any/0001-Revert-Make-newly-installed-modules-available-immedi.patch
    (from rev 403964, dkms/trunk/0001-Revert-Make-newly-installed-modules-available-immedi.patch)
  dkms/repos/community-testing-any/PKGBUILD
    (from rev 403964, dkms/trunk/PKGBUILD)
  dkms/repos/community-testing-any/PKGBUILD.26
    (from rev 403964, dkms/trunk/PKGBUILD.26)
  dkms/repos/community-testing-any/dkms.install
    (from rev 403964, dkms/trunk/dkms.install)
  dkms/repos/community-testing-any/hook.install
    (from rev 403964, dkms/trunk/hook.install)
  dkms/repos/community-testing-any/hook.remove
    (from rev 403964, dkms/trunk/hook.remove)
  dkms/repos/community-testing-any/hook.sh
    (from rev 403964, dkms/trunk/hook.sh)
  dkms/repos/community-testing-any/hook.upgrade
    (from rev 403964, dkms/trunk/hook.upgrade)

-----------------------------------------------------------------+
 0001-Revert-Make-newly-installed-modules-available-immedi.patch |   31 +
 PKGBUILD                                                        |   73 ++
 PKGBUILD.26                                                     |   69 ++
 dkms.install                                                    |   13 
 hook.install                                                    |   14 
 hook.remove                                                     |   13 
 hook.sh                                                         |  251 ++++++++++
 hook.upgrade                                                    |   13 
 8 files changed, 477 insertions(+)

Copied: dkms/repos/community-testing-any/0001-Revert-Make-newly-installed-modules-available-immedi.patch (from rev 403964, dkms/trunk/0001-Revert-Make-newly-installed-modules-available-immedi.patch)
===================================================================
--- community-testing-any/0001-Revert-Make-newly-installed-modules-available-immedi.patch	                        (rev 0)
+++ community-testing-any/0001-Revert-Make-newly-installed-modules-available-immedi.patch	2020-12-11 09:00:44 UTC (rev 403965)
@@ -0,0 +1,31 @@
+From ca38ccd38c69a096dafa51c426ee3548980d5e2a Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?S=C3=A9bastien=20Luttringer?= <seblu at seblu.net>
+Date: Sat, 8 Jul 2017 15:50:55 +0200
+Subject: [PATCH] Revert "Make newly installed modules available immediately"
+To: dkms-devel at dell.com
+
+This reverts commit f5bfb12fef1fc06e56355cdba500eaa98d4e6aa8.
+---
+ dkms | 6 ------
+ 1 file changed, 6 deletions(-)
+
+diff --git a/dkms b/dkms
+index a6cedc8..3ff71d5 100644
+--- a/dkms
++++ b/dkms
+@@ -1522,12 +1522,6 @@ install_module()
+             exit 6
+     }
+ 
+-    # Make the newly installed modules available immediately
+-    find /sys/devices -name modalias -print0 | xargs -0 cat | xargs modprobe -a -b -q
+-    if [ -f /lib/systemd/system/systemd-modules-load.service ]; then
+-        systemctl restart systemd-modules-load.service
+-    fi
+-
+     # Do remake_initrd things (save old initrd)
+     [[ $remake_initrd ]] && ! make_initrd "$kernelver" "$arch" && {
+         do_uninstall "$kernelver" "$arch"
+-- 
+Sébastien "Seblu" Luttringer
+

Copied: dkms/repos/community-testing-any/PKGBUILD (from rev 403964, dkms/trunk/PKGBUILD)
===================================================================
--- community-testing-any/PKGBUILD	                        (rev 0)
+++ community-testing-any/PKGBUILD	2020-12-11 09:00:44 UTC (rev 403965)
@@ -0,0 +1,73 @@
+# Maintainer: Sébastien Luttringer
+# Contributor: Balwinder S "bsd" Dheeman (bdheeman AT gmail.com)
+
+pkgname=dkms
+pkgver=2.8.4
+pkgrel=1
+pkgdesc='Dynamic Kernel Modules System'
+arch=('any')
+url='https://github.com/dell/dkms'
+license=('GPL2')
+depends=('bash' 'kmod' 'gcc' 'make' 'patch')
+makedepends=('git')
+optdepends=('linux-headers: build modules against the Arch kernel'
+            'linux-lts-headers: build modules against the LTS kernel'
+            'linux-zen-headers: build modules against the ZEN kernel'
+            'linux-hardened-headers: build modules against the HARDENED kernel')
+backup=('etc/dkms/framework.conf')
+install=$pkgname.install
+source=("git+https://github.com/dell/dkms.git#tag=v$pkgver"
+        'hook.install'
+        'hook.remove'
+        'hook.upgrade'
+        'hook.sh'
+        '0001-Revert-Make-newly-installed-modules-available-immedi.patch')
+sha256sums=('SKIP'
+            '047e0e46967e98fbf3ff8860a80f259c28693d5989373d5a5395714495b59844'
+            'ae5483980db914d52bff981ed83356c85679dd7e6e8f73bdd94265f065014c73'
+            'd61d94532789928085a8494ba039c59244cfb3bfd47deaf21bcbe54a2243dc45'
+            '6bc3931865afce6ee17a56099cf551ab2827db99b609de78e1bf9a1962e6ef56'
+            '124b821b1b44ba365d915945825bcf32c1077655c3a98eb1644de56b6abfcd09')
+
+prepare() {
+  cd dkms
+
+  # apply patch from the source array (should be a pacman feature)
+  local filename
+  for filename in "${source[@]}"; do
+    if [[ "$filename" =~ \.patch$ ]]; then
+      msg2 "Applying patch ${filename##*/}"
+      patch -p1 -N -i "$srcdir/${filename##*/}"
+    fi
+  done
+
+  # /usr move
+  msg2 '/usr move patching'
+  for i in dkms{,_framework.conf,.bash-completion,.8,_common.postinst}; do
+    sed -ri 's,/lib/modules,/usr/lib/modules,g' "$i"
+  done
+}
+
+package() {
+  # alpm hooks
+  install -D -m 644 hook.install "$pkgdir/usr/share/libalpm/hooks/70-dkms-install.hook"
+  # both upgrade and remove hooks are removing dkms modules.
+  # remove always call depmod while upgrade never, as install will later.
+  # upgrade is run before remove in order to have the cleanest depmod file,
+  # if something goes wrong before the depmod call in install hook.
+  install -D -m 644 hook.upgrade "$pkgdir/usr/share/libalpm/hooks/70-dkms-upgrade.hook"
+  install -D -m 644 hook.remove "$pkgdir/usr/share/libalpm/hooks/71-dkms-remove.hook"
+  # hook helper
+  install -D -m 755 hook.sh "$pkgdir/usr/lib/dkms/alpm-hook"
+  # upstream installer
+  cd dkms
+  # we don't need kconf files, so we install them outside $pkgdir
+  make \
+    DESTDIR="$pkgdir" \
+    SBIN="$pkgdir/usr/bin" \
+    BASHDIR="$pkgdir/usr/share/bash-completion/completions" \
+    KCONF="$srcdir"/kconf \
+    install
+}
+
+# vim:set ts=2 sw=2 et:

Copied: dkms/repos/community-testing-any/PKGBUILD.26 (from rev 403964, dkms/trunk/PKGBUILD.26)
===================================================================
--- community-testing-any/PKGBUILD.26	                        (rev 0)
+++ community-testing-any/PKGBUILD.26	2020-12-11 09:00:44 UTC (rev 403965)
@@ -0,0 +1,69 @@
+# Maintainer: Sébastien Luttringer
+# Contributor: Balwinder S "bsd" Dheeman (bdheeman AT gmail.com)
+
+pkgname=dkms
+pkgver=2.6.1
+pkgrel=1
+pkgdesc='Dynamic Kernel Modules System'
+arch=('any')
+url='https://github.com/dell/dkms'
+license=('GPL2')
+depends=('bash' 'kmod' 'gcc' 'make' 'patch')
+makedepends=('git')
+optdepends=('linux-headers: build modules against the Arch kernel'
+            'linux-lts-headers: build modules against the LTS kernel'
+            'linux-zen-headers: build modules against the ZEN kernel'
+            'linux-hardened-headers: build modules against the HARDENED kernel')
+backup=('etc/dkms/framework.conf')
+install=$pkgname.install
+source=("git+https://github.com/dell/dkms.git#tag=v$pkgver"
+        'hook.install'
+        'hook.remove'
+        'hook.sh'
+        '0001-Revert-Make-newly-installed-modules-available-immedi.patch'
+        '0002-Revert-Fix-to-run-under-BusyBox-shell.patch'
+        '0003-Fix-version-check-when-installing-modules.patch')
+md5sums=('SKIP'
+         '90f1486e0af9aab85e8c60d456802c63'
+         '2e8ffd0c2ddec02872d0234befd129fd'
+         '80632f6a454b35bcade2bed287f13c7b'
+         'd3b91ef709f567a375f4bbdbd3291d2b'
+         '4342b5e9020a52a73a63e7897ead5405'
+         '00813655321b8fc256eda737ca0622ef')
+
+prepare() {
+  cd dkms
+
+  # apply patch from the source array (should be a pacman feature)
+  local filename
+  for filename in "${source[@]}"; do
+    if [[ "$filename" =~ \.patch$ ]]; then
+      msg2 "Applying patch ${filename##*/}"
+      patch -p1 -N -i "$srcdir/${filename##*/}"
+    fi
+  done
+
+  # /usr move
+  msg2 '/usr move patching'
+  for i in dkms{,_framework.conf,.bash-completion,.8,_common.postinst}; do
+    sed -ri 's,/lib/modules,/usr/lib/modules,g' "$i"
+  done
+}
+
+package() {
+  # alpm hook
+  install -D -m 644 hook.install "$pkgdir/usr/share/libalpm/hooks/70-dkms-install.hook"
+  install -D -m 644 hook.remove "$pkgdir/usr/share/libalpm/hooks/70-dkms-remove.hook"
+  install -D -m 755 hook.sh "$pkgdir/usr/lib/dkms/alpm-hook"
+  # upstream installer
+  cd dkms
+  # we don't need kconf files, so we install them outside $pkgdir
+  make \
+    DESTDIR="$pkgdir" \
+    SBIN="$pkgdir/usr/bin" \
+    BASHDIR="$pkgdir/usr/share/bash-completion/completions" \
+    KCONF="$srcdir"/kconf \
+    install
+}
+
+# vim:set ts=2 sw=2 et:

Copied: dkms/repos/community-testing-any/dkms.install (from rev 403964, dkms/trunk/dkms.install)
===================================================================
--- community-testing-any/dkms.install	                        (rev 0)
+++ community-testing-any/dkms.install	2020-12-11 09:00:44 UTC (rev 403965)
@@ -0,0 +1,13 @@
+#!/bin/bash
+
+# arg 1:  the new package version
+# arg 2:  the old package version
+post_upgrade() {
+  if (( "$(vercmp $2 '2.2.0.3+git151023-2')" < 0 )); then
+    echo '===> dkms systemd startup service has been removed'
+    echo '===> modules building is now handled by alpm hooks at install time'
+    echo '===> startup modules loading must be done via modules-load.d'
+  fi
+}
+
+# vim:set ts=2 sw=2 ft=sh et:

Copied: dkms/repos/community-testing-any/hook.install (from rev 403964, dkms/trunk/hook.install)
===================================================================
--- community-testing-any/hook.install	                        (rev 0)
+++ community-testing-any/hook.install	2020-12-11 09:00:44 UTC (rev 403965)
@@ -0,0 +1,14 @@
+[Trigger]
+Operation = Install
+Operation = Upgrade
+Type = Path
+Target = usr/src/*/dkms.conf
+Target = usr/lib/modules/*/build/include/
+Target = usr/lib/modules/*/modules.alias
+
+[Action]
+Description = Install DKMS modules
+Depends = dkms
+When = PostTransaction
+Exec = /usr/lib/dkms/alpm-hook install
+NeedsTargets

Copied: dkms/repos/community-testing-any/hook.remove (from rev 403964, dkms/trunk/hook.remove)
===================================================================
--- community-testing-any/hook.remove	                        (rev 0)
+++ community-testing-any/hook.remove	2020-12-11 09:00:44 UTC (rev 403965)
@@ -0,0 +1,13 @@
+[Trigger]
+Operation = Remove
+Type = Path
+Target = usr/src/*/dkms.conf
+Target = usr/lib/modules/*/build/include/
+Target = usr/lib/modules/*/modules.alias
+
+[Action]
+Description = Remove DKMS modules
+Depends = dkms
+When = PreTransaction
+Exec = /usr/lib/dkms/alpm-hook remove
+NeedsTargets

Copied: dkms/repos/community-testing-any/hook.sh (from rev 403964, dkms/trunk/hook.sh)
===================================================================
--- community-testing-any/hook.sh	                        (rev 0)
+++ community-testing-any/hook.sh	2020-12-11 09:00:44 UTC (rev 403965)
@@ -0,0 +1,251 @@
+#!/bin/bash
+
+#
+# Copyright © 2018-2020, Sébastien Luttringer
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+# display what to run and run it quietly
+run() {
+  echo "==> $*"
+  "$@" > /dev/null
+  local ret=$?
+  (( $ret )) && echo "==> Warning, \`$*' returned $ret"
+  return $ret
+}
+
+# check whether the dependencies of a module are installed
+# $1: module name
+# $2: module version
+# $3: kernel version
+check_dependency() { (
+  source "$source_tree/$1-$2/dkms.conf"
+  local mod lines line
+  for mod in "${BUILD_DEPENDS[@]}"; do
+    mapfile lines < <(dkms status -m "$mod" -k "$3")
+    for line in "${lines[@]}"; do
+      [[ "$line" =~ "$mod, "[^,]+", $3, "[^:]+': installed' ]] && break 2
+    done
+    exit 1
+  done
+  exit 0
+) }
+
+# check whether the modules should be built with this kernel version
+# $1: module name
+# $2: module version
+# $3: kernel version
+check_buildexclusive() {
+  local BUILD_EXCLUSIVE_KERNEL=$(source "$source_tree/$1-$2/dkms.conf"; printf '%s\n' "$BUILD_EXCLUSIVE_KERNEL")
+  [[ "$3" =~ $BUILD_EXCLUSIVE_KERNEL ]]
+}
+
+# handle actions on module addition/upgrade/removal
+# $1: module name
+# $2: module version
+parse_module() {
+  pushd "$install_tree" >/dev/null
+  local path
+  for path in */build/; do
+    local kver="${path%%/*}"
+    dkms_register "$1" "$2" "$kver"
+  done
+  popd >/dev/null
+}
+
+# handle actions on kernel addition/upgrade/removal
+# $1: kernel version
+parse_kernel() {
+  local path
+  for path in "$source_tree"/*-*/dkms.conf; do
+    if [[ -f "$path" && "$path" =~ ^$source_tree/([^/]+)-([^/]+)/dkms\.conf$ ]]; then
+      dkms_register "${BASH_REMATCH[1]}" "${BASH_REMATCH[2]}" "$1"
+    fi
+  done
+}
+
+# register a dkms module to install/remove
+# this function suppress echo call for a module
+# $1: module name, $2: module version, $3: kernel version
+dkms_register() {
+  DKMS_MODULES["$1/$2/$3"]=''
+}
+
+# install registered modules
+dkms_install() {
+  local nvk mod mver kver
+  local -i retry=1
+  local -A dmods=()
+
+  while (( $retry > 0 )); do
+    retry=0
+    for nvk in "${!DKMS_MODULES[@]}"; do
+      [[ "$nvk" =~ ([^/]+)/([^/]+)/(.+) ]]
+      mod="${BASH_REMATCH[1]}"
+      mver="${BASH_REMATCH[2]}"
+      kver="${BASH_REMATCH[3]}"
+      # do not build excluded modules
+      if ! check_buildexclusive "$mod" "$mver" "$kver"; then
+        unset DKMS_MODULES[$nvk]
+        continue
+      # skip modules with missing kernel headers
+      elif [[ ! -d "$install_tree/$kver/build/include" ]]; then
+        DKMS_MODULES[$nvk]='Missing kernel headers'
+        continue
+      # skip modules with missing kernel package
+      elif [[ ! -d "$install_tree/$kver/kernel" ]]; then
+        DKMS_MODULES[$nvk]='Missing kernel modules tree'
+        continue
+      # postpone modules with missing dependencies
+      elif ! check_dependency "$mod" "$mver" "$kver"; then
+        DKMS_MODULES[$nvk]='Missing dependency'
+        continue
+      fi
+      # give it a try dkms
+      run dkms install --no-depmod -m "$mod" -v "$mver" -k "$kver"
+      dmods[$kver]=''
+      unset DKMS_MODULES[$nvk]
+      # maybe this module was a dep of another, so we retry
+      retry=1
+    done
+  done
+  # run depmod later for performance improvments
+  if (( $DKMS_DEPMOD )); then
+    for kver in "${!dmods[@]}"; do
+      run depmod "$kver"
+    done
+  fi
+}
+
+# remove registered modules when built/installed
+# run depmod later for performance improvments
+dkms_remove() {
+  local nvk mod mver kver state
+  local -A dmods=()
+  for nvk in "${!DKMS_MODULES[@]}"; do
+    [[ "$nvk" =~ ([^/]+)/([^/]+)/(.+) ]]
+    mod="${BASH_REMATCH[1]}"
+    mver="${BASH_REMATCH[2]}"
+    kver="${BASH_REMATCH[3]}"
+    # do not remove excluded modules (n.b. display not found errors)
+    if ! check_buildexclusive "$mod" "$mver" "$kver"; then
+      unset DKMS_MODULES[$nvk]
+      continue
+    fi
+    state=$(dkms status -m "$mod" -v "$mver" -k "$kver")
+    if [[ "$state" =~ "$mod, $mver, $kver, "[^:]+": "(added|built|installed) ]]; then
+      dmods[$kver]=''
+      run dkms remove --no-depmod -m "$mod" -v "$mver" -k "$kver"
+      if (( $? == 0 )); then
+        unset DKMS_MODULES[$nvk]
+      else
+        DKMS_MODULES[$nvk]='dkms remove failed'
+      fi
+    else
+      DKMS_MODULES[$nvk]='Not found in dkms status output'
+    fi
+  done
+  # run depmod later for performance improvments
+  if (( $DKMS_DEPMOD )); then
+    for kver in "${!dmods[@]}"; do
+      run depmod "$kver"
+    done
+  fi
+}
+
+# show information about failed modules
+show_errors() {
+  local nvk mod kver
+  for nvk in "${!DKMS_MODULES[@]}"; do
+    mod=${nvk%/*}
+    kver=${nvk##*/}
+    echo "==> Unable to $DKMS_ACTION module $mod for kernel $kver: ${DKMS_MODULES[$nvk]}."
+  done
+}
+
+# display hook usage and exit $1 (default 1)
+usage() {
+  cat << EOF >&2
+usage: ${0##*/} <options> install|remove
+options: -D  Do not run depmod
+EOF
+  exit ${1:-1}
+}
+
+# emulated program entry point
+main() {
+  [[ "$DKMS_ALPM_HOOK_DEBUG" ]] && set -x
+
+  # prevent each dkms call from failing with authorization errors
+  if (( EUID )); then
+    echo 'You must be root to use this hook' >&2
+    exit 1
+  fi
+
+  # parse command line options
+  declare -i DKMS_DEPMOD=1
+  local opt
+  while getopts 'hD' opt; do
+    case $opt in
+      D) DKMS_DEPMOD=0;;
+      *) usage;;
+    esac
+  done
+  shift $((OPTIND - 1))
+  (( $# != 1 )) && usage
+
+  # register DKMS action
+  case "$1" in
+    install|remove)
+      declare -r DKMS_ACTION="$1";;
+    *) usage;;
+  esac
+
+  # dkms path from framework config
+  # note: the alpm hooks which trigger this script use static path
+  source_tree='/usr/src'
+  install_tree='/usr/lib/modules'
+  source /etc/dkms/framework.conf
+
+  # check source_tree and install_tree exists
+  local path
+  for path in "$source_tree" "$install_tree"; do
+    if [[ ! -d "$path" ]]; then
+      echo "==> Missing mandatory directory: $path. Exiting!"
+      return 1
+    fi
+  done
+
+  # storage for DKMS modules to install/remove
+  # we use associate arrays to prevent duplicate
+  declare -A DKMS_MODULES
+
+  # parse stdin paths to guess what do do
+  while read -r path; do
+    if [[ "/$path" =~ ^$source_tree/([^/]+)-([^/]+)/dkms\.conf$ ]]; then
+      parse_module "${BASH_REMATCH[1]}" "${BASH_REMATCH[2]}"
+    elif [[ "/$path" =~ ^$install_tree/([^/]+)/ ]]; then
+      parse_kernel "${BASH_REMATCH[1]}"
+    fi
+  done
+
+  dkms_$DKMS_ACTION
+
+  show_errors
+
+  return 0
+}
+
+main "$@"

Copied: dkms/repos/community-testing-any/hook.upgrade (from rev 403964, dkms/trunk/hook.upgrade)
===================================================================
--- community-testing-any/hook.upgrade	                        (rev 0)
+++ community-testing-any/hook.upgrade	2020-12-11 09:00:44 UTC (rev 403965)
@@ -0,0 +1,13 @@
+[Trigger]
+Operation = Upgrade
+Type = Path
+Target = usr/src/*/dkms.conf
+Target = usr/lib/modules/*/build/include/
+Target = usr/lib/modules/*/modules.alias
+
+[Action]
+Description = Remove upgraded DKMS modules
+Depends = dkms
+When = PreTransaction
+Exec = /usr/lib/dkms/alpm-hook -D remove
+NeedsTargets



More information about the arch-commits mailing list