tag 369479 + patch
thanks

Hi,

you will find attached a proposed implementation for handling
sarge->etch upgrades with udev using debconf.

Cheers,
-- 
 .''`.           Josselin Mouette        /\./\
: :' :           [EMAIL PROTECTED]
`. `'                        [EMAIL PROTECTED]
  `-  Debian GNU/Linux -- The power of freedom
diff -u udev-0.100/debian/rules udev-0.100/debian/rules
--- udev-0.100/debian/rules
+++ udev-0.100/debian/rules
@@ -66,6 +66,7 @@
 
 clean:
 	$(MAKE) -f debian/sys-build.mk source.clean
+	debconf-updatepo
 	dh_clean
 
 build: $(STAMP_DIR)/build
@@ -161,6 +162,7 @@
 		extra/udev.vim extra/udevtest-all
 	cp $B/etc/udev/gentoo/udev.rules $(UEX)/gentoo.rules
 	cp -a $B/etc/udev/suse/ $B/etc/udev/redhat/ $(UEX)/
+	dh_installdebconf
 	dh_installinit --no-start --update-rcd-params='start 03 S .'
 	dh_installinit --no-start --update-rcd-params='start 36 S .' \
 		--name=udev-mtab 
diff -u udev-0.100/debian/control udev-0.100/debian/control
--- udev-0.100/debian/control
+++ udev-0.100/debian/control
@@ -2,7 +2,7 @@
 Section: admin
 Priority: important
 Maintainer: Marco d'Itri <[EMAIL PROTECTED]>
-Build-Depends: debhelper (>> 4.2), bzip2, libselinux1-dev (>= 1.28-1)
+Build-Depends: debhelper (>> 4.2), bzip2, libselinux1-dev (>= 1.28-1), po-debconf
 Standards-Version: 3.7.2.0
 
 Package: udev
