summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--MANIFEST4
-rw-r--r--NEWS4
-rw-r--r--t/data/SPECS/orphans-1/u1.spec14
-rw-r--r--t/data/SPECS/orphans-1/u2.spec13
-rw-r--r--t/data/SPECS/orphans-1/u3.spec13
-rw-r--r--t/data/SPECS/orphans-1/u4.spec14
-rw-r--r--t/superuser--orphans.t5
-rw-r--r--urpm/orphans.pm5
8 files changed, 70 insertions, 2 deletions
diff --git a/MANIFEST b/MANIFEST
index a0ee7451..12e06dea 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -237,6 +237,10 @@ t/data/SPECS/orphans-1/ss1.spec
t/data/SPECS/orphans-1/ss2.spec
t/data/SPECS/orphans-1/t.spec
t/data/SPECS/orphans-1/tt1.spec
+t/data/SPECS/orphans-1/u1.spec
+t/data/SPECS/orphans-1/u2.spec
+t/data/SPECS/orphans-1/u3.spec
+t/data/SPECS/orphans-1/u4.spec
t/data/SPECS/orphans-2/a-2.spec
t/data/SPECS/orphans-2/bb-2.spec
t/data/SPECS/orphans-2/c-2.spec
diff --git a/NEWS b/NEWS
index 4553709d..af9f0d3f 100644
--- a/NEWS
+++ b/NEWS
@@ -3,6 +3,10 @@
o retry once on aria2 versioned-file download failure
o allow setting aria2-options in urpmi.cfg
- urpmi
+ o fix "urpmi firefox mozilla-firefox-ext-google-toolbar ;
+ urpme --auto-orphans mozilla-firefox-ext-google-toolbar" which must not
+ remove firefox (cf #45054)
+ (this is especially bad for DrakX/rpmsrate)
o fix --auto-update ignoring --media and default-media (#45097)
- gurpmi
o display the download errors
diff --git a/t/data/SPECS/orphans-1/u1.spec b/t/data/SPECS/orphans-1/u1.spec
new file mode 100644
index 00000000..cfdfe60a
--- /dev/null
+++ b/t/data/SPECS/orphans-1/u1.spec
@@ -0,0 +1,14 @@
+Summary: x
+Name: u1
+Version: 1
+Release: 1
+License: x
+Group: x
+Url: x
+Requires: u2
+BuildRoot: %{_tmppath}/%{name}
+
+%description
+x
+
+%files
diff --git a/t/data/SPECS/orphans-1/u2.spec b/t/data/SPECS/orphans-1/u2.spec
new file mode 100644
index 00000000..556b628f
--- /dev/null
+++ b/t/data/SPECS/orphans-1/u2.spec
@@ -0,0 +1,13 @@
+Summary: x
+Name: u2
+Version: 1
+Release: 1
+License: x
+Group: x
+Url: x
+BuildRoot: %{_tmppath}/%{name}
+
+%description
+x
+
+%files
diff --git a/t/data/SPECS/orphans-1/u3.spec b/t/data/SPECS/orphans-1/u3.spec
new file mode 100644
index 00000000..f9c12a83
--- /dev/null
+++ b/t/data/SPECS/orphans-1/u3.spec
@@ -0,0 +1,13 @@
+Summary: x
+Name: u3
+Version: 1
+Release: 1
+License: x
+Group: x
+Url: x
+BuildRoot: %{_tmppath}/%{name}
+
+%description
+x
+
+%files
diff --git a/t/data/SPECS/orphans-1/u4.spec b/t/data/SPECS/orphans-1/u4.spec
new file mode 100644
index 00000000..5c84b88c
--- /dev/null
+++ b/t/data/SPECS/orphans-1/u4.spec
@@ -0,0 +1,14 @@
+Summary: x
+Name: u4
+Version: 1
+Release: 1
+License: x
+Group: x
+Url: x
+Requires: u3
+BuildRoot: %{_tmppath}/%{name}
+
+%description
+x
+
+%files
diff --git a/t/superuser--orphans.t b/t/superuser--orphans.t
index 79bd67eb..53c0c210 100644
--- a/t/superuser--orphans.t
+++ b/t/superuser--orphans.t
@@ -20,6 +20,8 @@
#
# req-a requires a, req-b requires b...
#
+# u1 requires u2, u4 requires u3
+#
use strict;
use lib '.', 't';
use helper;
@@ -40,6 +42,9 @@ set_urpmi_cfg_global_options({ 'nb-of-new-unrequested-pkgs-between-auto-select-o
test_urpme_v1(['h'], 'h', '');
test_urpme_v1(['hh', 'h'], 'h', 'hh');
+test_urpme_v1(['u1 u2'], 'u1', 'u2');
+test_urpme_v1(['u3 u4'], 'u4', 'u3');
+
test_auto_select_both('a', '', 'a-2');
test_auto_select_both('b', '', 'bb-2');
test_auto_select_both('c', 'cc', 'c-2 cc-1');
diff --git a/urpm/orphans.pm b/urpm/orphans.pm
index ceb9a3e0..42d8ea42 100644
--- a/urpm/orphans.pm
+++ b/urpm/orphans.pm
@@ -78,8 +78,9 @@ sub _selected_unrequested {
require urpm::select;
map {
if (my $from = $selected->{$_}{from}) {
- my $name = $urpm->{depslist}[$_]->name;
- urpm::select::was_pkg_name_installed($rejected, $name) ? () :
+ my $pkg = $urpm->{depslist}[$_];
+ my $name = $pkg->name;
+ $pkg->flag_requested || urpm::select::was_pkg_name_installed($rejected, $name) ? () :
($name => "(required by " . $from->fullname . ")");
} elsif ($selected->{$_}{suggested}) {
($urpm->{depslist}[$_]->name => "(suggested)");