diff options
| author | Manuel Traut <manut@mecka.net> | 2011-04-29 09:09:27 +0200 |
|---|---|---|
| committer | Manuel Traut <manut@mecka.net> | 2011-04-29 09:09:27 +0200 |
| commit | 5238ad5a0c4a9e1c8cd036f5de4055e39bd71297 (patch) | |
| tree | 4407c087b9fb5432b1dc11e70b52dacfa0b99feb /beagle/debian-rfs/usr/share/debconf/transition_db.pl | |
| parent | 60ead65c41afba7e6aa4bbcf507a1d52f7a8fe9f (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-x | beagle/debian-rfs/usr/share/debconf/transition_db.pl | 90 |
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"; +} |
