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/sbin/dpkg-preconfigure | |
| parent | 60ead65c41afba7e6aa4bbcf507a1d52f7a8fe9f (diff) | |
added debootstrap stuff
Signed-off-by: Manuel Traut <manut@mecka.net>
Diffstat (limited to 'beagle/debian-rfs/usr/sbin/dpkg-preconfigure')
| -rwxr-xr-x | beagle/debian-rfs/usr/sbin/dpkg-preconfigure | 147 |
1 files changed, 147 insertions, 0 deletions
diff --git a/beagle/debian-rfs/usr/sbin/dpkg-preconfigure b/beagle/debian-rfs/usr/sbin/dpkg-preconfigure new file mode 100755 index 0000000..0a86b9a --- /dev/null +++ b/beagle/debian-rfs/usr/sbin/dpkg-preconfigure @@ -0,0 +1,147 @@ +#!/usr/bin/perl -w +# This file was preprocessed, do not edit! + + + +BEGIN { + eval qq{ + use strict; + use FileHandle; + use Debconf::Log qw(:all); + use Debconf::Db; + use Debconf::Template; + use Debconf::Config; + use Debconf::AutoSelect qw(:all); + use Debconf::Gettext; + }; + if ($@) { + print STDERR "debconf: Perl may be unconfigured ($@) -- aborting\n"; + exit 0; + } +} + +Debconf::Db->load; + +my $apt=0; +Debconf::Config->getopt( +qq{Usage: dpkg-preconfigure [options] [debs] + --apt Apt mode.}, + "apt" => \$apt, +); + +$|=1; + +my @debs=@ARGV; +@ARGV=(); + +my $have_tty=1; + +if ($apt) { + while (<>) { + chomp; + push @debs, $_ if length $_; + } + + exit unless @debs; + + $have_tty=0 unless open (STDIN, "/dev/tty"); +} +elsif (! @debs) { + print STDERR sprintf("dpkg-preconfigure: ".gettext("must specify some debs to preconfigure")), "\n"; + exit(1); +} + +if (! -x "/usr/bin/apt-extracttemplates") { + warn gettext("delaying package configuration, since apt-utils is not installed"); + exit; +} + +my $frontend=make_frontend(); + +if (! $have_tty && $frontend->need_tty) { + print STDERR sprintf("dpkg-preconfigure: ".gettext("unable to re-open stdin: %s"), $!)."\n"; + exit 0; +} + +my ($package, $version, $template, $config); +unless (open(INFO, "-|")) { + my $command_max=20000; # LINUX SPECIFIC!! + my $static_len=length("apt-extracttemplates"); + my $len=$static_len; + my @collect; + if ($apt && @debs > 30) { + STDERR->autoflush(1); + } + foreach my $deb (@debs) { + $len += length($deb) + 1; + if ($len < $command_max && @collect < 30) { + push @collect, $deb; + } + else { + if (system("apt-extracttemplates", @collect) != 0) { + print STDERR sprintf("debconf: ".gettext("apt-extracttemplates failed: %s")."\n",$!); + } + if ($apt && @debs > 30) { + $progress += @collect; + printf STDERR "\r".gettext("Extracting templates from packages: %d%%"), $progress * 100 / @debs; + } + + @collect=($deb); + $len=$static_len + length($deb) + 1; + } + } + if (system("apt-extracttemplates", @collect) != 0) { + print STDERR sprintf("debconf: ".gettext("apt-extracttemplates failed: %s")."\n",$!); + } + if ($apt && @debs > 30) { + $progress += @collect; + printf STDERR "\r".gettext("Extracting templates from packages: %d%%")."\n", $progress * 100 / @debs; + } + exit; +} +my @buffer=<INFO>; +if ($apt && @buffer) { + print gettext("Preconfiguring packages ...\n"); +} +foreach my $line (@buffer) { + ($package, $version, $template, $config)=split /\s/, $line; + + if (defined $template && length $template) { + eval q{ + Debconf::Template->load($template, $package) + }; + unlink $template; + if ($@) { + print STDERR "$package ".sprintf(gettext("template parse error: %s"), $@)."\n"; + unlink $config; + next; + } + } +} + +foreach my $line (@buffer) { + ($package, $version, $template, $config)=split /\s/, $line; + + if (defined $config && length $config && -e $config) { + debug user => sprintf("preconfiguring %s (%s)",$package,$version); + chmod(0755, $config) or + die sprintf(gettext("debconf: can't chmod: %s"), $!); + $frontend->default_title($package); + $frontend->info(undef); + my $confmodule=make_confmodule($config, 'configure', $version); + $confmodule->owner($package); + 1 while ($confmodule->communicate); + if ($confmodule->exitcode > 0) { + print STDERR sprintf( + gettext("%s failed to preconfigure, with exit status %s"), + $package, $confmodule->exitcode)."\n"; + } + unlink $config; + } +} + +$frontend->shutdown; + +Debconf::Db->save; + + |
