[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

[PATCH] xlibmesa-drm-src: divert original kernel modules out of the way



I'm experimenting with XFree86 4.3.0-0pre1v4 and I installed the xlibmesa-drm-src package to get OpenGL working on my Radeon. There's one problem though: dpkg complains loudly because the new DRM modules would overwrite the old kernel modules, so either one rebuilds his kernel without old DRM modules or he has to --force installation.

This patch solves the problem by diverting the old modules out of the way, to a directory called /lib/modules/$(KVERS)_diversions. It works for me, but it's really just a quick hack: for example, I preprocess the preinst and postrm scripts with sed instead of m4 because I know nothing about m4 and I couldn't get it to work. I hope the idea is fine though.

--
Ciao,
    Flavio Stanchina
    Trento - Italy

diff -urN xlibmesa-drm.orig/debian/changelog.m4 xlibmesa-drm/debian/changelog.m4
--- xlibmesa-drm.orig/debian/changelog.m4	2003-07-31 10:24:21.000000000 +0200
+++ xlibmesa-drm/debian/changelog.m4	2003-11-06 21:53:01.000000000 +0100
@@ -1,6 +1,7 @@
 xlibmesa-drm-module-KVERS (4.3.0-0pre1v1+KDREV) unstable; urgency=low
 
   * Built from xlibmesa-drm-src.
+    - Patched to divert original kernel modules out of the way.
 
  -- KMAINT <KEMAIL>  DEBDATE
 
diff -urN xlibmesa-drm.orig/debian/control.m4 xlibmesa-drm/debian/control.m4
--- xlibmesa-drm.orig/debian/control.m4	2003-07-31 10:24:21.000000000 +0200
+++ xlibmesa-drm/debian/control.m4	2003-11-06 22:00:46.000000000 +0100
@@ -1,3 +1,4 @@
+Source: xlibmesa-drm-module-KVERS
 Section: graphics
 Priority: extra
 Maintainer: KMAINT <KEMAIL>
diff -urN xlibmesa-drm.orig/debian/postrm.in xlibmesa-drm/debian/postrm.in
--- xlibmesa-drm.orig/debian/postrm.in	1970-01-01 01:00:00.000000000 +0100
+++ xlibmesa-drm/debian/postrm.in	2003-11-08 16:57:45.000000000 +0100
@@ -0,0 +1,33 @@
+#!/bin/sh
+
+set -e
+
+PACKAGE='xlibmesa-drm-module-@KVERS@'
+MODULES='gamma.o i810.o i830.o mga.o r128.o radeon.o tdfx.o'
+MODULE_DIR='/lib/modules/@KVERS@/kernel/drivers/char/drm'
+DIVERT_DIR='/lib/modules/@KVERS@_diversions'
+
+case "$1" in
+    remove)
+	for module in $MODULES; do
+	    dpkg-divert --remove --package $PACKAGE \
+		--divert "$DIVERT_DIR/$module" \
+		--rename "$MODULE_DIR/$module"
+	done
+
+	if [ -d "$DIVERT_DIR" ]; then
+		rmdir "$DIVERT_DIR" || true
+	fi
+    ;;
+
+    purge|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
+    ;;
+
+    *)
+        echo "postrm called with unknown argument \`$1'" >&2
+        exit 0
+    ;;
+esac
+
+#DEBHELPER#
+
diff -urN xlibmesa-drm.orig/debian/preinst.in xlibmesa-drm/debian/preinst.in
--- xlibmesa-drm.orig/debian/preinst.in	1970-01-01 01:00:00.000000000 +0100
+++ xlibmesa-drm/debian/preinst.in	2003-11-08 16:57:45.000000000 +0100
@@ -0,0 +1,36 @@
+#!/bin/sh
+
+set -e
+
+PACKAGE='xlibmesa-drm-module-@KVERS@'
+MODULES='gamma.o i810.o i830.o mga.o r128.o radeon.o tdfx.o'
+MODULE_DIR='/lib/modules/@KVERS@/kernel/drivers/char/drm'
+DIVERT_DIR='/lib/modules/@KVERS@_diversions'
+
+case "$1" in
+    install)
+	if [ ! -d "$DIVERT_DIR" ]; then
+		mkdir -p "$DIVERT_DIR" || true
+	fi
+
+	for module in $MODULES; do
+	    dpkg-divert --add --package $PACKAGE \
+		--divert "$DIVERT_DIR/$module" \
+		--rename "$MODULE_DIR/$module"
+	done
+    ;;
+
+    upgrade)
+    ;;
+
+    abort-upgrade)
+    ;;
+
+    *)
+        echo "preinst called with unknown argument \`$1'" >&2
+        exit 0
+    ;;
+esac
+
+#DEBHELPER#
+
diff -urN xlibmesa-drm.orig/debian/rules xlibmesa-drm/debian/rules
--- xlibmesa-drm.orig/debian/rules	2003-07-31 10:24:21.000000000 +0200
+++ xlibmesa-drm/debian/rules	2003-11-08 17:05:01.000000000 +0100
@@ -10,6 +10,12 @@
 M4 = m4
 M4DEFINES = -DKVERS="$(KVERS)" -DKSRC="$(KSRC)" -DKEMAIL="$(KEMAIL)" -DKMAINT="$(KMAINT)" -DKDREV="$(KDREV)" -DDEBDATE="$(shell date -R)"
 
+%: %.m4
+	$(M4) $(M4DEFINES) $< > $@
+
+%: %.in
+	sed -e 's/@KVERS@/$(KVERS)/g' $< > $@
+
 # We are called from make-kpkg through one of the targets kdist,
 # kdist_configure, kdist_changes or kdist_image
 # When called from make-kpkg we have available:
@@ -22,7 +28,7 @@
 MODULE_DIR = debian/tmp/lib/modules/$(KVERS)/kernel/drivers/char/drm/
 
 configure: configure-stamp
-configure-stamp: debian/control debian/changelog
+configure-stamp: debian/control debian/changelog debian/preinst debian/postrm
 	touch $@
 
 build: build-stamp
@@ -60,11 +66,11 @@
 
 kdist_clean: clean
 
-debian/control: debian/control.m4
-	$(M4) $(M4DEFINES) debian/control.m4 > $@
+debian/control   : debian/control.m4
+debian/changelog : debian/changelog.m4
 
-debian/changelog: debian/changelog.m4
-	$(M4) $(M4DEFINES) debian/changelog.m4 > $@
+debian/preinst   : debian/preinst.in
+debian/postrm    : debian/postrm.in
 
 .PHONY: build install configure
 

Reply to: