OpenPKG CVS Repository
http://cvs.openpkg.org/
____________________________________________________________________________
Server: cvs.openpkg.org Name: Michael van Elst
Root: /e/openpkg/cvs Email: [EMAIL PROTECTED]
Module: openpkg-re Date: 12-Nov-2002 17:13:57
Branch: HEAD Handle: 2002111216135700
Modified files:
openpkg-re openpkg-build
Log:
honor releases.
Summary:
Revision Changes Path
1.6 +39 -14 openpkg-re/openpkg-build
____________________________________________________________________________
Index: openpkg-re/openpkg-build
============================================================
$ cvs diff -u -r1.5 -r1.6 openpkg-build
--- openpkg-re/openpkg-build 12 Nov 2002 15:33:05 -0000 1.5
+++ openpkg-re/openpkg-build 12 Nov 2002 16:13:57 -0000 1.6
@@ -92,7 +92,7 @@
die "FATAL: cannot locate rpm in path\n" unless $RPM =~ m{^/};
($PROG) = $0 =~ /(?:.*\/)?(.*)/;
-sub vcmp ($$) {
+sub version_cmp ($$) {
my($a,$b) = @_;
my(@a,@b,$c);
my($ax,$bx);
@@ -120,6 +120,29 @@
return $c;
}
+sub release_cmp ($$) {
+ my($a,$b) = @_;
+
+ return $a cmp $b;
+}
+
+sub vcmp ($$) {
+ my($a,$b) = @_;
+ my($av,$ar) = $a =~ /^(.*?)(?:\-([\d\.]+))?$/;
+ my($bv,$br) = $b =~ /^(.*?)(?:\-([\d\.]+))?$/;
+ my($c);
+
+ $c = version_cmp($av,$bv);
+ return if $c;
+ $c = release_cmp($ar,$br);
+ return $c;
+}
+
+sub vs ($) {
+ my($t) = @_;
+ return "$t->{version}-$t->{release}";
+}
+
sub get_config ()
{
my($c,@q);
@@ -162,7 +185,7 @@
foreach (@l) {
/^(\S+)\s*(?:=\s*([^\s\-]+)-(\S+))?$/;
- push(@{$map{$1}->{"$2"}}, {
+ push(@{$map{$1}->{"$2-$3"}}, {
name => $1,
version => (defined $2 ? $2 : '*'),
release => (defined $3 ? $3 : '*')
@@ -325,11 +348,12 @@
if (defined $href && defined $name && defined $version) {
- @provides = map {{ name => $_, version => '' } } @provides;
+ @provides = map {{ name => $_, version => '' }} @provides;
push(@provides, {
- name => $name,
- version => $version
+ name => $name,
+ version => $version,
+ release => $release
});
$rec = {
@@ -342,7 +366,7 @@
};
foreach (@provides) {
- push(@{$map{$_->{name}}->{$_->{version}}}, $rec);
+ push(@{$map{$_->{name}}->{vs($_)}}, $rec);
}
}
@@ -365,8 +389,9 @@
@provides = ();
}
push(@provides, {
- name => $_->{'Name'}->[0],
- version => $_->{'Version'}->[0]
+ name => $_->{'Name'}->[0],
+ version => $_->{'Version'}->[0],
+ release => $_->{'Release'}->[0]
});
$rec = {
@@ -379,7 +404,7 @@
};
foreach (@provides) {
- push(@{$map{$_->{name}}->{$_->{version}}}, $rec);
+ push(@{$map{$_->{name}}->{vs($_)}}, $rec);
}
}
}
@@ -439,7 +464,7 @@
return unless $vmap;
return !defined $target->{version} ||
- defined $vmap->{$target->{version}};
+ defined $vmap->{vs($target)};
}
#
@@ -453,7 +478,7 @@
return unless $vmap;
return unless defined $target->{version};
- $vers = $vmap->{$target->{version}};
+ $vers = $vmap->{vs($target)};
return unless $vers && @$vers;
return $vers->[0]->{depends};
@@ -470,7 +495,7 @@
return unless $vmap;
return unless defined $target->{version};
- $vers = $vmap->{$target->{version}};
+ $vers = $vmap->{vs($target)};
return unless $vers && @$vers;
return $vers->[0]->{keeps};
@@ -590,7 +615,7 @@
print "# adding $target->{name}-$target->{version} to list\n";
push(@$list, $target);
- push(@{$env->{built}->{$target->{name}}->{$target->{version}}}, $target);
+ push(@{$env->{built}->{$target->{name}}->{vs($target)}}, $target);
}
sub remove_list ($$$) {
@@ -599,7 +624,7 @@
%keep = map { $_ => 1 } @$keeps;
return [ grep {
- !$keep{$_} && !$installed->{$_->{name}}->{$_->{version}};
+ !$keep{$_} && !$installed->{$_->{name}}->{vs($_)};
} @$targets
];
}
______________________________________________________________________
The OpenPKG Project www.openpkg.org
CVS Repository Commit List [EMAIL PROTECTED]