[1/2] add dkms support
diff mbox

Message ID 1280319036-17877-1-git-send-email-y
State New, archived
Headers show

Commit Message

y@vger.kernel.org July 28, 2010, 12:10 p.m. UTC
None

Patch
diff mbox

diff --git a/Makefile b/Makefile
index 6a660e6..4b8f6e7 100644
--- a/Makefile
+++ b/Makefile
@@ -22,7 +22,8 @@  else
 #Otherwise we were called directly from the command
 # line; invoke the kernel build system.
 
-KERNELDIR ?= /lib/modules/$(shell uname -r)/build
+KERNELRELEASE ?= $(shell uname -r)
+KERNELDIR ?= /lib/modules/$(KERNELRELEASE)/build
 PWD := $(shell pwd)
 
 default: all
diff --git a/dkms.conf b/dkms.conf
new file mode 100644
index 0000000..bbf607c
--- /dev/null
+++ b/dkms.conf
@@ -0,0 +1,7 @@ 
+PACKAGE_NAME="ceph"
+PACKAGE_VERSION="1.0"
+DEST_MODULE_LOCATION[0]="/updates/ceph"
+BUILT_MODULE_NAME[0]="ceph"
+AUTOINSTALL="yes"
+PRE_BUILD="dkms/prebuild.sh ${kernelver}"
+POST_REMOVE="dkms/postremove.sh ${kernelver}"
diff --git a/dkms/add-to-dkms-and-build b/dkms/add-to-dkms-and-build
new file mode 100644
index 0000000..ffea573
--- /dev/null
+++ b/dkms/add-to-dkms-and-build
@@ -0,0 +1,15 @@ 
+#!/bin/sh
+
+if ! [ -f ./upstream_version.h ]
+then
+	echo "Failure: ./upstream_version.h not found. Did you call this script from ceph-client root?"
+fi
+
+CEPH_VERSION=$(grep CEPH_VERSION upstream_version.h | egrep -o "[[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+[^\"]+")
+
+mkdir /usr/src/ceph-${CEPH_VERSION} || exit 1
+cp -r ./ /usr/src/ceph-${CEPH_VERSION}
+
+dkms add -m ceph -v ${CEPH_VERSION} &&
+dkms build -m ceph -v ${CEPH_VERSION} &&
+dkms install -m ceph -v ${CEPH_VERSION}
diff --git a/dkms/postremove.sh b/dkms/postremove.sh
new file mode 100644
index 0000000..8693fcf
--- /dev/null
+++ b/dkms/postremove.sh
@@ -0,0 +1,34 @@ 
+#!/bin/sh
+
+
+if [ "$1" = "" ]
+then
+        echo "Usage: $0 <kernelver>"
+        exit
+fi
+
+MODROOT="/lib/modules/$1"
+
+if ! [ -f /etc/debian_version ]
+then
+        echo "Info: runs only on Debian and derivates"
+        exit
+fi
+
+
+
+if [ -d "$MODROOT" ]
+then
+        if [ -f "$MODROOT/kernel/fs/ceph/ceph.ko.dpkg-divert-by-ceph-dkms" ]
+        then
+                if  ! [ -f "$MODROOT/kernel/fs/ceph/ceph.ko" ]
+                then
+                        dpkg-divert --rename --remove "$MODROOT/kernel/fs/ceph/ceph.ko"
+                else
+                        echo "Warning: $MODROOT/kernel/fs/ceph/ceph.ko  and diverted $MODROOT/kernel/fs/ceph/ceph.ko.dpkg-divert-by-ceph-dkms exist both!"
+                fi
+        fi
+else
+        echo "Warning: $MODROOT is not a directory"
+fi
+
diff --git a/dkms/prebuild.sh b/dkms/prebuild.sh
new file mode 100644
index 0000000..1aee069
--- /dev/null
+++ b/dkms/prebuild.sh
@@ -0,0 +1,32 @@ 
+#!/bin/sh
+
+
+if [ "$1" = "" ]
+then
+	echo "Usage: $0 <kernelver>"
+	exit
+fi
+
+MODROOT="/lib/modules/$1"
+
+if ! [ -f /etc/debian_version ]
+then
+	echo "Info: runs only on Debian and derivates"
+	exit
+fi
+
+
+if [ -d "$MODROOT" ]
+then
+	if [ -f "$MODROOT/kernel/fs/ceph/ceph.ko" ] 
+	then
+		if  ! [ -f "$MODROOT/kernel/fs/ceph/ceph.ko.dpkg-divert-by-ceph-dkms" ]
+		then
+			dpkg-divert --rename --package ceph-dkms --divert "$MODROOT/kernel/fs/ceph/ceph.ko.dpkg-divert-by-ceph-dkms" --add "$MODROOT/kernel/fs/ceph/ceph.ko"
+		else
+			echo "Warning: $MODROOT/kernel/fs/ceph/ceph.ko  and diverted $MODROOT/kernel/fs/ceph/ceph.ko.dpkg-divert-by-ceph-dkms exist both!"
+		fi
+	fi
+else 
+	echo "Warning: $MODROOT is not a directory"
+fi