aboutsummaryrefslogtreecommitdiffstats
path: root/URPM/Resolve.pm
diff options
context:
space:
mode:
Diffstat (limited to 'URPM/Resolve.pm')
-rw-r--r--URPM/Resolve.pm20
1 files changed, 11 insertions, 9 deletions
diff --git a/URPM/Resolve.pm b/URPM/Resolve.pm
index 1816eb1..dde3159 100644
--- a/URPM/Resolve.pm
+++ b/URPM/Resolve.pm
@@ -48,6 +48,9 @@ sub find(&@) {
The property2name* functions parse things like "mageia-release[>= 1]"
which is the format returned by URPM.xs for ->requires, ->provides, ->conflicts...
+They also support the format "mageia-release > 1" which get generated by
+some code to find newer versions of a package for example.
+
=over 4
=item property2name($property)
@@ -59,7 +62,7 @@ Returns the property name (eg: "mageia-release" in above example)
sub property2name {
my ($property) = @_;
my $name = $property;
- if ($property =~ /^([^\s]+)\s*\[[^\[]*\]$/) {
+ if ($property =~ /^([^\s]+)(\s*\[[^\[]*\]$|\s+[><=])/) {
$name = $1;
}
$name =~ s/\[\*\]$//;
@@ -76,9 +79,9 @@ sub property2name_range {
my ($property) = @_;
my ($name, $range) = ($property, "");
$name =~ s/\[\*\]$//;
- if ($name =~ /^([^\s]+)\s*\[([^\[]*)\]$/) {
+ if ($name =~ /^([^\s]+)(\s*\[([^\[]+)\]|\s+([><=].*))$/) {
$name = $1;
- $range = $2;
+ $range = $3 || $4;
}
$name =~ s/\[\*\]$//;
return ($name, $range);
@@ -93,12 +96,11 @@ Returns the property name, operator & range (eg: "mageia-release", ">=", & "1" i
sub property2name_op_version {
my ($property) = @_;
- my ($name, $op, $version) = ($property, "", "");
- $name =~ s/\[\*\]$//;
- if ($name =~ /^([^\s]+)\s*\[([^\s\[]*)\s*([^\s\]]*)\]$/) {
- $name = $1;
- $op = $2;
- $version = $3;
+ my ($name, $range) = property2name_range($property);
+ my ($op, $version) = ("", "");
+ if ($range =~ /^([><=]+)\s+(.*)$/) {
+ $op = $1;
+ $version = $2;
}
$name =~ s/\[\*\]$//;
return ($name, $op, $version);