From c52ba6771165a6de3457734aecd0854b809a9ba3 Mon Sep 17 00:00:00 2001 From: Thierry Vignaud Date: Tue, 20 Sep 2011 18:40:05 +0000 Subject: (compute_flags) fix slow matching of individual regexes for skipping dependencies by creating a large regex to match them all at once (mdv#61389, Shlomi Fish) --- URPM/Resolve.pm | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'URPM') diff --git a/URPM/Resolve.pm b/URPM/Resolve.pm index ecc7359..c93c914 100644 --- a/URPM/Resolve.pm +++ b/URPM/Resolve.pm @@ -1617,9 +1617,11 @@ sub compute_flags { #- now search packages which fullname match given regexps if (@regex) { - #- very costly :-( + my $large_re_s = join("|", map { "(?:$_)" } @regex); + my $re = qr/$large_re_s/; + foreach my $pkg (@{$urpm->{depslist}}) { - if (grep { $pkg->fullname =~ /$_/ } @regex) { + if ($pkg->fullname =~ $re){ compute_flag($urpm, $pkg, %options); } } -- cgit v1.2.1