* Add support to avoid running preinst scripts and always ignore the bash preinst which does not respect DEBIAN_FRONTEND=noninteractive * fix handling of omitrequired and configsh when empty * add force-yes when using noauth * split the package list even if using only spaces, not commas
git-svn-id: http://emdebian.org/svn/current@7117 563faec7-e20c-0410-992a-a66f704d0ccd
This commit is contained in:
parent
63b4d7c04b
commit
e539d3965c
2 changed files with 37 additions and 14 deletions
11
debian/changelog
vendored
11
debian/changelog
vendored
|
@ -1,3 +1,14 @@
|
||||||
|
multistrap (2.1.2) experimental; urgency=low
|
||||||
|
|
||||||
|
* Add support to avoid running preinst scripts and
|
||||||
|
always ignore the bash preinst which does not respect
|
||||||
|
DEBIAN_FRONTEND=noninteractive
|
||||||
|
* fix handling of omitrequired and configsh when empty
|
||||||
|
* add force-yes when using noauth
|
||||||
|
* split the package list even if using only spaces, not commas
|
||||||
|
|
||||||
|
-- Neil Williams <codehelp@debian.org> Tue, 20 Apr 2010 16:46:49 +0100
|
||||||
|
|
||||||
multistrap (2.1.1) experimental; urgency=low
|
multistrap (2.1.1) experimental; urgency=low
|
||||||
|
|
||||||
* Add --simulate mode for cascading configuration testing.
|
* Add --simulate mode for cascading configuration testing.
|
||||||
|
|
40
multistrap
40
multistrap
|
@ -31,7 +31,7 @@ use vars qw/ $progname $ourversion $dstrap $extra @aptsources $mirror
|
||||||
$component $repo @dirs @touch %sources $section %keys $host $key $value
|
$component $repo @dirs @touch %sources $section %keys $host $key $value
|
||||||
$type $file $config $tidy $noauth $keyring %keyrings $deflist $cfgdir
|
$type $file $config $tidy $noauth $keyring %keyrings $deflist $cfgdir
|
||||||
@extrapkgs @includes %source $setupsh $configsh $omitrequired $dryrun
|
@extrapkgs @includes %source $setupsh $configsh $omitrequired $dryrun
|
||||||
/;
|
$omitpreinst /;
|
||||||
|
|
||||||
setlocale(LC_MESSAGES, "");
|
setlocale(LC_MESSAGES, "");
|
||||||
textdomain("multistrap");
|
textdomain("multistrap");
|
||||||
|
@ -141,9 +141,10 @@ $dpkgdir = "var/lib/dpkg/"; # state
|
||||||
|
|
||||||
if (not -d "$dir")
|
if (not -d "$dir")
|
||||||
{
|
{
|
||||||
my $ret = mkdir ("$dir");
|
my $ret = system ("mkdir -p $dir");
|
||||||
|
$ret /= 256 if (defined $ret);
|
||||||
die ("Unable to create directory '$dir' $!\n")
|
die ("Unable to create directory '$dir' $!\n")
|
||||||
if ($ret == 0);
|
if ($ret != 0);
|
||||||
}
|
}
|
||||||
$dir = `realpath $dir`;
|
$dir = `realpath $dir`;
|
||||||
chomp ($dir);
|
chomp ($dir);
|
||||||
|
@ -296,7 +297,7 @@ die (sprintf (_g("apt update failed. Exit value: %d\n"), ($retval/256)))
|
||||||
if ($retval != 0);
|
if ($retval != 0);
|
||||||
my @s = ();
|
my @s = ();
|
||||||
$str = "";
|
$str = "";
|
||||||
if (not defined $omitrequired)
|
if ((defined $omitrequired) and ($omitrequired eq "false"))
|
||||||
{
|
{
|
||||||
print "Calculating required packages.\n";
|
print "Calculating required packages.\n";
|
||||||
my $required = &get_required_debs;
|
my $required = &get_required_debs;
|
||||||
|
@ -312,9 +313,12 @@ foreach my $sect (sort keys %packages)
|
||||||
foreach my $pkg (@list)
|
foreach my $pkg (@list)
|
||||||
{
|
{
|
||||||
next if ($packages{$pkg} =~ /^\s*$/);
|
next if ($packages{$pkg} =~ /^\s*$/);
|
||||||
# remove a duplicate from required list.
|
my @long=split (/ /, $packages{$sect});
|
||||||
$str =~ s/$packages{$pkg}//;
|
foreach my $l (@long)
|
||||||
$str .= "$packages{$pkg}/$suites{$sect} ";
|
{
|
||||||
|
chomp ($l);
|
||||||
|
$str .= " $l/$suites{$sect}" if ((defined $l) and ($l !~ /^\s*$/));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
chomp($str);
|
chomp($str);
|
||||||
|
@ -327,13 +331,15 @@ foreach my $a (@s)
|
||||||
$uniq{$a}++;
|
$uniq{$a}++;
|
||||||
}
|
}
|
||||||
$str = join (' ', sort keys %uniq);
|
$str = join (' ', sort keys %uniq);
|
||||||
print "apt-get -y $config_str install $str\n";
|
my $forceyes="";
|
||||||
|
$forceyes="--force-yes" if (defined $noauth);
|
||||||
|
print "apt-get $forceyes -y $config_str install $str\n";
|
||||||
$retval = system ("apt-get -y $config_str install $str");
|
$retval = system ("apt-get -y $config_str install $str");
|
||||||
die (sprintf (_g("apt download failed. Exit value: %d\n"),($retval/256)))
|
die (sprintf (_g("apt download failed. Exit value: %d\n"),($retval/256)))
|
||||||
if ($retval != 0);
|
if ($retval != 0);
|
||||||
system ("$setupsh") if (defined $setupsh);
|
system ("$setupsh") if (defined $setupsh);
|
||||||
&force_unpack if ($unpack eq "true");
|
&force_unpack if ($unpack eq "true");
|
||||||
system ("cp $configsh $dir/") if (defined $configsh);
|
system ("cp $configsh $dir/") if ((defined $configsh) and (-f "$configsh"));
|
||||||
system ("touch ${dir}${libdir}lists/lock");
|
system ("touch ${dir}${libdir}lists/lock");
|
||||||
&native if (not defined ($foreign));
|
&native if (not defined ($foreign));
|
||||||
&add_extra_packages;
|
&add_extra_packages;
|
||||||
|
@ -585,7 +591,7 @@ sub check_bin_sh
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
die ("No shell.");
|
die ("No shell in $dir.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -648,8 +654,10 @@ sub native
|
||||||
opendir (PRI, "${dir}/var/lib/dpkg/info") or return;
|
opendir (PRI, "${dir}/var/lib/dpkg/info") or return;
|
||||||
my @preinsts=grep(/\.preinst$/, readdir PRI);
|
my @preinsts=grep(/\.preinst$/, readdir PRI);
|
||||||
closedir (PRI);
|
closedir (PRI);
|
||||||
|
printf (_g("I: Running preinst scripts with 'upgrade' argument.\n"));
|
||||||
foreach my $script (sort @preinsts)
|
foreach my $script (sort @preinsts)
|
||||||
{
|
{
|
||||||
|
next if ($script =~ /bash/);
|
||||||
system ("$str $env chroot $dir /var/lib/dpkg/info/$script upgrade");
|
system ("$str $env chroot $dir /var/lib/dpkg/info/$script upgrade");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -817,19 +825,23 @@ sub cascade
|
||||||
and (not defined $unpack));
|
and (not defined $unpack));
|
||||||
$configsh = lc($keys{$section}{'configscript'})
|
$configsh = lc($keys{$section}{'configscript'})
|
||||||
if (defined $keys{$section}{'configscript'}
|
if (defined $keys{$section}{'configscript'}
|
||||||
and (not defined $configsh) and (-x $configsh));
|
and (not defined $configsh));
|
||||||
|
undef $configsh if ((defined $configsh) and (-x $configsh));
|
||||||
$setupsh = lc($keys{$section}{'setupscript'})
|
$setupsh = lc($keys{$section}{'setupscript'})
|
||||||
if (defined $keys{$section}{'setupscript'}
|
if (defined $keys{$section}{'setupscript'}
|
||||||
and (not defined $setupsh) and (-x $setupsh));
|
and (not defined $setupsh));
|
||||||
|
undef $setupsh if ((defined $setupsh) and (-x $setupsh));
|
||||||
$omitrequired = lc($keys{$section}{'omitrequired'})
|
$omitrequired = lc($keys{$section}{'omitrequired'})
|
||||||
if (defined $keys{$section}{'omitrequired'}
|
if (defined $keys{$section}{'omitrequired'}
|
||||||
and (not defined $omitrequired));
|
and (not defined $omitrequired));
|
||||||
|
$omitpreinst = lc($keys{$section}{'omitpreinst'})
|
||||||
|
if (defined $keys{$section}{'omitpreinst'}
|
||||||
|
and (not defined $omitpreinst));
|
||||||
$tidy++ if ((defined $keys{$section}{'cleanup'}) and
|
$tidy++ if ((defined $keys{$section}{'cleanup'}) and
|
||||||
($keys{$section}{'cleanup'} eq "true") and
|
($keys{$section}{'cleanup'} eq "true") and
|
||||||
(defined $tidy));
|
(defined $tidy));
|
||||||
$noauth++ if ((defined $keys{$section}{'noauth'}) and
|
$noauth++ if ((defined $keys{$section}{'noauth'}) and
|
||||||
($keys{$section}{'noauth'} eq "true") and
|
($keys{$section}{'noauth'} eq "true"));
|
||||||
(defined $noauth));
|
|
||||||
$sourcedir = $keys{$section}{'retainsources'} if
|
$sourcedir = $keys{$section}{'retainsources'} if
|
||||||
((defined $keys{$section}{'retainsources'}) and
|
((defined $keys{$section}{'retainsources'}) and
|
||||||
(-d $keys{$section}{'retainsources'}));
|
(-d $keys{$section}{'retainsources'}));
|
||||||
|
|
Loading…
Reference in a new issue