summaryrefslogtreecommitdiff
path: root/beagle/debian-rfs/usr/sbin/dpkg-preconfigure
diff options
context:
space:
mode:
Diffstat (limited to 'beagle/debian-rfs/usr/sbin/dpkg-preconfigure')
-rwxr-xr-xbeagle/debian-rfs/usr/sbin/dpkg-preconfigure147
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;
+
+