diff -u udev-0.100/debian/changelog udev-0.100/debian/changelog
--- udev-0.100/debian/changelog
+++ udev-0.100/debian/changelog
@@ -1,3 +1,15 @@
+udev (0.100-2.1) unstable; urgency=low
+
+  * Non-maintainer upload.
+  * udev.{templates,preinst}, rules: use debconf for prompting the user
+    about the upgrade from an incompatible kernel version. When a
+    suitable kernel is already installed or installing, only ask for
+    reboot. Otherwise, the user has to force the upgrade. (Closes: #369479)
+  * udev.postinst: include confmodule, even if it isn't really used.
+  * control: depend on po-debconf.
+
+ -- Josselin Mouette <[EMAIL PROTECTED]>  Sun,  1 Oct 2006 16:47:15 +0200
+
 udev (0.100-2) unstable; urgency=high
 
   * More fixes for SELinux support. (Closes: #387051)
diff -u udev-0.100/debian/udev.postinst udev-0.100/debian/udev.postinst
--- udev-0.100/debian/udev.postinst
+++ udev-0.100/debian/udev.postinst
@@ -1,5 +1,7 @@
 #!/bin/sh -e
 
+. /usr/share/debconf/confmodule
+
 make_extra_nodes() {
   if [ "$(echo /lib/udev/devices/*)" != "/lib/udev/devices/*" ]; then
     cp --archive --update /lib/udev/devices/* /$1/
diff -u udev-0.100/debian/udev.preinst udev-0.100/debian/udev.preinst
--- udev-0.100/debian/udev.preinst
+++ udev-0.100/debian/udev.preinst
@@ -1,18 +1,40 @@
 #!/bin/sh -e
 
+# Hack to get the dpkg process' PID despite using debconf
+if [ -z "$PARENT_PID" ]; then
+  PARENT_PID=$PPID
+  export PARENT_PID
+fi
+. /usr/share/debconf/confmodule
+
 supported_kernel() {
-  case "$(uname -r)" in
+  case "$1" in
     2.[012345].*|2.6.[0-9]|2.6.[0-9][!0-9]*) return 1 ;;
     2.6.1[0-4]|2.6.1[0-4][!0-9]*) return 1 ;;
   esac
   return 0
 }
 
+check_installed_kernel() {
+  for ver in `ls /lib/modules`; do
+    supported_kernel "$ver" && return 0
+  done
+  return 1
+}
+
+check_installing_kernel() {
+  for pkg in `ps hp $PARENT_PID -o args`; do
+    ver=$(echo $pkg | sed -nr "s/^.*linux-image-(2\.6\.[0-9]+)-[0-9]+-.*_.*_.*\.deb$/\1/p")
+    test -n "$ver" && supported_kernel "$ver" && return 0
+  done
+  return 1
+}
+
 check_kernel_version() {
   # skip the check if udev is not already active
   [ -d /dev/.udev/ ] || return 0
 
-  supported_kernel && return
+  supported_kernel "$(uname -r)" && return
 
   if [ -e /etc/udev/kernel-upgrade ]; then
     echo "This version of udev requires a kernel >= 2.6.15, but the upgrade was forced."
@@ -20,29 +42,29 @@
     /sbin/udevd -d || true
     return 0
   fi
+  
+  db_title Upgrading udev
 
-cat <<ERR
-
-*****************************************************************************
-
-This version of udev requires a kernel >= 2.6.15, upgrade aborted.
-
-You can upgrade the kernel at the same time by creating the file
-/etc/udev/kernel-upgrade and then trying again, e.g.:
-
-# touch /etc/udev/kernel-upgrade
-# apt-get install udev initramfs-tools linux-image-2.6-k7-smp
-
-After upgrading udev this way you should reboot as soon as possible.
-
-If you will reboot before the new kernel will have been properly
-installed then udev will not be started, possibly breaking the system
-or even making it unbootable!
-
-*****************************************************************************
-
-ERR
+  if check_installed_kernel || check_installing_kernel; then
+    db_fset udev/reboot_needed seen false
+    db_input high udev/reboot_needed || true
+    db_go
+    db_stop
+    echo "A reboot is needed, but proceeding with the upgrade."
+    return 0
+  fi
 
+  db_fset udev/new_kernel_needed seen false
+  db_reset udev/new_kernel_needed
+  db_input critical udev/new_kernel_needed || true
+  db_go
+  db_get udev/new_kernel_needed
+  if [ "$RET" = true ]; then
+    db_stop
+    echo "This version of udev requires a kernel >= 2.6.15, but the upgrade was forced."
+    return 0
+  fi
+  db_stop
   exit 1
 }
 
only in patch2:
unchanged:
--- udev-0.100.orig/debian/po/templates.pot
+++ udev-0.100/debian/po/templates.pot
@@ -0,0 +1,65 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <[EMAIL PROTECTED]>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: [EMAIL PROTECTED]"
+"POT-Creation-Date: 2006-10-01 14:51+0200\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <[EMAIL PROTECTED]>\n"
+"Language-Team: LANGUAGE <[EMAIL PROTECTED]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: note
+#. Description
+#: ../udev.templates:1001
+msgid "Reboot needed after this upgrade"
+msgstr ""
+
+#. Type: note
+#. Description
+#: ../udev.templates:1001
+msgid ""
+"You are currently upgrading udev using an incompatible kernel version. A "
+"compatible version is installed or being installed on your system, but  you "
+"need to reboot using this new kernel as soon as the upgrade is  complete."
+msgstr ""
+
+#. Type: note
+#. Description
+#: ../udev.templates:1001
+msgid ""
+"Without a reboot with this new kernel version, your system may become  "
+"UNUSABLE."
+msgstr ""
+
+#. Type: boolean
+#. Description
+#: ../udev.templates:2001
+msgid "Proceed with the upgrade nevertheless?"
+msgstr ""
+
+#. Type: boolean
+#. Description
+#: ../udev.templates:2001
+msgid ""
+"You are currently upgrading udev using an incompatible kernel version. You "
+"MUST install a compatible kernel version (2.6.15 or more) before proceeding "
+"with the upgrade, otherwise your system may become UNUSABLE. Packages with a "
+"name starting with \"linux-image-2.6-\" provide a kernel image usable with "
+"this new udev version."
+msgstr ""
+
+#. Type: boolean
+#. Description
+#: ../udev.templates:2001
+msgid ""
+"If you choose to upgrade udev nevertheless, you should install a  compatible "
+"kernel and reboot on it as soon as possible. You have been  warned."
+msgstr ""
only in patch2:
unchanged:
--- udev-0.100.orig/debian/po/POTFILES.in
+++ udev-0.100/debian/po/POTFILES.in
@@ -0,0 +1,2 @@
+[type: gettext/rfc822deb] udev.templates
+
only in patch2:
unchanged:
--- udev-0.100.orig/debian/udev.templates
+++ udev-0.100/debian/udev.templates
@@ -0,0 +1,24 @@
+Template: udev/reboot_needed
+Type: note
+_Description: Reboot needed after this upgrade
+ You are currently upgrading udev using an incompatible kernel version. A
+ compatible version is installed or being installed on your system, but 
+ you need to reboot using this new kernel as soon as the upgrade is 
+ complete.
+ .
+ Without a reboot with this new kernel version, your system may become 
+ UNUSABLE.
+
+Template: udev/new_kernel_needed
+Type: boolean
+Default: false
+_Description: Proceed with the upgrade nevertheless?
+ You are currently upgrading udev using an incompatible kernel version.
+ You MUST install a compatible kernel version (2.6.15 or more) before
+ proceeding with the upgrade, otherwise your system may become UNUSABLE.
+ Packages with a name starting with "linux-image-2.6-" provide a kernel
+ image usable with this new udev version.
+ .
+ If you choose to upgrade udev nevertheless, you should install a 
+ compatible kernel and reboot on it as soon as possible. You have been 
+ warned.

Attachment: signature.asc
Description: Ceci est une partie de message numériquement signée

Reply via email to