[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [kdesrc-build] modules/ksb: resolver: Allow cmdline selectors producing >1 module.
From: Michael Pyne <mpyne () kde ! org>
Date: 2015-08-15 21:45:36
Message-ID: E1ZQjGi-0006xV-Lr () scm ! kde ! org
[Download RAW message or body]
Git commit 8f342c8211620202d4ea65a6981e4d0549e91c28 by Michael Pyne.
Committed on 15/08/2015 at 21:44.
Pushed by mpyne into branch 'master'.
resolver: Allow cmdline selectors producing >1 module.
Call it a "demand-paged feature"... at least I documented that this was
sub-optimal up to this point. ;)
BUG:351310
FIXED-IN:15.08
M +18 -7 modules/ksb/ModuleResolver.pm
http://commits.kde.org/kdesrc-build/8f342c8211620202d4ea65a6981e4d0549e91c28
diff --git a/modules/ksb/ModuleResolver.pm b/modules/ksb/ModuleResolver.pm
index 351ec0a..6d52d31 100644
--- a/modules/ksb/ModuleResolver.pm
+++ b/modules/ksb/ModuleResolver.pm
@@ -258,31 +258,42 @@ sub _resolveGuessedModules
$self->_expandAllUnexpandedModuleSets();
+ my @results;
+
+ # We use foreach since we *want* to be able to replace the iterated variable
+ # if we find an existing module.
for my $guessedModule (@modules)
{
- next if !$guessedModule->getOption('#guessed-kde-project', 'module');
+ if (!$guessedModule->getOption('#guessed-kde-project', 'module')) {
+ push @results, $guessedModule;
+ next;
+ }
# If the module we want could be found from within our rc-file
# module-sets (even implicitly), use it. Otherwise assume
# kde-projects and evaluate now.
if (exists $lookupTableRef->{$guessedModule->name()}) {
$guessedModule = $lookupTableRef->{$guessedModule->name()};
+ push @results, $guessedModule;
}
else {
my $set = ksb::ModuleSet::KDEProjects->new($ctx, "guessed_from_cmdline");
$set->setModulesToFind($guessedModule->name());
- my @results = $self->expandModuleSets($set);
+ my @setResults = $self->expandModuleSets($set);
my $searchItem = $guessedModule->name();
- $guessedModule = first { $_->name() eq $searchItem } @results;
- if (!$guessedModule) {
- # This is a misfeature, I know. This should support whole sets too.
- croak_runtime ("$searchItem doesn't match a single module, it matches many.");
+ if (!@setResults) {
+ croak_runtime ("$searchItem doesn't match any modules.");
}
+
+ my $foundModule = first { $_->name() eq $searchItem } @setResults;
+ $guessedModule = $foundModule if $foundModule;
+
+ push @results, @setResults;
}
}
- return @modules;
+ return @results;
}
# Resolves already-stored module selectors into ksb::Modules, based on
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic