On Fri, Mar 09, 2012 at 04:15:22PM +0100, Raphael Hertzog wrote:
> To be fully multi-arch compliant, you should in theory use
> "${binary:Package}" instead of ${Package}. That way multi-arch: same
> package will be arch-qualified.Fair enough. Amended patch attached. Thanks, -- Colin Watson [[email protected]]
>From fd822639c3cb49fe1f0d7fe004834c27e02dba8a Mon Sep 17 00:00:00 2001 From: Colin Watson <[email protected]> Date: Fri, 9 Mar 2012 14:32:07 +0000 Subject: [PATCH 3/3] Process any newly pending triggers after running maintainer scripts --- dpkg-reconfigure | 39 +++++++++++++++++++++++++++++++++++++++ 1 files changed, 39 insertions(+), 0 deletions(-) diff --git a/dpkg-reconfigure b/dpkg-reconfigure index daa7bee..4bb1525 100755 --- a/dpkg-reconfigure +++ b/dpkg-reconfigure @@ -159,6 +159,8 @@ else { # hysterical raisens. $ENV{DEBCONF_RECONFIGURE}=1; +my %initial_triggers=map { $_ => 1 } triggers_pending(); + foreach my $pkg (@packages) { # Set default title. $frontend->default_title($pkg); @@ -255,6 +257,23 @@ foreach my $pkg (@packages) { } } +# Maintainer scripts may have activated triggers. If so, try to process +# them. +my @new_triggers; +do { + @new_triggers=(); + foreach my $trigpend (triggers_pending()) { + push @new_triggers, $trigpend + if not exists $initial_triggers{$trigpend}; + } + if (@new_triggers) { + my $ret=system("dpkg", "--configure", @new_triggers); + if (int($ret / 256) != 0) { + exit int($ret / 256); + } + } +} while (@new_triggers); + $frontend->shutdown; Debconf::Db->save; @@ -275,6 +294,26 @@ sub allpackages { return sort @ret; } +# Returns a list of all packages with pending triggers. +sub triggers_pending { + my @ret; + local $_; + + open (QUERY, '-|', 'dpkg-query', '-W', + '-f', '${Package} ${binary:Package}\t${Triggers-Pending}\n'); + while (<QUERY>) { + my ($pkgnames, $triggers) = split /\t/; + if (length $triggers) { + # Handle multiarch. + my ($pkg, $binpkg) = split ' ', $pkgnames; + push @ret, (length $binpkg ? $binpkg : $pkg); + } + } + close QUERY; + + return @ret; +} + =head1 AUTHOR Joey Hess <[email protected]> -- 1.7.9.1

