summaryrefslogtreecommitdiff
path: root/beagle/debian-rfs/usr/share/debconf/transition_db.pl
diff options
context:
space:
mode:
authorManuel Traut <manut@mecka.net>2011-04-29 09:09:27 +0200
committerManuel Traut <manut@mecka.net>2011-04-29 09:09:27 +0200
commit5238ad5a0c4a9e1c8cd036f5de4055e39bd71297 (patch)
tree4407c087b9fb5432b1dc11e70b52dacfa0b99feb /beagle/debian-rfs/usr/share/debconf/transition_db.pl
parent60ead65c41afba7e6aa4bbcf507a1d52f7a8fe9f (diff)
added debootstrap stuff
Signed-off-by: Manuel Traut <manut@mecka.net>
Diffstat (limited to 'beagle/debian-rfs/usr/share/debconf/transition_db.pl')
-rwxr-xr-xbeagle/debian-rfs/usr/share/debconf/transition_db.pl90
1 files changed, 90 insertions, 0 deletions
diff --git a/beagle/debian-rfs/usr/share/debconf/transition_db.pl b/beagle/debian-rfs/usr/share/debconf/transition_db.pl
new file mode 100755
index 0000000..bb4daa5
--- /dev/null
+++ b/beagle/debian-rfs/usr/share/debconf/transition_db.pl
@@ -0,0 +1,90 @@
+#!/usr/bin/perl -w
+# This file was preprocessed, do not edit!
+use strict;
+use Debconf::Db;
+use Debconf::Question;
+use Debconf::Template;
+
+my $dir = shift || '/var/lib/debconf';
+
+Debconf::Db->load;
+
+our %questions;
+our %templates;
+
+foreach my $thing (qw(templates debconf)) {
+ if (-e "$dir/$thing.db") {
+ eval qq{require "$dir/$thing.db"};
+ print STDERR $@ if $@;
+ }
+ else {
+ print STDERR "Skipping $dir/$thing.db: DNE\n";
+ }
+}
+
+foreach my $t (keys %templates) {
+ $templates{$t}->{_name}=$t;
+}
+
+my $skipped=0;
+
+foreach my $item (keys %questions) {
+ my @owners=grep { $_ ne '' } keys %{$questions{$item}->{owners}};
+ delete $questions{$item}, next unless @owners;
+
+ next unless defined $questions{$item}->{template}->{_name};
+
+ my $tname=$questions{$item}->{template}->{_name};
+ $skipped++, next unless defined $tname;
+ my $type=$templates{$tname}->{type};
+ my $question=Debconf::Question->new($item, pop(@owners), $type);
+ $question->addowner($_, '') foreach @owners;
+}
+
+my %seen_templates;
+foreach my $item (keys %questions) {
+ my $question=Debconf::Question->get($item);
+ my $tname=$questions{$item}->{template}->{_name};
+ $skipped++, next unless defined $tname;
+ my $template=Debconf::Template->get($tname);
+ unless (defined $template) {
+ $template=Debconf::Template->new($tname, $item, $templates{$tname}->{type});
+ }
+ unless ($seen_templates{$template}) {
+ $template->clearall;
+ foreach my $field (keys %{$templates{$tname}}) {
+ next if $field=~/^_name/; # except this one we added above.
+ $template->$field($templates{$tname}->{$field});
+ }
+ }
+
+
+ if (exists $questions{$item}->{flag_isdefault}) {
+ if ($questions{$item}->{flag_isdefault} eq 'false') {
+ $question->flag('seen', 'true');
+ }
+ delete $questions{$item}->{flag_isdefault};
+ }
+ foreach my $flag (grep /^flag_/, keys %{$questions{$item}}) {
+ if ($questions{$item}->{$flag} eq 'true') {
+ $flag=~s/^flag_//;
+ $question->flag($flag, 'true');
+ }
+ }
+ foreach my $var (keys %{$questions{$item}->{variables}}) {
+ $question->variable($var,
+ $questions{$item}->{variables}->{$var});
+ }
+ if (exists $questions{$item}->{value}
+ and defined $questions{$item}->{value}) {
+ $question->value($questions{$item}->{value});
+ }
+
+ $question->template($questions{$item}->{template}->{_name});
+}
+
+Debconf::Db->save;
+
+if ($skipped) {
+ print STDERR "While upgrading the debconf database, $skipped corrupt items were skipped.\n";
+}