diff options
author | Michael Schroeder <mls@suse.de> | 2012-10-30 13:37:26 +0100 |
---|---|---|
committer | Michael Schroeder <mls@suse.de> | 2012-10-30 13:37:26 +0100 |
commit | 3975c20dfee6a788edce86570acd415d36a5d77f (patch) | |
tree | 905270abc09b257f3122371343d9f383d59b4f70 | |
parent | f83e273bca0b64b145d1633a300376a7c6b10f0a (diff) | |
download | build-3975c20dfee6a788edce86570acd415d36a5d77f.tar.gz build-3975c20dfee6a788edce86570acd415d36a5d77f.tar.bz2 build-3975c20dfee6a788edce86570acd415d36a5d77f.zip |
implement "empty keep" mode for gcc developersupstream/20120927upstream
-rw-r--r-- | Build.pm | 16 |
1 files changed, 12 insertions, 4 deletions
@@ -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{$_}; } |