diff options
author | Pascal Rigaux <pixel@mandriva.com> | 2008-01-18 17:12:18 +0000 |
---|---|---|
committer | Pascal Rigaux <pixel@mandriva.com> | 2008-01-18 17:12:18 +0000 |
commit | 4770bc86abc884603500987585d34f85acfcc06b (patch) | |
tree | 8884fbabdba83b427f2d079f4331f0010a2341c1 /urpmi | |
parent | 66ab26598afa8239868d32b5118304c629dafe81 (diff) | |
download | urpmi-4770bc86abc884603500987585d34f85acfcc06b.tar urpmi-4770bc86abc884603500987585d34f85acfcc06b.tar.gz urpmi-4770bc86abc884603500987585d34f85acfcc06b.tar.bz2 urpmi-4770bc86abc884603500987585d34f85acfcc06b.tar.xz urpmi-4770bc86abc884603500987585d34f85acfcc06b.zip |
- urpmi:
o --buildrequires deprecate --src, --src is kept for compatibility but its
behaviour is changed a little (it doesn't download src.rpm anymore)
ie implement what i suggested on cooker mailing list:
Date: Thu, 15 Nov 2007 18:21:32 +0100
Subject: urpmi --src issues, suggesting replacing --src with --buildrequires
current situation:
% urpmi /xxx/foo.src.rpm
#=> installs foo.src.rpm buildrequires
% urpmi --install-src foo bar
#=> downloads foo.src.rpm bar.src.rpm and "rpm -i"
% urpmi --help | grep -- --src
--src, -s - next package is a source package.
% urpmi --src foo
#=> urpmi says it will install foo buildrequires + foo.src.rpm
#=> in fact, it only installs foo buildrequires
weird cases in current urpmi:
% urpmi --src foo bar
#=> equiv to "urpmi --src foo ; urpmi bar"
% urpmi foo --src bar
#=> equiv to "urpmi --src foo bar" above :-(
% urpmi --src foo --src bar
#=> equiv to "urpmi --src foo bar" :-(
suggestions:
1) we could make --src a global option:
% urpmi --src foo bar
#=> would install buildrequires of foo.src.rpm and bar.src.rpm
cons: it breaks compatibility (though i'm quite sure noone uses the
previous behaviour)
2) deprecate --src, introduce with --buildrequires:
% urpmi --buildrequires foo bar
#=> would install buildrequires of foo.src.rpm and bar.src.rpm
3) when doing "urpmi /xxx/foo.src.rpm", warn the user that it should
use either "--install-src" or "--buildrequires", and that urpmi is
defaulting to "--buildrequires"
2) and 3) are implemented now
Diffstat (limited to 'urpmi')
-rwxr-xr-x | urpmi | 38 |
1 files changed, 22 insertions, 16 deletions
@@ -41,7 +41,6 @@ our $auto_select = 0; our $auto_update = 0; our $no_install = 0; our $no_remove = 0; -our $src = 0; our $install_src = 0; our $clean = 0; our $noclean = 0; @@ -95,7 +94,7 @@ usage: . N(" --split-length - small transaction length, default is %d. ", urpm::default_options()->{'split-length'}) . N(" --fuzzy, -y - impose fuzzy search. -") . N(" --src, -s - next package is a source package. +") . N(" --buildrequires - install the buildrequires of the packages ") . N(" --install-src - install only source package (no binaries). ") . N(" --clean - remove rpm from cache before anything else. ") . N(" --noclean - don't clean rpms from cache. @@ -200,12 +199,12 @@ foreach (@ARGV) { } next; } - if ($src) { - push @src_names, $_; - } else { - push @names, $_; - } - $src = 0; #- reset switch for next package. + push @names, $_; +} + +if ($options{buildrequires}) { + push @src_names, @names; + @names = (); } #- use install_src to promote all names as src package. @@ -215,6 +214,9 @@ if ($install_src) { @names = (); #- allow to use --install-src as a non-root user $options{nolock} = 1; +} elsif (@src_files && !$options{buildrequires}) { + $urpm->{error}(N("please use --buildrequires or --install-src, defaulting to --buildrequires")); + $options{buildrequires} = 1; } #- rurpmi checks @@ -566,18 +568,22 @@ my $ask_user = $env || $search_result eq 'substring'; my @root_only; my @to_install = @{$urpm->{depslist}}[sort { $a <=> $b } keys %{$state->{selected}}]; # sorted by medium for format_selected_packages +{ + my ($src, $binary) = partition { $_->arch eq 'src' } @to_install; + if ($install_src) { + if (@$binary && $install_src && !$env) { + my $list = join(' ', sort map { $_->name } @$binary); + $urpm->{fatal}(1, N("You must first call urpmi with --buildrequires to install the following dependencies:\n%s\n", $list)); + } + } else { + @to_install = @$binary; + } +} + foreach my $pkg (@to_install) { #- reflect change in flag usage, now requested is set whatever a package is selected or not, #- but required is always set (so a required but not requested is a pure dependency). $ask_user ||= !$pkg->flag_requested || $auto_select || $parallel; - - if (!$env && $install_src && $pkg->arch ne 'src') { - push @root_only, scalar $pkg->fullname; - } -} -if (@root_only && !$env) { - print N("You must first call urpmi without --install-src to install the following dependencies:\n%s\n", join(' ', sort @root_only)); - exit 1; } $urpm->{nb_install} = @to_install; if (!$urpm->{options}{auto} && $ask_user && $urpm->{nb_install} || $env && !$options{debug__do_not_install}) { |