diff options
-rw-r--r-- | urpm.pm | 34 | ||||
-rw-r--r-- | urpmi.spec | 10 |
2 files changed, 29 insertions, 15 deletions
@@ -287,7 +287,11 @@ sub probe_medium { local *L; open L, "$urpm->{statedir}/$medium->{list}"; while (<L>) { - /^(.*)\/[^\/]*/ and $probe{$1} = undef; + #- /./ is end of url marker in list file (typically generated by a + #- find . -name "*.rpm" > list + #- for exportable list file. + /^(.*)\/\.\// and $probe{$1} = undef; + /^(.*)\/[^\/]*$/ and $probe{$1} = undef; } close L; foreach (sort { length($a) <=> length($b) } keys %probe) { @@ -832,21 +836,23 @@ sub update_media { /\/([^\/]*)-[^-\/]*-[^-\/]*\.[^\/]*\.rpm/; $list{"$prefix:/$_\n"} = ($urpm->{params}{names}{$1} || { id => 1000000000 })->{id}; } - } elsif (-s "$urpm->{cachedir}/partial/list") { - local (*F, $_); - while (<F>) { - /\/([^\/]*)-[^-\/]*-[^-\/]*\.[^\/]*\.rpm/; - $list{"$medium->{url}/$_\n"} = ($urpm->{params}{names}{$1} || { id => 1000000000 })->{id}; - } - close F; } else { local (*F, $_); + my %filename2pathname; + if ($medium->{hdlist} ne 'list' && -s "$urpm->{cachedir}/partial/list") { + open F, "$urpm->{cachedir}/partial/list"; + while (<F>) { + /\/([^\/]*)\.rpm$/ and $filename2pathname{$1} = "$medium->{url}/$_"; + } + close F; + } unless ($medium->{synthesis}) { open F, "parsehdlist --name '$urpm->{cachedir}/partial/$medium->{hdlist}' |"; while (<F>) { - /^([^\/]*):name:([^\/\s:]*)(?::(.*)\.rpm)?$/; - $list{"$medium->{url}/". ($3 || $2) .".rpm\n"} = ($urpm->{params}{names}{$1} || { id => 1000000000 } - )->{id}; + /^([^\/]*):name:([^\/\s:]*)(?::(.*)\.rpm)?$/ or next; + $list{$filename2pathname{$3 || $2} || + "$medium->{url}/". ($3 || $2) .".rpm\n"} = ($urpm->{params}{names}{$1} || + { id => 1000000000 })->{id}; } close F or $medium->{synthesis} = 1; #- try hdlist as a synthesis (for probe) } @@ -856,9 +862,9 @@ sub update_media { #- parse_synthesis returns all full name of package read from it. foreach (@founds) { my $fullname = "$_->{name}-$_->{version}-$_->{release}.$_->{arch}"; - $list{"$medium->{url}/". ($_->{file} || $fullname) .".rpm\n"} = ($urpm->{params}{names}{$_->{name}} || - { id => 1000000000 } - )->{id}; + $list{$filename2pathname{$_->{file} || $fullname} || + "$medium->{url}/". ($_->{file} || $fullname) .".rpm\n"} = ($urpm->{params}{names}{$_->{name}} || + { id => 1000000000 })->{id}; } } else { $error = 1, $urpm->{error}(_("unable to parse hdlist file of \"%s\"", $medium->{name})); @@ -2,7 +2,7 @@ Name: urpmi Version: 3.1 -Release: 5mdk +Release: 6mdk License: GPL Source0: %{name}.tar.bz2 Source1: %{name}.logrotate @@ -142,6 +142,14 @@ fi %changelog +* Thu Jan 10 2002 François Pons <fpons@mandrakesoft.com> 3.1-6mdk +- fixed distant list file support. +- allow shadow approach of list file, the same list file (global) + can be used for each intermediate medium, urpmi choose the right + entry for each medium from the same source. +- added /./ as string marker to probe url, this means the heading + ./ of find . -name "*.rpm" -print should be kept. + * Wed Jan 9 2002 François Pons <fpons@mandrakesoft.com> 3.1-5mdk - added lock urpmi database features. - added support for distant list file. |