[arch-commits] Commit in dkms/repos (7 files)
Sébastien Luttringer
seblu at archlinux.org
Mon Jun 20 22:37:45 UTC 2016
Date: Monday, June 20, 2016 @ 22:37:44
Author: seblu
Revision: 270412
archrelease: copy trunk to community-any
Added:
dkms/repos/community-any/
dkms/repos/community-any/02-no-kernel-hook.patch
(from rev 270411, dkms/trunk/02-no-kernel-hook.patch)
dkms/repos/community-any/PKGBUILD
(from rev 270411, dkms/trunk/PKGBUILD)
dkms/repos/community-any/dkms.install
(from rev 270411, dkms/trunk/dkms.install)
dkms/repos/community-any/hook.install
(from rev 270411, dkms/trunk/hook.install)
dkms/repos/community-any/hook.remove
(from rev 270411, dkms/trunk/hook.remove)
dkms/repos/community-any/hook.sh
(from rev 270411, dkms/trunk/hook.sh)
-------------------------+
02-no-kernel-hook.patch | 13 +++++
PKGBUILD | 64 +++++++++++++++++++++++++
dkms.install | 13 +++++
hook.install | 15 ++++++
hook.remove | 15 ++++++
hook.sh | 115 ++++++++++++++++++++++++++++++++++++++++++++++
6 files changed, 235 insertions(+)
Copied: dkms/repos/community-any/02-no-kernel-hook.patch (from rev 270411, dkms/trunk/02-no-kernel-hook.patch)
===================================================================
--- community-any/02-no-kernel-hook.patch (rev 0)
+++ community-any/02-no-kernel-hook.patch 2016-06-20 22:37:44 UTC (rev 270412)
@@ -0,0 +1,13 @@
+# Author: Sébastien Luttringer <seblu at seblu.net>
+--- a/Makefile 2011-12-07 19:23:51.000000000 +0100
++++ b/Makefile 2013-05-13 00:48:19.620000000 +0200
+@@ -46,9 +46,6 @@
+ gzip -c -9 dkms.8 > $(MAN)/dkms.8.gz
+ chmod 0644 $(MAN)/dkms.8.gz
+ touch --reference=dkms.8 $(MAN)/dkms.8.gz
+- mkdir -p -m 0755 $(KCONF)/prerm.d $(KCONF)/postinst.d
+- install -p -m 0755 kernel_prerm.d_dkms $(KCONF)/prerm.d/dkms
+- install -p -m 0755 kernel_postinst.d_dkms $(KCONF)/postinst.d/dkms
+
+ DOCFILES=sample.spec sample.conf AUTHORS COPYING README.dkms sample-suse-9-mkkmp.spec sample-suse-10-mkkmp.spec
+
Copied: dkms/repos/community-any/PKGBUILD (from rev 270411, dkms/trunk/PKGBUILD)
===================================================================
--- community-any/PKGBUILD (rev 0)
+++ community-any/PKGBUILD 2016-06-20 22:37:44 UTC (rev 270412)
@@ -0,0 +1,64 @@
+# $Id$
+# Maintainer: Sébastien Luttringer
+# Contributor: Balwinder S "bsd" Dheeman (bdheeman AT gmail.com)
+
+pkgname=dkms
+pkgver=2.2.0.3+git151023
+pkgrel=11
+pkgdesc='Dynamic Kernel Modules System'
+arch=('any')
+url='http://linux.dell.com/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-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'
+ '02-no-kernel-hook.patch'
+ 'hook.install'
+ 'hook.remove'
+ 'hook.sh')
+md5sums=('SKIP'
+ '82d520c39c99c34977e48b313a189c6c'
+ 'e6eada07fc3a56a491e14dfeafec746f'
+ 'e5954138fe309c446a9efb24edf8b267'
+ 'f2a86ab70daba2e8623156f5221152a9')
+
+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
+ make \
+ DESTDIR="$pkgdir" \
+ SBIN="$pkgdir/usr/bin" \
+ BASHDIR="$pkgdir/usr/share/bash-completion/completions" \
+ install
+}
+
+# vim:set ts=2 sw=2 et:
Copied: dkms/repos/community-any/dkms.install (from rev 270411, dkms/trunk/dkms.install)
===================================================================
--- community-any/dkms.install (rev 0)
+++ community-any/dkms.install 2016-06-20 22:37:44 UTC (rev 270412)
@@ -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-any/hook.install (from rev 270411, dkms/trunk/hook.install)
===================================================================
--- community-any/hook.install (rev 0)
+++ community-any/hook.install 2016-06-20 22:37:44 UTC (rev 270412)
@@ -0,0 +1,15 @@
+[Trigger]
+Operation = Install
+Operation = Upgrade
+Type = File
+Target = usr/src/*/dkms.conf
+Target = usr/lib/modules/*/
+Target = !usr/lib/modules/extramodules-*
+Target = !usr/lib/modules/*/?*
+
+[Action]
+Description = Install DKMS modules
+Depends = dkms
+When = PostTransaction
+Exec = /usr/lib/dkms/alpm-hook install
+NeedsTargets
Copied: dkms/repos/community-any/hook.remove (from rev 270411, dkms/trunk/hook.remove)
===================================================================
--- community-any/hook.remove (rev 0)
+++ community-any/hook.remove 2016-06-20 22:37:44 UTC (rev 270412)
@@ -0,0 +1,15 @@
+[Trigger]
+Operation = Upgrade
+Operation = Remove
+Type = File
+Target = usr/src/*/dkms.conf
+Target = usr/lib/modules/*/
+Target = !usr/lib/modules/extramodules-*
+Target = !usr/lib/modules/*/?*
+
+[Action]
+Description = Remove DKMS modules
+Depends = dkms
+When = PreTransaction
+Exec = /usr/lib/dkms/alpm-hook remove
+NeedsTargets
Copied: dkms/repos/community-any/hook.sh (from rev 270411, dkms/trunk/hook.sh)
===================================================================
--- community-any/hook.sh (rev 0)
+++ community-any/hook.sh 2016-06-20 22:37:44 UTC (rev 270412)
@@ -0,0 +1,115 @@
+#!/bin/bash
+
+#
+# Copyright © 2016 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
+}
+
+# check kernel is valid for action
+# it means kernel and its headers are installed
+# $1: kernel version
+check_kernel() {
+ local kver="$1"; shift
+ if [[ ! -d "$install_tree/$kver/kernel" ]]; then
+ echo "==> No kernel $kver modules. You must install them to use DKMS!"
+ return 1
+ elif [[ ! -d "$install_tree/$kver/build/include" ]]; then
+ echo "==> No kernel $kver headers. You must install them to use DKMS!"
+ return 1
+ fi
+ return 0
+}
+
+# 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
+ 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"
+ done
+ popd >/dev/null
+}
+
+# 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
+ 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"
+ fi
+ done
+}
+
+# emulated program entry point
+main() {
+ # prevent to have all each dkms call to fail
+ if (( EUID )); then
+ echo 'You must be root to use this hook' >&2
+ exit 1
+ fi
+
+ # check args count
+ if (( $# < 1 )); then
+ echo "usage: ${0##*/} dkms-arguments" >&2
+ exit 1
+ fi
+
+ # 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
+
+ # 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]}" "$@"
+ elif [[ "/$path" =~ ^$install_tree/([^/]+)/ ]]; then
+ do_kernel "${BASH_REMATCH[1]}" "$@"
+ fi
+ done
+
+ return 0
+}
+
+main "$@"
More information about the arch-commits
mailing list