summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Changes21
-rw-r--r--MANIFEST24
-rw-r--r--po/de.po13
-rw-r--r--t/02create_pkgs.t6
-rw-r--r--t/README9
-rw-r--r--t/data/SPECS/arch_to_noarch_1.spec2
-rw-r--r--t/data/SPECS/arch_to_noarch_2.spec2
-rw-r--r--t/data/SPECS/arch_to_noarch_4.spec2
-rw-r--r--t/data/SPECS/buildroot_default.spec2
-rw-r--r--t/data/SPECS/i586-to-i686/libfoobar.spec36
-rw-r--r--t/data/SPECS/kernel-1/kernel-desktop1.spec22
-rw-r--r--t/data/SPECS/kernel-1/kernel-desktop2.spec22
-rw-r--r--t/data/SPECS/kernel-1/kernel-desktop3.spec22
-rw-r--r--t/data/SPECS/kernel-1/kernel-desktop4.spec22
-rw-r--r--t/data/SPECS/kernel-1/kernel-desktop5.spec22
-rw-r--r--t/data/SPECS/kernel-1/virtualbox-kernel-desktop1.spec19
-rw-r--r--t/data/SPECS/kernel-1/virtualbox-kernel-desktop2.spec19
-rw-r--r--t/data/SPECS/kernel-1/virtualbox-kernel-desktop3.spec19
-rw-r--r--t/data/SPECS/kernel-1/virtualbox-kernel-desktop4.spec19
-rw-r--r--t/data/SPECS/kernel-1/virtualbox-kernel-desktop5.spec18
-rw-r--r--t/data/SPECS/kernel-2/kernel-desktop1.spec20
-rw-r--r--t/data/SPECS/kernel-2/kernel-desktop2.spec20
-rw-r--r--t/data/SPECS/kernel-2/kernel-desktop3.spec20
-rw-r--r--t/data/SPECS/kernel-2/kernel-desktop4.spec20
-rw-r--r--t/data/SPECS/kernel-2/kernel-desktop5.spec20
-rw-r--r--t/data/SPECS/kernel-2/virtualbox-kernel-desktop1.spec19
-rw-r--r--t/data/SPECS/kernel-2/virtualbox-kernel-desktop2.spec19
-rw-r--r--t/data/SPECS/kernel-2/virtualbox-kernel-desktop3.spec19
-rw-r--r--t/data/SPECS/kernel-2/virtualbox-kernel-desktop4.spec19
-rw-r--r--t/data/SPECS/kernel-2/virtualbox-kernel-desktop5.spec18
-rw-r--r--t/data/SPECS/multi-line-macro.spec2
-rw-r--r--t/data/SPECS/multi-line-macro2.spec2
-rw-r--r--t/data/SPECS/obsolete-and-conflict/a.spec3
-rw-r--r--t/data/SPECS/obsolete-and-conflict/b.spec3
-rw-r--r--t/data/SPECS/obsolete-and-conflict/c.spec2
-rw-r--r--t/data/SPECS/various.spec2
-rw-r--r--t/data/SPECS/various2.spec2
-rw-r--r--t/data/SPECS/various3.spec2
-rw-r--r--t/data/rpm-i586-to-i686/libfoobar-1-1.i586.rpmbin0 -> 8880 bytes
-rw-r--r--t/data/rpm-i586-to-i686/libfoobar-1-1.i686.rpmbin0 -> 8936 bytes
-rwxr-xr-xt/gendistrib2
-rwxr-xr-xt/genhdlist22
-rw-r--r--t/superuser--i586-to-i686.t22
-rw-r--r--t/superuser--orphans-kernels.t50
-rw-r--r--urpm.pm2
-rw-r--r--urpm/orphans.pm59
-rw-r--r--urpmi.pm2
47 files changed, 653 insertions, 19 deletions
diff --git a/Changes b/Changes
index 1ceb22b2..101bdf79 100644
--- a/Changes
+++ b/Changes
@@ -1,4 +1,25 @@
+- testsuite:
+ o list some missing spec files in MANIFEST
+ o Fix building test pkgs with rpm-4.20
+ o Set up i586 to i686 upgrade medium
+
+Version 8.133 - 31 May 2024
+
+- testsuite:
+ o use a more generic compiler for cpan testers
+
+Version 8.132 - 29 May 2024
+
- Set wget as default downloader (mga#24362)
+- testsuite:
+ o add i586 to i686 upgrate test
+
+Version 8.131 - 13 April 2023
+
+- urpmi:
+ o Fix --auto-orphans vs new kernel naming
+ (having multuple "kernel" pkgs with different versions)
+
Version 8.130 - 28 January 2023
- library:
diff --git a/MANIFEST b/MANIFEST
index 1a132e0a..47bd8d2f 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -109,6 +109,8 @@ t/data/reconfig.urpmi
t/data/rpm-buggy/invalid-signature.rpm
t/data/rpm-buggy/not-a-rpm.rpm
t/data/rpm-buggy/weird-header.rpm
+t/data/rpm-i586-to-i686/libfoobar-1-1.i586.rpm
+t/data/rpm-i586-to-i686/libfoobar-1-1.i686.rpm
t/data/rpm-v3/KBackup-1.2.11-1.src.rpm
t/data/rpm-v3/libtermcap-2.0.8-2.i386.rpm
t/data/rpm-v3/nls-1.0-2.i386.rpm
@@ -196,6 +198,27 @@ t/data/SPECS/handle-conflict-deps2/c-2.spec
t/data/SPECS/handle-conflict-deps2/d1-1.spec
t/data/SPECS/handle-conflict-deps2/d1-2.spec
t/data/SPECS/handle-conflict-deps2/d2.spec
+t/data/SPECS/i586-to-i686/libfoobar.spec
+t/data/SPECS/kernel-1/kernel-desktop1.spec
+t/data/SPECS/kernel-1/kernel-desktop2.spec
+t/data/SPECS/kernel-1/kernel-desktop3.spec
+t/data/SPECS/kernel-1/kernel-desktop4.spec
+t/data/SPECS/kernel-1/kernel-desktop5.spec
+t/data/SPECS/kernel-1/virtualbox-kernel-desktop1.spec
+t/data/SPECS/kernel-1/virtualbox-kernel-desktop2.spec
+t/data/SPECS/kernel-1/virtualbox-kernel-desktop3.spec
+t/data/SPECS/kernel-1/virtualbox-kernel-desktop4.spec
+t/data/SPECS/kernel-1/virtualbox-kernel-desktop5.spec
+t/data/SPECS/kernel-2/kernel-desktop1.spec
+t/data/SPECS/kernel-2/kernel-desktop2.spec
+t/data/SPECS/kernel-2/kernel-desktop3.spec
+t/data/SPECS/kernel-2/kernel-desktop4.spec
+t/data/SPECS/kernel-2/kernel-desktop5.spec
+t/data/SPECS/kernel-2/virtualbox-kernel-desktop1.spec
+t/data/SPECS/kernel-2/virtualbox-kernel-desktop2.spec
+t/data/SPECS/kernel-2/virtualbox-kernel-desktop3.spec
+t/data/SPECS/kernel-2/virtualbox-kernel-desktop4.spec
+t/data/SPECS/kernel-2/virtualbox-kernel-desktop5.spec
t/data/SPECS/multi-line-macro.spec
t/data/SPECS/multi-line-macro2.spec
t/data/SPECS/obsolete-and-conflict/a.spec
@@ -437,6 +460,7 @@ t/superuser--mirrorlist.t
t/superuser--obsolete-and-conflict.t
t/superuser--ordering-scriptlets.t
t/superuser--orphans.t
+t/superuser--orphans-kernels.t
t/superuser--prefer.t
t/superuser--prefer2.t
t/superuser--priority-upgrade.t
diff --git a/po/de.po b/po/de.po
index b1f37d50..224f64e3 100644
--- a/po/de.po
+++ b/po/de.po
@@ -4,7 +4,8 @@
# Translators:
# Ettore Atalan <atalanttore@googlemail.com>, 2018
# Klaus Christian Harke <k.c.harke@gmx.net>, 2021
-# psyca, 2014-2017,2019-2020,2022
+# psyca, 2014-2017,2019-2020,2022-2024
+# Marc Lattemann, 2014
# Marc Lattemann, 2014
# Oliver Burger <obgr_seneca@mageia.org>, 2013
# Sigrid Carrera <sigrid.carrera@googlemail.com>, 2013
@@ -13,8 +14,8 @@ msgstr ""
"Project-Id-Version: Mageia\n"
"POT-Creation-Date: 2022-06-13 18:28+0300\n"
"PO-Revision-Date: 2013-04-04 14:13+0000\n"
-"Last-Translator: psyca, 2014-2017,2019-2020,2022\n"
-"Language-Team: German (http://www.transifex.com/MageiaLinux/mageia/language/"
+"Last-Translator: psyca, 2014-2017,2019-2020,2022-2024\n"
+"Language-Team: German (http://app.transifex.com/MageiaLinux/mageia/language/"
"de/)\n"
"Language: de\n"
"MIME-Version: 1.0\n"
@@ -1121,7 +1122,7 @@ msgstr "Paket %s ausgelassen"
#: ../urpm/media.pm:877
#, c-format
msgid "would install instead of upgrade package %s"
-msgstr "Anstatt des Aktualisierungspaketes lieber %s installieren"
+msgstr "würde das Paket %s installieren anstatt zu aktualisieren"
#: ../urpm/media.pm:960
#, c-format
@@ -1469,8 +1470,8 @@ msgstr[1] "Vielleicht wollen Sie diese entfernen."
msgid ""
"The following package:\n"
"%s\n"
-"is now orphaned, if you wish to remove it, you can use \"urpme --auto-orphans"
-"\""
+"is now orphaned, if you wish to remove it, you can use \"urpme --auto-"
+"orphans\""
msgid_plural ""
"The following packages:\n"
"%s\n"
diff --git a/t/02create_pkgs.t b/t/02create_pkgs.t
index 7bd625f3..9f200ca9 100644
--- a/t/02create_pkgs.t
+++ b/t/02create_pkgs.t
@@ -74,6 +74,12 @@ if (!is_rpm_v3_support_broken()) {
genhdlist_std($name);
}
+{
+ my $name = 'rpm-i586-to-i686';
+ system_("cp -r data/$name media");
+ genhdlist_std($name);
+}
+
mkdir 'media/reconfig';
system_("cp -r data/reconfig.urpmi media/reconfig");
diff --git a/t/README b/t/README
index 9c821497..41f48345 100644
--- a/t/README
+++ b/t/README
@@ -32,6 +32,15 @@ eatmydata make testall
If you didn't alter the tests data, you can further speedup a re-run by using:
[[ -d t/media ]] && mv -f t/02create_pkgs.t{,.i}
+You can selectively run some tests:
+# Run everything:
+PERL_DL_NONLAZY=1 perl "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
+# Only run everything orphans tests:
+PERL_DL_NONLAZY=1 perl "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(0, 'blib/lib', 'blib/arch')" t/*orphans*.t
+# If you want to see the output:
+perl t/superuser--orphans.t
+
+
Layout:
=======
diff --git a/t/data/SPECS/arch_to_noarch_1.spec b/t/data/SPECS/arch_to_noarch_1.spec
index 36b059f1..37e0b1fa 100644
--- a/t/data/SPECS/arch_to_noarch_1.spec
+++ b/t/data/SPECS/arch_to_noarch_1.spec
@@ -1,5 +1,7 @@
# For CPAN testers that run FreeBSD:
%global __brp_strip_static_archive %nil
+# Fix build with rpm-4.20:
+%global debug_package %{nil}
Summary: arch_to_noarch
Name: arch_to_noarch
diff --git a/t/data/SPECS/arch_to_noarch_2.spec b/t/data/SPECS/arch_to_noarch_2.spec
index 39d73f39..a331caa2 100644
--- a/t/data/SPECS/arch_to_noarch_2.spec
+++ b/t/data/SPECS/arch_to_noarch_2.spec
@@ -1,5 +1,7 @@
# For CPAN testers that run FreeBSD:
%global __brp_strip_static_archive %nil
+# Fix build with rpm-4.20:
+%global debug_package %{nil}
Summary: arch_to_noarch
Name: arch_to_noarch
diff --git a/t/data/SPECS/arch_to_noarch_4.spec b/t/data/SPECS/arch_to_noarch_4.spec
index 369f2aef..518bf4df 100644
--- a/t/data/SPECS/arch_to_noarch_4.spec
+++ b/t/data/SPECS/arch_to_noarch_4.spec
@@ -1,5 +1,7 @@
# For CPAN testers that run FreeBSD:
%global __brp_strip_static_archive %nil
+# Fix build with rpm-4.20:
+%global debug_package %{nil}
Summary: arch_to_noarch
Name: arch_to_noarch
diff --git a/t/data/SPECS/buildroot_default.spec b/t/data/SPECS/buildroot_default.spec
index 33cfc763..c555ea04 100644
--- a/t/data/SPECS/buildroot_default.spec
+++ b/t/data/SPECS/buildroot_default.spec
@@ -1,6 +1,8 @@
%define macro_using_buildroot $(echo %buildroot)
%undefine distepoch
%undefine disttag
+# Fix build with rpm-4.20:
+%global debug_package %{nil}
Summary: x
Name: buildroot
diff --git a/t/data/SPECS/i586-to-i686/libfoobar.spec b/t/data/SPECS/i586-to-i686/libfoobar.spec
new file mode 100644
index 00000000..bb322414
--- /dev/null
+++ b/t/data/SPECS/i586-to-i686/libfoobar.spec
@@ -0,0 +1,36 @@
+# This one is not directly used by the testsuite.
+# It has been used to generate once t/data/rpm-i586-to-i686/*
+# using:
+# linux32 rpmbuild -ba libfoobar.spec --target i586
+# linux32 rpmbuild -ba libfoobar.spec --target i686
+# Which are the pkgs actually used by the testsuite for simulating an i586 to
+# i686 upgrade
+
+# Fix build with rpm-4.20:
+%global debug_package %{nil}
+
+
+# we could build with -static but then pkg goes up from 8.5kb to 280Kb:
+%global __requires_exclude %{?__requires_exclude:%__requires_exclude|}libc.so
+Summary: x
+Name: libfoobar
+Version: 1
+Release: 1
+License: x
+
+%build
+cat > t.c <<EOF
+void main () {}
+EOF
+#linux32 gcc -m32 -march=i586 -o t t.c
+cc -o t t.c
+
+%install
+mkdir -p %buildroot/%_bindir
+cp -a t %buildroot/%_bindir
+
+%description
+binary lib
+
+%files
+%_bindir/t
diff --git a/t/data/SPECS/kernel-1/kernel-desktop1.spec b/t/data/SPECS/kernel-1/kernel-desktop1.spec
new file mode 100644
index 00000000..3466df6e
--- /dev/null
+++ b/t/data/SPECS/kernel-1/kernel-desktop1.spec
@@ -0,0 +1,22 @@
+%global ver 5.15.41
+Summary: x
+Name: kernel-desktop-%{ver}-1
+Version: 1
+Release: 1
+License: x
+
+%package -n kernel-desktop-latest
+Summary: x
+Version: %ver
+Requires: kernel-desktop-%{ver}-1
+
+%description
+Kernel naming as used in mdv & mga[1-8].
+Each kernel has an unique name ("kernel-v-r")
+Thus fullname is "kernel-v-r-1-1".
+
+%description -n kernel-desktop-latest
+x
+
+%files
+%files -n kernel-desktop-latest
diff --git a/t/data/SPECS/kernel-1/kernel-desktop2.spec b/t/data/SPECS/kernel-1/kernel-desktop2.spec
new file mode 100644
index 00000000..9424b939
--- /dev/null
+++ b/t/data/SPECS/kernel-1/kernel-desktop2.spec
@@ -0,0 +1,22 @@
+%global ver 5.15.42
+Summary: x
+Name: kernel-desktop-%{ver}-1
+Version: 1
+Release: 1
+License: x
+
+%package -n kernel-desktop-latest
+Summary: x
+Version: %ver
+Requires: kernel-desktop-%{ver}-1
+
+%description
+Kernel naming as used in mdv & mga[1-8].
+Each kernel has an unique name ("kernel-v-r")
+Thus fullname is "kernel-v-r-1-1".
+
+%description -n kernel-desktop-latest
+x
+
+%files
+%files -n kernel-desktop-latest
diff --git a/t/data/SPECS/kernel-1/kernel-desktop3.spec b/t/data/SPECS/kernel-1/kernel-desktop3.spec
new file mode 100644
index 00000000..aafd5468
--- /dev/null
+++ b/t/data/SPECS/kernel-1/kernel-desktop3.spec
@@ -0,0 +1,22 @@
+%global ver 5.15.43
+Summary: x
+Name: kernel-desktop-%{ver}-1
+Version: 1
+Release: 1
+License: x
+
+%package -n kernel-desktop-latest
+Summary: x
+Version: %ver
+Requires: kernel-desktop-%{ver}-1
+
+%description
+Kernel naming as used in mdv & mga[1-8].
+Each kernel has an unique name ("kernel-v-r")
+Thus fullname is "kernel-v-r-1-1".
+
+%description -n kernel-desktop-latest
+x
+
+%files
+%files -n kernel-desktop-latest
diff --git a/t/data/SPECS/kernel-1/kernel-desktop4.spec b/t/data/SPECS/kernel-1/kernel-desktop4.spec
new file mode 100644
index 00000000..6b433a52
--- /dev/null
+++ b/t/data/SPECS/kernel-1/kernel-desktop4.spec
@@ -0,0 +1,22 @@
+%global ver 5.15.44
+Summary: x
+Name: kernel-desktop-%{ver}-1
+Version: 1
+Release: 1
+License: x
+
+%package -n kernel-desktop-latest
+Summary: x
+Version: %ver
+Requires: kernel-desktop-%{ver}-1
+
+%description
+Kernel naming as used in mdv & mga[1-8].
+Each kernel has an unique name ("kernel-v-r")
+Thus fullname is "kernel-v-r-1-1".
+
+%description -n kernel-desktop-latest
+x
+
+%files
+%files -n kernel-desktop-latest
diff --git a/t/data/SPECS/kernel-1/kernel-desktop5.spec b/t/data/SPECS/kernel-1/kernel-desktop5.spec
new file mode 100644
index 00000000..9352a6f6
--- /dev/null
+++ b/t/data/SPECS/kernel-1/kernel-desktop5.spec
@@ -0,0 +1,22 @@
+%global ver 5.15.45
+Summary: x
+Name: kernel-desktop-%{ver}-1
+Version: 1
+Release: 1
+License: x
+
+%package -n kernel-desktop-latest
+Summary: x
+Version: %ver
+Requires: kernel-desktop-%{ver}-1
+
+%description
+Kernel naming as used in mdv & mga[1-8].
+Each kernel has an unique name ("kernel-v-r")
+Thus fullname is "kernel-v-r-1-1".
+
+%description -n kernel-desktop-latest
+x
+
+%files
+%files -n kernel-desktop-latest
diff --git a/t/data/SPECS/kernel-1/virtualbox-kernel-desktop1.spec b/t/data/SPECS/kernel-1/virtualbox-kernel-desktop1.spec
new file mode 100644
index 00000000..34306fb7
--- /dev/null
+++ b/t/data/SPECS/kernel-1/virtualbox-kernel-desktop1.spec
@@ -0,0 +1,19 @@
+%global kver 5.15.41
+Summary: x
+Name: virtualbox-kernel-%{kver}-desktop-1
+Version: 6.1.36
+Release: 1
+License: x
+
+%package -n virtualbox-kernel-desktop-latest
+Summary: x
+Requires: virtualbox-kernel-%{kver}-desktop-1 = 6.1.36-1
+
+%description
+x
+
+%description -n virtualbox-kernel-desktop-latest
+x
+
+%files
+%files -n virtualbox-kernel-desktop-latest
diff --git a/t/data/SPECS/kernel-1/virtualbox-kernel-desktop2.spec b/t/data/SPECS/kernel-1/virtualbox-kernel-desktop2.spec
new file mode 100644
index 00000000..eba571ef
--- /dev/null
+++ b/t/data/SPECS/kernel-1/virtualbox-kernel-desktop2.spec
@@ -0,0 +1,19 @@
+%global kver 5.15.42
+Summary: x
+Name: virtualbox-kernel-%{kver}-desktop-1
+Version: 6.1.36
+Release: 2
+License: x
+
+%package -n virtualbox-kernel-desktop-latest
+Summary: x
+Requires: virtualbox-kernel-%{kver}-desktop-1 = 6.1.36-2
+
+%description
+x
+
+%description -n virtualbox-kernel-desktop-latest
+x
+
+%files
+%files -n virtualbox-kernel-desktop-latest
diff --git a/t/data/SPECS/kernel-1/virtualbox-kernel-desktop3.spec b/t/data/SPECS/kernel-1/virtualbox-kernel-desktop3.spec
new file mode 100644
index 00000000..76e56f0e
--- /dev/null
+++ b/t/data/SPECS/kernel-1/virtualbox-kernel-desktop3.spec
@@ -0,0 +1,19 @@
+%global kver 5.15.43
+Summary: x
+Name: virtualbox-kernel-%{kver}-desktop-1
+Version: 6.1.36
+Release: 3
+License: x
+
+%package -n virtualbox-kernel-desktop-latest
+Summary: x
+Requires: virtualbox-kernel-%{kver}-desktop-1 = 6.1.36-3
+
+%description
+x
+
+%description -n virtualbox-kernel-desktop-latest
+x
+
+%files
+%files -n virtualbox-kernel-desktop-latest
diff --git a/t/data/SPECS/kernel-1/virtualbox-kernel-desktop4.spec b/t/data/SPECS/kernel-1/virtualbox-kernel-desktop4.spec
new file mode 100644
index 00000000..a6a68765
--- /dev/null
+++ b/t/data/SPECS/kernel-1/virtualbox-kernel-desktop4.spec
@@ -0,0 +1,19 @@
+%global kver 5.15.44
+Summary: x
+Name: virtualbox-kernel-%{kver}-desktop-1
+Version: 6.1.36
+Release: 4
+License: x
+
+%package -n virtualbox-kernel-desktop-latest
+Summary: x
+Requires: virtualbox-kernel-%{kver}-desktop-1 = 6.1.36-4
+
+%description
+x
+
+%description -n virtualbox-kernel-desktop-latest
+x
+
+%files
+%files -n virtualbox-kernel-desktop-latest
diff --git a/t/data/SPECS/kernel-1/virtualbox-kernel-desktop5.spec b/t/data/SPECS/kernel-1/virtualbox-kernel-desktop5.spec
new file mode 100644
index 00000000..4e8b8d7b
--- /dev/null
+++ b/t/data/SPECS/kernel-1/virtualbox-kernel-desktop5.spec
@@ -0,0 +1,18 @@
+%global kver 5.15.45
+Summary: x
+Name: virtualbox-kernel-%{kver}-desktop-1
+Version: 6.1.36
+Release: 5
+License: x
+
+%package -n virtualbox-kernel-desktop-latest
+Summary: x
+Requires: virtualbox-kernel-%{kver}-desktop-1 = 6.1.36-5
+%description
+x
+
+%description -n virtualbox-kernel-desktop-latest
+x
+
+%files
+%files -n virtualbox-kernel-desktop-latest
diff --git a/t/data/SPECS/kernel-2/kernel-desktop1.spec b/t/data/SPECS/kernel-2/kernel-desktop1.spec
new file mode 100644
index 00000000..ca218706
--- /dev/null
+++ b/t/data/SPECS/kernel-2/kernel-desktop1.spec
@@ -0,0 +1,20 @@
+Summary: x
+Name: kernel-desktop
+Version: 5.15.41
+Release: 1
+License: x
+
+%package -n kernel-desktop-latest
+Summary: x
+Requires: kernel-desktop = %{version}-%{release}
+
+%description
+Kernel naming as used in mga9+.
+Each kernel is named "kernel".
+So we can have multiple packages named "kernel" installed at the same time, with different versions
+
+%description -n kernel-desktop-latest
+x
+
+%files
+%files -n kernel-desktop-latest
diff --git a/t/data/SPECS/kernel-2/kernel-desktop2.spec b/t/data/SPECS/kernel-2/kernel-desktop2.spec
new file mode 100644
index 00000000..f42de4d0
--- /dev/null
+++ b/t/data/SPECS/kernel-2/kernel-desktop2.spec
@@ -0,0 +1,20 @@
+Summary: x
+Name: kernel-desktop
+Version: 5.15.42
+Release: 1
+License: x
+
+%package -n kernel-desktop-latest
+Summary: x
+Requires: kernel-desktop = %{version}-%{release}
+
+%description
+Kernel naming as used in mga9+.
+Each kernel is named "kernel".
+So we can have multiple packages named "kernel" installed at the same time, with different versions
+
+%description -n kernel-desktop-latest
+x
+
+%files
+%files -n kernel-desktop-latest
diff --git a/t/data/SPECS/kernel-2/kernel-desktop3.spec b/t/data/SPECS/kernel-2/kernel-desktop3.spec
new file mode 100644
index 00000000..ff40fec8
--- /dev/null
+++ b/t/data/SPECS/kernel-2/kernel-desktop3.spec
@@ -0,0 +1,20 @@
+Summary: x
+Name: kernel-desktop
+Version: 5.15.43
+Release: 1
+License: x
+
+%package -n kernel-desktop-latest
+Summary: x
+Requires: kernel-desktop = %{version}-%{release}
+
+%description
+Kernel naming as used in mga9+.
+Each kernel is named "kernel".
+So we can have multiple packages named "kernel" installed at the same time, with different versions
+
+%description -n kernel-desktop-latest
+x
+
+%files
+%files -n kernel-desktop-latest
diff --git a/t/data/SPECS/kernel-2/kernel-desktop4.spec b/t/data/SPECS/kernel-2/kernel-desktop4.spec
new file mode 100644
index 00000000..edbd9745
--- /dev/null
+++ b/t/data/SPECS/kernel-2/kernel-desktop4.spec
@@ -0,0 +1,20 @@
+Summary: x
+Name: kernel-desktop
+Version: 5.15.44
+Release: 1
+License: x
+
+%package -n kernel-desktop-latest
+Summary: x
+Requires: kernel-desktop = %{version}-%{release}
+
+%description
+Kernel naming as used in mga9+.
+Each kernel is named "kernel".
+So we can have multiple packages named "kernel" installed at the same time, with different versions
+
+%description -n kernel-desktop-latest
+x
+
+%files
+%files -n kernel-desktop-latest
diff --git a/t/data/SPECS/kernel-2/kernel-desktop5.spec b/t/data/SPECS/kernel-2/kernel-desktop5.spec
new file mode 100644
index 00000000..e22152a9
--- /dev/null
+++ b/t/data/SPECS/kernel-2/kernel-desktop5.spec
@@ -0,0 +1,20 @@
+Summary: x
+Name: kernel-desktop
+Version: 5.15.45
+Release: 1
+License: x
+
+%package -n kernel-desktop-latest
+Summary: x
+Requires: kernel-desktop = %{version}-%{release}
+
+%description
+Kernel naming as used in mga9+.
+Each kernel is named "kernel".
+So we can have multiple packages named "kernel" installed at the same time, with different versions
+
+%description -n kernel-desktop-latest
+x
+
+%files
+%files -n kernel-desktop-latest
diff --git a/t/data/SPECS/kernel-2/virtualbox-kernel-desktop1.spec b/t/data/SPECS/kernel-2/virtualbox-kernel-desktop1.spec
new file mode 100644
index 00000000..34306fb7
--- /dev/null
+++ b/t/data/SPECS/kernel-2/virtualbox-kernel-desktop1.spec
@@ -0,0 +1,19 @@
+%global kver 5.15.41
+Summary: x
+Name: virtualbox-kernel-%{kver}-desktop-1
+Version: 6.1.36
+Release: 1
+License: x
+
+%package -n virtualbox-kernel-desktop-latest
+Summary: x
+Requires: virtualbox-kernel-%{kver}-desktop-1 = 6.1.36-1
+
+%description
+x
+
+%description -n virtualbox-kernel-desktop-latest
+x
+
+%files
+%files -n virtualbox-kernel-desktop-latest
diff --git a/t/data/SPECS/kernel-2/virtualbox-kernel-desktop2.spec b/t/data/SPECS/kernel-2/virtualbox-kernel-desktop2.spec
new file mode 100644
index 00000000..eba571ef
--- /dev/null
+++ b/t/data/SPECS/kernel-2/virtualbox-kernel-desktop2.spec
@@ -0,0 +1,19 @@
+%global kver 5.15.42
+Summary: x
+Name: virtualbox-kernel-%{kver}-desktop-1
+Version: 6.1.36
+Release: 2
+License: x
+
+%package -n virtualbox-kernel-desktop-latest
+Summary: x
+Requires: virtualbox-kernel-%{kver}-desktop-1 = 6.1.36-2
+
+%description
+x
+
+%description -n virtualbox-kernel-desktop-latest
+x
+
+%files
+%files -n virtualbox-kernel-desktop-latest
diff --git a/t/data/SPECS/kernel-2/virtualbox-kernel-desktop3.spec b/t/data/SPECS/kernel-2/virtualbox-kernel-desktop3.spec
new file mode 100644
index 00000000..76e56f0e
--- /dev/null
+++ b/t/data/SPECS/kernel-2/virtualbox-kernel-desktop3.spec
@@ -0,0 +1,19 @@
+%global kver 5.15.43
+Summary: x
+Name: virtualbox-kernel-%{kver}-desktop-1
+Version: 6.1.36
+Release: 3
+License: x
+
+%package -n virtualbox-kernel-desktop-latest
+Summary: x
+Requires: virtualbox-kernel-%{kver}-desktop-1 = 6.1.36-3
+
+%description
+x
+
+%description -n virtualbox-kernel-desktop-latest
+x
+
+%files
+%files -n virtualbox-kernel-desktop-latest
diff --git a/t/data/SPECS/kernel-2/virtualbox-kernel-desktop4.spec b/t/data/SPECS/kernel-2/virtualbox-kernel-desktop4.spec
new file mode 100644
index 00000000..a6a68765
--- /dev/null
+++ b/t/data/SPECS/kernel-2/virtualbox-kernel-desktop4.spec
@@ -0,0 +1,19 @@
+%global kver 5.15.44
+Summary: x
+Name: virtualbox-kernel-%{kver}-desktop-1
+Version: 6.1.36
+Release: 4
+License: x
+
+%package -n virtualbox-kernel-desktop-latest
+Summary: x
+Requires: virtualbox-kernel-%{kver}-desktop-1 = 6.1.36-4
+
+%description
+x
+
+%description -n virtualbox-kernel-desktop-latest
+x
+
+%files
+%files -n virtualbox-kernel-desktop-latest
diff --git a/t/data/SPECS/kernel-2/virtualbox-kernel-desktop5.spec b/t/data/SPECS/kernel-2/virtualbox-kernel-desktop5.spec
new file mode 100644
index 00000000..4e8b8d7b
--- /dev/null
+++ b/t/data/SPECS/kernel-2/virtualbox-kernel-desktop5.spec
@@ -0,0 +1,18 @@
+%global kver 5.15.45
+Summary: x
+Name: virtualbox-kernel-%{kver}-desktop-1
+Version: 6.1.36
+Release: 5
+License: x
+
+%package -n virtualbox-kernel-desktop-latest
+Summary: x
+Requires: virtualbox-kernel-%{kver}-desktop-1 = 6.1.36-5
+%description
+x
+
+%description -n virtualbox-kernel-desktop-latest
+x
+
+%files
+%files -n virtualbox-kernel-desktop-latest
diff --git a/t/data/SPECS/multi-line-macro.spec b/t/data/SPECS/multi-line-macro.spec
index 06e8eb95..9b0f36d7 100644
--- a/t/data/SPECS/multi-line-macro.spec
+++ b/t/data/SPECS/multi-line-macro.spec
@@ -1,3 +1,5 @@
+# Fix build with rpm-4.20:
+%global debug_package %{nil}
%define foobar /etc/foo \
/etc/bar
diff --git a/t/data/SPECS/multi-line-macro2.spec b/t/data/SPECS/multi-line-macro2.spec
index 8dddbf92..2d1a7418 100644
--- a/t/data/SPECS/multi-line-macro2.spec
+++ b/t/data/SPECS/multi-line-macro2.spec
@@ -1,3 +1,5 @@
+# Fix build with rpm-4.20:
+%global debug_package %{nil}
%define foobar echo foo > $RPM_BUILD_ROOT/etc/foo \
echo bar > $RPM_BUILD_ROOT/etc/bar
diff --git a/t/data/SPECS/obsolete-and-conflict/a.spec b/t/data/SPECS/obsolete-and-conflict/a.spec
index f15a27e0..dbb0ebb2 100644
--- a/t/data/SPECS/obsolete-and-conflict/a.spec
+++ b/t/data/SPECS/obsolete-and-conflict/a.spec
@@ -1,3 +1,6 @@
+# Fix build with rpm-4.20:
+%global debug_package %{nil}
+
Summary: a
Name: a
Version: 1
diff --git a/t/data/SPECS/obsolete-and-conflict/b.spec b/t/data/SPECS/obsolete-and-conflict/b.spec
index 96aa265b..2bf98a5c 100644
--- a/t/data/SPECS/obsolete-and-conflict/b.spec
+++ b/t/data/SPECS/obsolete-and-conflict/b.spec
@@ -1,3 +1,6 @@
+# Fix build with rpm-4.20:
+%global debug_package %{nil}
+
Summary: b
Name: b
Version: 1
diff --git a/t/data/SPECS/obsolete-and-conflict/c.spec b/t/data/SPECS/obsolete-and-conflict/c.spec
index 2cacfc00..c18c03df 100644
--- a/t/data/SPECS/obsolete-and-conflict/c.spec
+++ b/t/data/SPECS/obsolete-and-conflict/c.spec
@@ -1,3 +1,5 @@
+# Fix build with rpm-4.20:
+%global debug_package %{nil}
Summary: c
Name: c
Version: 1
diff --git a/t/data/SPECS/various.spec b/t/data/SPECS/various.spec
index 250f737c..5cf933f8 100644
--- a/t/data/SPECS/various.spec
+++ b/t/data/SPECS/various.spec
@@ -1,3 +1,5 @@
+# Fix build with rpm-4.20:
+%global debug_package %{nil}
Summary: various
Name: various
Version: 1
diff --git a/t/data/SPECS/various2.spec b/t/data/SPECS/various2.spec
index 6a10084c..a14d786d 100644
--- a/t/data/SPECS/various2.spec
+++ b/t/data/SPECS/various2.spec
@@ -1,3 +1,5 @@
+# Fix build with rpm-4.20:
+%global debug_package %{nil}
Summary: various2
Name: various2
Version: 1
diff --git a/t/data/SPECS/various3.spec b/t/data/SPECS/various3.spec
index 74e08459..5a061f52 100644
--- a/t/data/SPECS/various3.spec
+++ b/t/data/SPECS/various3.spec
@@ -1,3 +1,5 @@
+# Fix build with rpm-4.20:
+%global debug_package %{nil}
Summary: various3
Name: various3
Version: 1
diff --git a/t/data/rpm-i586-to-i686/libfoobar-1-1.i586.rpm b/t/data/rpm-i586-to-i686/libfoobar-1-1.i586.rpm
new file mode 100644
index 00000000..ed0d9211
--- /dev/null
+++ b/t/data/rpm-i586-to-i686/libfoobar-1-1.i586.rpm
Binary files differ
diff --git a/t/data/rpm-i586-to-i686/libfoobar-1-1.i686.rpm b/t/data/rpm-i586-to-i686/libfoobar-1-1.i686.rpm
new file mode 100644
index 00000000..94055db8
--- /dev/null
+++ b/t/data/rpm-i586-to-i686/libfoobar-1-1.i686.rpm
Binary files differ
diff --git a/t/gendistrib b/t/gendistrib
index 193c3a64..e0457505 100755
--- a/t/gendistrib
+++ b/t/gendistrib
@@ -1,4 +1,4 @@
-#!/usr/bin/perl5.32.1
+#!/usr/bin/perl
(our $VERSION) = q(Id: gendistrib 20724 2006-11-30 13:13:27Z rafael ) =~ /(\d+)/;
diff --git a/t/genhdlist2 b/t/genhdlist2
index 8799086e..04c95b7d 100755
--- a/t/genhdlist2
+++ b/t/genhdlist2
@@ -1,4 +1,4 @@
-#!/usr/bin/perl5.32.1
+#!/usr/bin/perl
our ($VERSION) = q(Id: genhdlist2 20460 2006-11-23 13:19:11Z pixel ) =~ /(\d+\.\d+)/;
diff --git a/t/superuser--i586-to-i686.t b/t/superuser--i586-to-i686.t
new file mode 100644
index 00000000..6ff3914e
--- /dev/null
+++ b/t/superuser--i586-to-i686.t
@@ -0,0 +1,22 @@
+#!/usr/bin/perl
+
+# kernel-desktop-latest request latest kernel-desktop-foobar
+#
+use strict;
+use lib '.', 't';
+use helper;
+use urpm::cfg;
+use urpm::orphans;
+use Test::More 'no_plan';
+
+need_root_and_prepare();
+
+my $arch = urpm::cfg::get_arch();
+my $name = 'kernel';
+my $medium = 'i586-to-i686';
+urpmi_addmedia("$medium $::pwd/media/rpm-i586-to-i686/");
+urpmi("--media $medium --auto libfoobar-1-1.i586");
+check_installed_names('libfoobar');
+urpmi("--media $medium --auto libfoobar-1-1.i686");
+is(`rpm -q --qf '%{NVRA}' --root $::pwd/root libfoobar`, 'libfoobar-1-1.i686', 'i686 pkgs is installed (aka upgraded)');
+check_installed_and_remove('libfoobar');
diff --git a/t/superuser--orphans-kernels.t b/t/superuser--orphans-kernels.t
new file mode 100644
index 00000000..4fe25d43
--- /dev/null
+++ b/t/superuser--orphans-kernels.t
@@ -0,0 +1,50 @@
+#!/usr/bin/perl
+
+# kernel-desktop-latest request latest kernel-desktop-foobar
+#
+use strict;
+use lib '.', 't';
+use helper;
+use urpm::cfg;
+use urpm::orphans;
+use Test::More 'no_plan';
+
+need_root_and_prepare();
+
+my $arch = urpm::cfg::get_arch();
+my $name = 'kernel';
+my $dkms_name = 'virtualbox';
+urpmi_addmedia("$name-1 $::pwd/media/$name-1");
+urpmi_addmedia("$name-2 $::pwd/media/$name-2");
+
+# we want urpmi --auto-select to always check orphans (when not using --auto-orphans)
+set_urpmi_cfg_global_options({ 'nb-of-new-unrequested-pkgs-between-auto-select-orphans-check' => 0 });
+
+# old naming, each kernel NVR is N=kernel-desktop-5.6.2-1, V=1 R=1.mga8
+test_unorphan_kernels("$name-1", 'kernel-desktop-latest');
+# new naming, each kernel NVR is N=kernel-desktop, V=5.6.2 R=1.mga8
+test_unorphan_kernels("$name-2", 'kernel-desktop-latest', 'kernel-desktop');
+
+# FIXME: add virtualbox-kernel-XXX -> kernel-XXX
+sub test_unorphan_kernels {
+ my ($medium, $pkg, $o_pkg2) = @_;
+ my $base_kversion = '5.15.4';
+ my $dkms_version = '6.1.36';
+ #my $latest_dkms_dep = 'virtualbox-kernel-5.15.45-desktop-1'; # harcoded but no choice...
+ my $latest_dkms_dep = "virtualbox-kernel-${base_kversion}5-desktop-1"; # harcoded but no choice...
+ my ($latest_kpkg, $latest_dpkg);
+ print "# test_unorphan_kernels($pkg) ($base_kversion)\n";
+ foreach (1..5) {
+ $latest_kpkg = "$pkg-${base_kversion}$_-1";
+ urpmi("--media $medium --auto $latest_kpkg");
+ # Add some DKMS packages:
+ $latest_dpkg = "$dkms_name-$pkg-${dkms_version}-$_.$arch";
+ urpmi("--media $medium --auto $latest_dpkg");
+ }
+ #urpmi("--media $medium --auto $pkg");
+ urpme("--auto --auto-orphans");
+ $o_pkg2 ||= $latest_kpkg;
+ $o_pkg2 =~ s/-latest//;
+ check_installed_and_remove($pkg, 'virtualbox-kernel-desktop-latest', $o_pkg2, $latest_dkms_dep);
+}
+
diff --git a/urpm.pm b/urpm.pm
index d54a4b6b..95bb9558 100644
--- a/urpm.pm
+++ b/urpm.pm
@@ -14,7 +14,7 @@ use urpm::md5sum;
# perl_checker: require urpm::media
# perl_checker: require urpm::parallel
-our $VERSION = 'v8.130';
+our $VERSION = 'v8.133';
our @ISA = qw(URPM Exporter);
our @EXPORT_OK = ('file_from_local_url', 'file_from_local_medium', 'is_local_medium');
diff --git a/urpm/orphans.pm b/urpm/orphans.pm
index 1ea0d60c..aea64fb4 100644
--- a/urpm/orphans.pm
+++ b/urpm/orphans.pm
@@ -1,7 +1,7 @@
package urpm::orphans;
use strict;
-use urpm::util qw(add2hash_ append_to_file cat_ output_safe partition put_in_hash uniq wc_l);
+use urpm::util qw(add2hash_ append_to_file cat_ member output_safe partition put_in_hash uniq wc_l);
use urpm::msg;
use urpm;
@@ -421,6 +421,27 @@ sub _get_current_kernel_package() {
-e "/boot/vmlinuz-$release" && ($release, `rpm -qf --qf '%{name}' /boot/vmlinuz-$release`);
}
+=item _replace_kernel_by_its_provide($urpm, $pkg)
+
+Take a dep, replace it by the pkg providing it.
+Eg:
+Return the current kernel's package so that we can filter out current running
+kernel:
+
+On mdv & mga[1-8], it's for getting the fullname of the matching pkg.
+Eg: kernel-desktop-5.15.45-1.mga8 -> kernel-desktop-5.15.45-1.mga8-1-1.x86_64
+
+On mga9+:
+We've "kernel-desktop[== 5.15.45-1]", we want to find pkg providing that, eg the NVRA of the pkg named 'kernel-desktop' whose version matches.
+
+=cut
+
+sub _replace_kernel_by_its_provide {
+ my ($urpm, $pkg) = @_;
+ my ($req) = grep { /^kernel/ } $pkg->requires;
+ my @a = $urpm->find_candidate_packages($req);
+ $a[0];
+}
=item _kernel_callback ($pkg, $unreq_list)
@@ -430,7 +451,7 @@ _fast_ version w/o looking at all non kernel packages requires on
kernels (like "urpmi_find_leaves '^kernel'" would)
_all_unrequested_orphans blacklists nearly all kernels b/c of packages
-like 'ndiswrapper' or 'basesystem' that requires 'kernel'
+like 'ndiswrapper' or 'basesystem' that requires 'kernel' (on mga < 9)
rationale: other packages only require 'kernel' or a sub package we
do not care about (eg: kernel-devel, kernel-firmware, kernel-latest)
@@ -438,9 +459,12 @@ so it's useless to look at them
=cut
+# @req_by_latest_kernels tracks kernels needed by kernel*-latest
+# %requested_kernels tracks which pkgs requires which kernel pkg
+# %kernels tracks !"*-latest" kernels (to be later filtered)
my (@req_by_latest_kernels, %requested_kernels, %kernels);
sub _kernel_callback {
- my ($pkg, $unreq_list) = @_;
+ my ($urpm, $pkg, $unreq_list) = @_;
my $shortname = $pkg->name;
my $n = $pkg->fullname;
@@ -461,9 +485,10 @@ sub _kernel_callback {
# keep track of packages required by latest kernels in order not to try removing requested kernels:
if ($n =~ /latest/) {
- push @req_by_latest_kernels, $pkg->requires;
+ my $kpkg = _replace_kernel_by_its_provide($urpm, $pkg);
+ push @req_by_latest_kernels, scalar $kpkg->fullname if $kpkg;
} else {
- $kernels{$shortname} = $pkg;
+ $kernels{$n} = $pkg;
}
}
@@ -494,23 +519,37 @@ sub _all_unrequested_orphans {
my (%l, %provides);
# 1- list explicit provides (not files) from installed packages:
+
+ my $need_expand = 0;
foreach my $pkg (@$unreq) {
- $l{$pkg->name} = $pkg;
+ $l{$pkg->fullname} = $pkg;
+ my $n = $pkg->name;
+ # Instead of hardcoding desktop/linus/server/... flavors, blacklist:
+ $need_expand++ if $n =~ /^kernel-(\w+)$/ && !member($1, qw(doc firmware source));
push @{$provides{$_}}, $pkg foreach $pkg->provides_nosense;
}
my $unreq_list = unrequested_list($urpm);
+ # we need to replace/augment eg "kernel-desktop" by the "kernel-desktop-V-R" for each installed kernel:
+ if ($need_expand) {
+ $kernels{$_->fullname} = $_ foreach grep { /^kernel/ } @$unreq;
+ }
+
my ($current_kernel_version, $current_kernel) = _get_current_kernel_package();
# 2- check if "unrequested" packages are still needed:
while (my $pkg = shift @$req) {
# do not do anything regarding kernels if we failed to detect the running one (ie: chroot)
- _kernel_callback($pkg, $unreq_list) if $current_kernel;
+ _kernel_callback($urpm, $pkg, $unreq_list) if $current_kernel;
foreach my $prop ($pkg->requires, $pkg->recommends_nosense) {
my $n = URPM::property2name($prop);
foreach my $p (@{$provides{$n} || []}) {
- if ($p != $pkg && $l{$p->name} && $p->provides_overlap($prop)) {
- delete $l{$p->name};
+ # FIXME: hackish in order to fix orphaning kernels with virtualbox installed on mga9+
+ # TODO: check if something else that's not orphaned still provides it instead
+ next if $n eq 'kmod(vboxdrv.ko)';
+ my $pfn = $p->fullname;
+ if ($p != $pkg && $l{$pfn} && $p->provides_overlap($prop)) {
+ delete $l{$pfn};
push @$req, $p;
}
}
@@ -573,6 +612,8 @@ Returns the list of unrequested packages (aka orphans).
It is quite fast. the slow part is the creation of
$installed_packages_packed (using installed_packages_packed())
+Used by C<urpmq --auto_orphans>
+
=cut
#
diff --git a/urpmi.pm b/urpmi.pm
index add3a869..bd9a6e13 100644
--- a/urpmi.pm
+++ b/urpmi.pm
@@ -4,6 +4,6 @@ use strict;
# Dummy package for CPAN testers
-our $VERSION = '8.130';
+our $VERSION = '8.133';
1;