summaryrefslogtreecommitdiffstats
path: root/urpmi
diff options
context:
space:
mode:
authorPascal Rigaux <pixel@mandriva.com>2008-01-18 17:12:18 +0000
committerPascal Rigaux <pixel@mandriva.com>2008-01-18 17:12:18 +0000
commit4770bc86abc884603500987585d34f85acfcc06b (patch)
tree8884fbabdba83b427f2d079f4331f0010a2341c1 /urpmi
parent66ab26598afa8239868d32b5118304c629dafe81 (diff)
downloadurpmi-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-xurpmi38
1 files changed, 22 insertions, 16 deletions
diff --git a/urpmi b/urpmi
index 12c9647d..de43ba4a 100755
--- a/urpmi
+++ b/urpmi
@@ -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}) {