Date: Friday, February 19, 2016 @ 02:27:13 Author: seblu Revision: 162398
upgpkg: dkms 2.2.0.3+git151023-2 - remove systemd service - use alpm hooks to build dkms modules Added: dkms/trunk/alpm-hook dkms/trunk/dkms.hook Modified: dkms/trunk/PKGBUILD dkms/trunk/dkms.install Deleted: dkms/trunk/dkms.default dkms/trunk/dkms.service dkms/trunk/dkms.systemd --------------+ PKGBUILD | 21 ++++++++----------- alpm-hook | 29 +++++++++++++++++++++++++++ dkms.default | 9 -------- dkms.hook | 11 ++++++++++ dkms.install | 16 +++++++++----- dkms.service | 11 ---------- dkms.systemd | 61 --------------------------------------------------------- 7 files changed, 59 insertions(+), 99 deletions(-) Modified: PKGBUILD =================================================================== --- PKGBUILD 2016-02-19 00:18:47 UTC (rev 162397) +++ PKGBUILD 2016-02-19 01:27:13 UTC (rev 162398) @@ -4,7 +4,7 @@ pkgname=dkms pkgver=2.2.0.3+git151023 -pkgrel=1 +pkgrel=2 pkgdesc='Dynamic Kernel Modules System' arch=('any') url='http://linux.dell.com/dkms/' @@ -13,18 +13,16 @@ makedepends=('git') optdepends=('linux-headers: build modules against Arch kernel' 'linux-lts-headers: build modules against LTS Arch kernel') -backup=('etc/dkms/framework.conf' 'etc/default/dkms') +backup=('etc/dkms/framework.conf') install=$pkgname.install source=('git+git://linux.dell.com/dkms.git#commit=7b6e78f' '02-no-kernel-hook.patch' - "$pkgname.default" - "$pkgname.service" - "$pkgname.systemd") + 'alpm-hook' + "$pkgname.hook") md5sums=('SKIP' '82d520c39c99c34977e48b313a189c6c' - '33be2fbf1bcc1b3fb2f38d9e7eaa809d' - '02e9744e3fdc3d2f68e46966fb32e260' - '0158265dace30b6cdd06244e844b3e5f') + '87715a4b2f8520eb85b380fa5509ac10' + '579ec5e7d91acbf75eaf0ed154864a05') prepare() { cd dkms @@ -44,10 +42,9 @@ } package() { - # systemd - install -D -m 644 $pkgname.service "$pkgdir/usr/lib/systemd/system/$pkgname.service" - install -D -m 755 $pkgname.systemd "$pkgdir/usr/lib/systemd/scripts/$pkgname" - install -D -m 644 $pkgname.default "$pkgdir/etc/default/$pkgname" + # alpm hook + install -D -m 644 dkms.hook "$pkgdir/usr/share/libalpm/hooks/dkms.hook" + install -D -m 755 alpm-hook "$pkgdir/usr/lib/dkms/alpm-hook" # upstream installer cd dkms make \ Added: alpm-hook =================================================================== --- alpm-hook (rev 0) +++ alpm-hook 2016-02-19 01:27:13 UTC (rev 162398) @@ -0,0 +1,29 @@ +#!/bin/bash + +# Copyright © 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. + +if (( EUID )); then + echo 'You must be root to use this hook' >&2 + exit 1 +fi + +# build modules for all kernels +cd /usr/lib/modules +for buildpath in */build; do + [[ -d "$buildpath" ]] || continue + dkms autoinstall -k "${buildpath%/*}" +done Property changes on: dkms/trunk/alpm-hook ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Deleted: dkms.default =================================================================== --- dkms.default 2016-02-19 00:18:47 UTC (rev 162397) +++ dkms.default 2016-02-19 01:27:13 UTC (rev 162398) @@ -1,9 +0,0 @@ -# vim:set ts=2 sw=2 ft=sh noet: - -# With LOAD set to yes, modules listed as installed will be loaded with -# systemctl start dkms.service. Default is yes. -LOAD=yes - -# With UNLOAD set to yes, modules listed as installed will be unloaded with -# systemctl stop dkms.service. Default is no. -UNLOAD=no Added: dkms.hook =================================================================== --- dkms.hook (rev 0) +++ dkms.hook 2016-02-19 01:27:13 UTC (rev 162398) @@ -0,0 +1,11 @@ +[Trigger] +Operation = Install +Operation = Upgrade +Type = Package +Target = *-dkms + +[Action] +Description = Build required modules +Depends = dkms +When = PostTransaction +Exec = /usr/lib/dkms/alpm-hook Modified: dkms.install =================================================================== --- dkms.install 2016-02-19 00:18:47 UTC (rev 162397) +++ dkms.install 2016-02-19 01:27:13 UTC (rev 162398) @@ -1,13 +1,17 @@ -#!/bin/sh +#!/bin/bash # arg 1: the new package version # arg 2: the old package version post_upgrade() { - if [ "$(vercmp $2 2.2.0.3-12)" -le 0 ]; then - cat << EOF -===> dkms startup config file moved to /etc/default/dkms -EOF - fi + if (( "$(vercmp $2 2.2.0.3-12)" <= 0 )); then + echo '===> dkms startup config file moved to /etc/default/dkms' + fi + + if (( "$(vercmp $2 '2.2.0.3+git151023-2')" <= 0 )); then + echo '===> dkms systemd 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: Deleted: dkms.service =================================================================== --- dkms.service 2016-02-19 00:18:47 UTC (rev 162397) +++ dkms.service 2016-02-19 01:27:13 UTC (rev 162398) @@ -1,11 +0,0 @@ -[Unit] -Description=Dynamic Kernel Modules System - -[Service] -Type=oneshot -RemainAfterExit=yes -ExecStart=/usr/lib/systemd/scripts/dkms start -ExecStop=/usr/lib/systemd/scripts/dkms stop - -[Install] -WantedBy=multi-user.target Deleted: dkms.systemd =================================================================== --- dkms.systemd 2016-02-19 00:18:47 UTC (rev 162397) +++ dkms.systemd 2016-02-19 01:27:13 UTC (rev 162398) @@ -1,61 +0,0 @@ -#!/bin/bash - -. /etc/default/dkms - -# list dkms modules for the current running kernel -list_dkms_modules() { - shopt -s nullglob - declare -a DKMS_MOULES - # dkms status needs uname -r to list correctly intalled version for current kernel - local modules_path=($(dkms status -k "$(uname -r)"|sed -rn 's#(.*), (.*), (.*), (.*): installed#\1/\2/\3/\4#p')) - for p in "${modules_path[@]}"; do - for m in /var/lib/dkms/"$p"/module/*.ko{,gz}; do - m=${m##*/} - m=${m%.gz} - m=${m%.ko} - DKMS_MODULES+=("$m") - done - done -} - -# load installed kernel modules for the current kernel version -load_dkms_modules() { - local ret=0 - list_dkms_modules - for m in "${DKMS_MODULES[@]}"; do - modprobe -b "$m" - ret+=$? - done - return $ret -} - -# unload installed kernel modules for the current kernel version -unload_dkms_modules() { - list_dkms_modules - # ask for removal - for m in "${DKMS_MODULES[@]}"; do - modprobe --remove --quiet "$m" - done - # check modules are unloaded - # sometimes modprobe -r fail but modules are removed - for m in "${DKMS_MODULES[@]}"; do - [[ -e /sys/modules/$m ]] && return 1 - done - return 0 -} - -case "$1" in - start) - dkms autoinstall -k "$(uname -r)" - [[ $LOAD =~ [Yy][Ee][Ss] ]] && load_dkms_modules - ;; - stop) - [[ $UNLOAD =~ [Yy][Ee][Ss] ]] && unload_dkms_modules - ;; - *) - echo "usage: $0 {start|stop}" >&2 - ;; -esac - -: -# vim:set ts=2 sw=2 ft=sh et: