Bug 19509 - createrepo_c is purging requires with versions different from provides in the same package in metadata
Summary: createrepo_c is purging requires with versions different from provides in the...
Status: RESOLVED FIXED
Alias: None
Product: Mageia
Classification: Unclassified
Component: RPM Packages (show other bugs)
Version: Cauldron
Hardware: All Linux
Priority: release_blocker critical
Target Milestone: Mageia 6
Assignee: Sysadmin Team
QA Contact: Neal Gompa
URL:
Whiteboard:
Keywords:
: 19525 (view as bug list)
Depends on: 19525
Blocks:
  Show dependency treegraph
 
Reported: 2016-10-02 17:42 CEST by Marja Van Waes
Modified: 2017-03-22 22:40 CET (History)
5 users (show)

See Also:
Source RPM: createrepo_c-0.10.0-1.mga6.src.rpm
CVE:
Status comment: infra_5 needs to pull updates and regenerate metadata


Attachments

Description Marja Van Waes 2016-10-02 17:42:55 CEST
Updating Mutter with DNF is impossible.

The list of packages to install and upgrade appears, but when you continue it errors out with:

Error: transaction check vs depsolve:
typelib(Cogl) = 2.0 is needed by mutter-3.22.0-6.mga6.x86_64

However, "urpmi --auto-update" has no problem finding and installing the needed
lib64cogl-gir2.0-1.22.2-1.mga6 package, and thus no problem updating Mutter.

I have _not_ tried on a 32bit system
Comment 1 Neal Gompa 2016-10-02 18:34:04 CEST
I was able to reproduce this issue with an install from the Mageia 6 sta1 GNOME LiveDVD.

Name-Version-Release tested against:
dnf-1.1.10-2.mga6
libsolv-0.6.23-3.mga6

The issue also occurs with the versions of libsolv and dnf shipped in the sta1 LiveDVD:
dnf-1.1.9-3.mga6
libsolv-0.6.22-3.mga6

Reproduction steps:
1. Install Mageia 6 sta1 GNOME LiveDVD
2. Run the following prep commands as root on installed system:
   - dnf upgrade dnf* *solv*
   - dnf config-manager --set-disabled cauldron-x86_64 cauldron-updates-x86_64
   - dnf config-manager --set-enabled mageia-x86_64-nonfree updates-x86_64-nonfree
3. Run either "dnf distro-sync" or "dnf upgrade"

Additional info:
Debug solver data collected: http://kinginuyasha.enanocms.org/downloads/mga19509.tar.xz
Neal Gompa 2016-10-02 18:34:17 CEST

Status: NEW => ASSIGNED

Comment 2 Neal Gompa 2016-10-02 18:41:42 CEST
A repoquery with DNF verifies that it can find it:

[~]$ dnf repoquery --whatprovides "typelib(Cogl) = 2.0" --qf "%{name}-%{epoch}:%{version}-%{release}.%{arch}: %{repoid}"
Last metadata expiration check: 0:13:39 ago on Sun Oct  2 11:55:36 2016.
lib64cogl-gir2.0-0:1.22.2-1.mga6.x86_64: mageia-x86_64


Repository queries along with debug solver data with various modes of dnf upgrade/distro-sync actions have been included into the archive: http://kinginuyasha.enanocms.org/downloads/mga19509.tar.xz
Comment 3 Ulrich Beckmann 2016-10-02 21:07:04 CEST
I had the same issue here:
-----------------------------
Running transaction check
Error: transaction check vs depsolve:
typelib(Cogl) = 2.0 is needed by mutter-3.22.0-6.mga6.x86_64
To diagnose the problem, try running: 'rpm -Va --nofiles --nodigest'.
You probably have corrupted RPMDB, running 'rpm --rebuilddb' might fix the issue.

Then I continued with # urpmi --auto-update.

1st)
restarting urpmi
In order to satisfy the 'lib64mutter-gir3.0|muffin|mutter|libmutter-gir3.0' dependency, one of the following packages is needed:
 1- libmutter-gir3.0-3.22.0-6.mga6.i586: GObject Introspection interface description for mutter (to install)
 2- muffin-3.0.4-1.mga6.i586: Window and compositing manager based on Clutter (to install)
What is your choice? (1-2) 

urpmi selected i586 packages in a clean x86_64 installation as dependencies.

2nd)
Disabled i586-repos for urpmi. Then I could successfully upgrade including mutter just like Marja did.

NB: I have snapshots for all steps. So I can retest if needed.

Ulrich

CC: (none) => bequimao.de

Comment 4 Neal Gompa 2016-10-04 11:04:06 CEST
The issue has been identified to be at createrepo_c, per Michael Schroeder in #rpm-ecosystem.

[04:38:26 AM]  <mls>	It seems that there's logic to remove requires that are also in provides
[04:38:44 AM]  <mls>	but it removes both typelib(Cogl) = 1.0 and typelib(Cogl) = 2.0
[04:38:56 AM]  <mls>	(It's kinda weird that mutter requires both)

[04:47:46 AM]  <mls>	seems like it really just checks the name and ignores the rest of the dep ;(
[04:48:12 AM]  <mls>	parsehdr.c, line 368

I'm changing the bug accordingly.

Summary: updating Mutter with DNF is impossible [typelib(Cogl) = 2.0 needed by mutter 3.22] => createrepo_c is purging requires with versions different from provides
Source RPM: dnf ? => createrepo_c-0.10.0-1.mga6.src.rpm

Neal Gompa 2016-10-04 11:04:29 CEST

Summary: createrepo_c is purging requires with versions different from provides => createrepo_c is purging requires with versions different from provides in the same package in metadata

Comment 5 Neal Gompa 2016-10-04 11:20:59 CEST
Upstream bug filed: https://github.com/rpm-software-management/createrepo_c/issues/67

See Also: (none) => https://github.com/rpm-software-management/createrepo_c/issues/67

Comment 6 Neal Gompa 2016-10-04 12:39:30 CEST
Michael Schroeder has written a patch for it, which I've submitted upstream[1].

I'll be backporting this to our createrepo_c package.

[1]: https://github.com/rpm-software-management/createrepo_c/pull/68
Comment 7 Neal Gompa 2016-10-04 13:07:52 CEST
Patch backport has been done for Cauldron and infra_5.
Neal Gompa 2016-10-04 14:15:28 CEST

See Also: (none) => https://bugs.mageia.org/show_bug.cgi?id=19525

Neal Gompa 2016-10-04 14:17:00 CEST

Depends on: (none) => 19525

Neal Gompa 2016-10-04 14:17:18 CEST

Priority: Normal => release_blocker

Neal Gompa 2016-10-04 15:29:26 CEST

Severity: normal => critical

Comment 8 Rémi Verschelde 2016-10-15 21:04:25 CEST
Submitted to infra_5 infra/updates, we'll need a sysadmin to update the infra_5 and metadata once the package is built.
Rémi Verschelde 2016-10-17 11:44:48 CEST

Status comment: (none) => infra_5 needs to pull updates and regenerate metadata
Assignee: ngompa13 => sysadmin-bugs
QA Contact: (none) => ngompa13

Rémi Verschelde 2016-10-17 11:53:50 CEST

Target Milestone: --- => Mageia 6

Comment 9 Rémi Verschelde 2016-10-17 11:56:52 CEST
*** Bug 19525 has been marked as a duplicate of this bug. ***

CC: (none) => ngompa13

Comment 10 Thomas Backlund 2016-10-17 21:39:16 CEST
[root@duvel ~]# rpm -qa --last |grep create
lib64createrepo_c0-0.10.0-2.mga5.infra.x86_64 Sat 15 Oct 2016 09:35:21 PM CEST
createrepo_c-0.10.0-2.mga5.infra.x86_64       Sat 15 Oct 2016 09:35:21 PM CEST

CC: (none) => tmb

Comment 11 Thomas Backlund 2016-10-17 21:46:16 CEST
And since that packages have been submitted to core/nonfree/tainted so all medias should be properly re-generated
Comment 12 Neal Gompa 2016-10-24 20:06:58 CEST
@Thomas:

Well, it'll certainly fix itself for mutter if I kick it by doing a no-change rebuild, but it will definitely not properly update all repositories as-is, because we do "--update". It won't regenerate metadata for packages that haven't changed since the last time.

Can you do a one-time regeneration by running the createrepo_c command we use without "--update" across all repositories? That will fix the issue entirely.
Comment 13 Pascal Terjan 2016-11-10 14:16:16 CET
Done:

for d in $(find /distrib/bootstrap/distrib/cauldron/ -name repodata); do
  createrepo_c --no-database --workers=10 $(dirname $d)
done

CC: (none) => pterjan

Comment 14 Neal Gompa 2016-11-11 02:45:46 CET
I was able to successfully "dnf distro-sync" Mageia 6 sta1 GNOME to the current Cauldron.

The metadata appears to be fixed.

Status: ASSIGNED => RESOLVED
Resolution: (none) => FIXED

Comment 15 Neal Gompa 2017-03-22 18:45:52 CET
This was incorporated upstream as https://github.com/rpm-software-management/createrepo_c/pull/70
Comment 16 Nicolas Lécureuil 2017-03-22 22:36:11 CET
what is the status of this bug then ?

CC: (none) => mageia

Comment 17 Neal Gompa 2017-03-22 22:40:41 CET
createrepo_c-0.10.0-3.mga5 in infra_5 has this fix already deployed, and it's been in Cauldron for just as long.

If it hasn't been built/deployed on infra already, it should be, and probably the metadata just needs to be regenerated one more time like done in comment 13.

Then this will be completely done with.

Note You need to log in before you can comment on or make changes to this bug.