summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Schroeder <mls@suse.de>2012-10-30 13:37:26 +0100
committerMichael Schroeder <mls@suse.de>2012-10-30 13:37:26 +0100
commit3975c20dfee6a788edce86570acd415d36a5d77f (patch)
tree905270abc09b257f3122371343d9f383d59b4f70
parentf83e273bca0b64b145d1633a300376a7c6b10f0a (diff)
downloadbuild-3975c20dfee6a788edce86570acd415d36a5d77f.tar.gz
build-3975c20dfee6a788edce86570acd415d36a5d77f.tar.bz2
build-3975c20dfee6a788edce86570acd415d36a5d77f.zip
implement "empty keep" mode for gcc developersupstream/20120927upstream
-rw-r--r--Build.pm16
1 files changed, 12 insertions, 4 deletions
diff --git a/Build.pm b/Build.pm
index 1f8254d..55f55f5 100644
--- a/Build.pm
+++ b/Build.pm
@@ -390,15 +390,22 @@ sub do_subst_vers {
sub get_build {
my ($config, $subpacks, @deps) = @_;
my @ndeps = grep {/^-/} @deps;
- my %keep = map {$_ => 1} (@deps, @{$config->{'keep'} || []}, @{$config->{'preinstall'}});
- for (@{$subpacks || []}) {
- push @ndeps, "-$_" unless $keep{$_};
+ my @support = @{$config->{'support'}};
+ if (@{$config->{'keep'} || []}) {
+ my %keep = map {$_ => 1} (@deps, @{$config->{'keep'} || []}, @{$config->{'preinstall'}});
+ for (@{$subpacks || []}) {
+ push @ndeps, "-$_" unless $keep{$_};
+ }
+ } else {
+ # new "empty keep" mode, filter subpacks from support
+ my %subpacks = map {$_ => 1} @{$subpacks || []};
+ @support = grep {!$subpacks{$_}} @support;
}
my %ndeps = map {$_ => 1} @ndeps;
@deps = grep {!$ndeps{$_}} @deps;
push @deps, @{$config->{'preinstall'}};
push @deps, @{$config->{'required'}};
- push @deps, @{$config->{'support'}};
+ push @deps, @support;
@deps = grep {!$ndeps{"-$_"}} @deps;
@deps = do_subst($config, @deps);
@deps = grep {!$ndeps{"-$_"}} @deps;
@@ -411,6 +418,7 @@ sub get_deps {
my ($config, $subpacks, @deps) = @_;
my @ndeps = grep {/^-/} @deps;
my %keep = map {$_ => 1} (@deps, @{$config->{'keep'} || []}, @{$config->{'preinstall'}});
+ %keep = () unless @{$config->{'keep'} || []};
for (@{$subpacks || []}) {
push @ndeps, "-$_" unless $keep{$_};
}