"yum update gcc" runs into libmudflap-devel

Michael Schwendt mschwendt.tmp0701.nospam at arcor.de
Wed Nov 11 14:43:06 UTC 2009

On Wed, 11 Nov 2009 08:02:45 -0500 (EST), Robert wrote:

> > Unfortunately, you've killed the test-case by working around the
> > problem. Or perhaps you still have the full Yum output?
>   is there any further interest in trying to figure out what happened
> there?

Only a Yum developer [or somebody with intimate knowledge of potential
fields of failure in Yum update depsolving] could answer that. And with
that we would be back at the "collecting details" step as long as a
problem was reproducible for you. The opportunity to take a close look
[or to run a few queries at least] is lost, though.

> as someone else explained, the libmudflap and libmudflap-devel
> packages are built from the gcc source rpm, so i'm curious as to how,
> in the .spec file, one ties those generated packages back to the
> original gcc source, to make sure they all get updated equivalently
> (if that is, in fact, what is supposed to happen).
>   i downloaded the most recent gcc source rpm and this appears to be
> the relevant snippet from the .spec file:
> =====
> %package -n libmudflap
> Summary: GCC mudflap shared support library
> Group: System Environment/Libraries
> %description -n libmudflap
> This package contains GCC shared support library which is needed
> for mudflap support.
> %package -n libmudflap-devel
> Summary: GCC mudflap support
> Group: Development/Libraries
> Requires: libmudflap = %{version}-%{release}
> Requires: gcc = %{version}-%{release}
> %description -n libmudflap-devel
> This package contains headers and static libraries for building
> mudflap-instrumented programs.
> =====
>   i'm no expert at .spec files (especially ones that generate multiple
> packages), but is the above supposed to guarantee that, if one updates
> any one of gcc, libmudflap or libmudflap-devel, then *all* of them
> must be updated identically?

Yes, sort of.  Above, libmudflap-devel requires a specific release of its
base library package and also a specific gcc package release. In terms of
RPM dependencies this means, you can only install this package, if the
required package releases get installed at the same time [or are installed
already and listed in the local RPM database].

For Yum this means, that if you run "yum update gcc", it will first
attempt at updating _only_ "gcc" as that is what you requested, but while
continueing to solve new/changed dependencies it will consider the newest
libmudflap-devel, because it will notice that the old installed one
requires a gcc package release that is no longer available [because it
would be replaced with the newest release found in the repos]. In other
words, Yum is designed specifically to consider any other packages, which
you haven't asked for but which may be needed to resolve dependencies.

>   and this is probably a silly question, but is there a reason that
> libmudflap doesn't have a "Requires" directive for gcc, whereas
> libmudflap does?  i probably need to do more reading here.

Developing/compiling with libmudflap-devel requires a specific gcc,
whereas libmudflap is a run-time package for the shared libraries which
don't depend on the compiler package.

More information about the fedora-test-list mailing list