From 1954e6cfb8b058a95e774a198431721204d8eaa6 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 21 Aug 2009 17:19:18 -0400 Subject: dh_installudev transition * dh_installudev: Install rules files into new location /lib/udev/rules.d/ * dh_installudev: Add code to delete old conffiles unless they're modified, and in that case, rename them to override the corresponding file in /lib/udev. (Based on patch by Martin Pitt.) (Note that this file will not be deleted on purge -- I can't see a good way to determine when it's appropriate to do that.) * dh_installudev: Set default priority to 60; dropping the "z". If --priority=zNN is passed, treat that as priority NN. * Above Closes: #491117 * dh_installudev: Drop code handling move of /etc/udev/foo into /etc/udev/rules.d/. --- dh_installudev | 37 ++++++++++++++++++++++++++----------- 1 file changed, 26 insertions(+), 11 deletions(-) (limited to 'dh_installudev') diff --git a/dh_installudev b/dh_installudev index 243dc732..0d38cf56 100755 --- a/dh_installudev +++ b/dh_installudev @@ -20,7 +20,7 @@ dh_installudev is a debhelper program that is responsible for installing udev rules files. Files named debian/package.udev will be installed in -etc/udev/rules.d/ in the package build directory. +lib/udev/rules.d/ in the package build directory. Code is added to the preinst and postinst to handle the upgrade from the old udev rules file location. @@ -37,7 +37,7 @@ debian/package.udev. =item B<--priority=>I -Sets the priority string of the rules.d symlink. Default is z60. +Sets the priority string of the rules.d symlink. Default is 60. =item B<-n>, B<--noscripts> @@ -55,11 +55,23 @@ instances of the same text to be added to maintainer scripts. init(); +# The priority used to look like z60_; +# we need to calculate that old value to handle +# conffile moves correctly. +my $old_priority=$dh{PRIORITY}; + +# In case a caller still uses the `z` prefix, remove it. +if (defined $dh{PRIORITY}) { + $dh{PRIORITY}=~s/^z//; +} + if (! defined $dh{PRIORITY}) { - $dh{PRIORITY}="z60"; + $dh{PRIORITY}="60"; + $old_priority="z60"; } if ($dh{PRIORITY}) { - $dh{PRIORITY}.="_"; + $dh{PRIORITY}.="-"; + $old_priority.="_"; } foreach my $package (@{$dh{DOPACKAGES}}) { @@ -72,16 +84,19 @@ foreach my $package (@{$dh{DOPACKAGES}}) { $filename=~s/\.udev$/.rules/; if ($rules_file) { - if (! -e "$tmp/etc/udev/rules.d") { - doit("install","-d","$tmp/etc/udev/rules.d"); + if (! -e "$tmp/lib/udev/rules.d") { + doit("install","-d","$tmp/lib/udev/rules.d"); } - doit("install","-m","0644",$rules_file,"$tmp/etc/udev/rules.d/$dh{PRIORITY}$filename"); + my $rule="/lib/udev/rules.d/$dh{PRIORITY}$filename"; + doit("install","-m","0644",$rules_file,$tmp.$rule); if (! $dh{NOSCRIPTS}) { - my $old="/etc/udev/$filename"; - my $rule="/etc/udev/rules.d/$dh{PRIORITY}$filename"; - autoscript($package,"preinst","preinst-moveconffile","s!#OLD#!$old!g;s!#PACKAGE#!$package!g"); + # Remove old rule from /etc, unless it's modified, + # in which case we rename it to match the new + # file in /lib, so it will override. + my $old="/etc/udev/rules.d/$old_priority$filename"; + $rule=~s/^\/lib/\/etc/; + autoscript($package,"preinst","preinst-moveconffile","s!#OLD#!$old!g;s!#NEW#!$rule!g;s!#PACKAGE#!$package!g"); autoscript($package,"postinst","postinst-moveconffile","s!#OLD#!$old!g;s!#NEW#!$rule!g"); - autoscript($package,"preinst","preinst-udev","s!#RULE#!$rule!g"); } } } -- cgit v1.2.3