From 3fac0be4adab0ee63b6473d613982b418cc7ab92 Mon Sep 17 00:00:00 2001 From: Thierry Vignaud Date: Tue, 19 Oct 2021 10:29:05 +0200 Subject: Prevent SRPM to conflicts with its own build deps Aka gdb.src would be conflicting with gdb-minimal which is required by debugedit: "The following packages have to be removed for others to be upgraded: debugedit-5.0-3.mga9.x86_64 (due to missing gdb-minimal) gdb-minimal-10.2-2.mga9.x86_64 (due to conflicts with gdb-headless[> 10.2-2.mga9]) rpm-build-4.17.0-2.mga9.x86_64 (due to unsatisfied debugedit >= 0.3)" Which happen because of this deps chain: rpm-build -> debugedit -> gdb-minimal Where gdb-minimal conflicts with: $ rpm -q --conflicts gdb-minimal gdb-headless < 10.2-2.mga9 gdb-headless > 10.2-2.mga9 Which of course conflicts if urpmi considers the *new* gdb... SRPM... Sigh... Extract of urpmi --debug log ala iurt: selecting gdb-11.1-1.mga9.src requiring bison,dejagnu,expat-devel,flex,fpc,gcc-gfortran,gcc-objc,gcc-plugins,guile3.0-devel,libbabeltrace-devel,libipt-devel,mpfr-devel,python3-devel,readline-devel[>= 6.2-4],rpm-devel,rust,sharutils,source-highlight-devel,texinfo,texinfo-tex,texlive,xxhash-devel for gdb-11.1-1.mga9.src chosen lib64rpm-devel-4.17.0-2.mga9.x86_64 for rpm-devel selecting lib64rpm-devel-4.17.0-2.mga9.x86_64 requiring devel(libcap(64bit)),devel(liblua-5.4(64bit)),devel(libmagic(64bit)),devel(libsqlite3(64bit)),lib64rpm9[== 1:4.17.0-2.mga9],lib64rpmbuild9[== 1:4.17.0-2.mga9],lib64rpmsign9[== 1:4.17.0-2.mga9],rpm[== 1:4.17.0-2.mga9] for lib64rpm-devel-4.17.0-2.mga9.x86_64 (...) chosen lib64rpmbuild9-4.17.0-2.mga9.x86_64 for lib64rpmbuild9[== 1:4.17.0-2.mga9] selecting lib64rpmbuild9-4.17.0-2.mga9.x86_64 set_rejected: lib64rpmbuild9-4.16.1.2-5.mga9.x86_64 (...) installed rpm-build-4.16.1.2-5.mga9.x86_64 is conflicting because of unsatisfied lib64rpmbuild9[== 1:4.16.1.2] promoting rpm-build-4.17.0-2.mga9.x86_64 because of conflict above selecting rpm-build-4.17.0-2.mga9.x86_64 set_rejected: rpm-build-4.16.1.2-5.mga9.x86_64 requiring debugedit[>= 0.3] for rpm-build-4.17.0-2.mga9.x86_64 chosen debugedit-5.0-3.mga9.x86_64 for debugedit[>= 0.3] selecting debugedit-5.0-3.mga9.x86_64 requiring gdb-minimal for debugedit-5.0-3.mga9.x86_64 gdb-minimal-10.2-2.mga9.x86_64 conflicts with already selected package gdb-11.1-1.mga9.src Because it considered: $VAR1 = [ 'gdb-10.2-2.mga9.x86_64', 'gdb-10.2-2.mga9.i586', 'gdb-11.1-1.mga9.src' ]; --- Changes | 2 ++ URPM/Resolve.pm | 1 + 2 files changed, 3 insertions(+) diff --git a/Changes b/Changes index 1c002e8..d57f3b6 100644 --- a/Changes +++ b/Changes @@ -1,3 +1,5 @@ +- Prevent SRPM to conflicts with its own build deps + Version 5.123 - 4 November 2020 - Fix file descriptor leak in rpm transactions diff --git a/URPM/Resolve.pm b/URPM/Resolve.pm index c799dff..24c283b 100644 --- a/URPM/Resolve.pm +++ b/URPM/Resolve.pm @@ -1307,6 +1307,7 @@ sub _handle_conflicts_with_selected { if (my $n = property2name($_)) { foreach my $p ($urpm->packages_providing($n)) { $pkg == $p and next; + $p->arch eq 'src' and next; $p->provides_overlap($_) or next; if (exists $state->{selected}{$p->id}) { $urpm->{debug_URPM}($pkg->fullname . " conflicts with already selected package " . $p->fullname) if $urpm->{debug_URPM}; -- cgit v1.2.1