diff options
-rw-r--r-- | rpm-find-leaves | 2 | ||||
-rw-r--r-- | urpm.pm | 36 | ||||
-rw-r--r-- | urpme | 6 | ||||
-rw-r--r-- | urpmi.spec | 6 |
4 files changed, 30 insertions, 20 deletions
diff --git a/rpm-find-leaves b/rpm-find-leaves index 5c7fb496..3ab5a470 100644 --- a/rpm-find-leaves +++ b/rpm-find-leaves @@ -5,7 +5,7 @@ use URPM; my @packages; { - my $db = URPM::DB::open; + my $db = URPM::DB::open or die; $db->traverse(sub { my ($p) = @_; $p->pack_header; @@ -101,7 +101,7 @@ Locale::gettext::textdomain ("urpmi"); sub _ { my ($format, @params) = @_; - sprintf(Locale::gettext::gettext($format), @params); + sprintf(Locale::gettext::gettext($format || ''), @params); } #- create a new urpm object. @@ -181,8 +181,8 @@ sub set_proxy { } #- quoting/unquoting a string that may be containing space chars. -sub quotespace { local $_ = $_[0]; s/(\s)/\\$1/g; $_ } -sub unquotespace { local $_ = $_[0]; s/\\(\s)/$1/g; $_ } +sub quotespace { local $_ = $_[0] || ''; s/(\s)/\\$1/g; $_ } +sub unquotespace { local $_ = $_[0] || ''; s/\\(\s)/$1/g; $_ } #- syncing algorithms, currently is implemented wget and curl methods, #- webfetch is trying to find the best (and one which will work :-) @@ -225,7 +225,7 @@ sub sync_wget { my $options = shift @_; system "/usr/bin/wget", (ref $options && set_proxy({type => "wget", proxy => $options->{proxy}})), - (ref $options && $options->{quiet} ? ("-q") : ("-nv")), "-NP", + (ref $options && $options->{quiet} ? ("-q") : ("-nv")), "--retr-symlinks", "-NP", (ref $options ? $options->{dir} : $options), @_; $? == 0 or die _("wget failed: exited with %d or signal %d\n", $? >> 8, $? & 127); } @@ -457,16 +457,18 @@ sub probe_medium { #- there is a little more to do at this point as url is not known, inspect directly list file for it. unless ($medium->{url}) { my %probe; - local *L; - open L, "$urpm->{statedir}/$medium->{list}"; - while (<L>) { - #- /./ 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; + if (-r "$urpm->{statedir}/$medium->{list}") { + local *L; + open L, "$urpm->{statedir}/$medium->{list}"; + while (<L>) { + #- /./ 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) { if ($medium->{url}) { $medium->{url} eq substr($_, 0, length($medium->{url})) or @@ -487,8 +489,8 @@ sub probe_medium { $urpm->probe_removable_device($medium); #- clear URLs for trailing /es. - $medium->{url} =~ s|(.*?)/*$|$1|; - $medium->{clear_url} =~ s|(.*?)/*$|$1|; + $medium->{url} and $medium->{url} =~ s|(.*?)/*$|$1|; + $medium->{clear_url} and $medium->{clear_url} =~ s|(.*?)/*$|$1|; $medium; } @@ -497,7 +499,7 @@ sub probe_medium { sub probe_removable_device { my ($urpm, $medium) = @_; - if ($medium->{url} =~ /^removable_?([^_:]*)(?:_[^:]*)?:/) { + if ($medium->{url} && $medium->{url} =~ /^removable_?([^_:]*)(?:_[^:]*)?:/) { $medium->{removable} ||= $1 && "/dev/$1"; } else { delete $medium->{removable}; @@ -193,7 +193,11 @@ if (@toremove > @l && !$auto) { <STDIN> =~ /[$noexpr]/ and exit 0; } -$urpm->install(\@toremove, {}, {}); +@l = $urpm->install(\@toremove, {}, {}); +if (@l) { + print STDERR _("Removing failed") . ":\n" . join("\n", map { "\t$_" } @l); + exit 1; +} sub toMb { my $nb = $_[0] / 1024 / 1024; @@ -2,7 +2,7 @@ Name: urpmi Version: 4.1 -Release: 11mdk +Release: 12mdk License: GPL Source0: %{name}.tar.bz2 Source1: %{name}.logrotate @@ -204,6 +204,10 @@ fi %changelog +* Wed Dec 11 2002 François Pons <fpons@mandrakesoft.com> 4.1-12mdk +- fix symlink download with wget. +- urpme now print possible errors. + * Tue Dec 10 2002 François Pons <fpons@mandrakesoft.com> 4.1-11mdk - fixed source installation in / when installing dependencies. - added --install-src to avoid probing on root/user mode. |