Subject: bug#18247: Cyclic dependencies in (gnu package *) modules

From: [email-masked]
Date: Tue, 12 Aug 2014 03:31:44 -0400

I now understand the problem more clearly.

The problem arises when a package in module A inherits from a package in
module B, if there is a cycle in the use-module graph involving A and B.

In this case, (gnu packages base) contains packages that inherit gcc-4.8
from (gnu packages gcc).

Commit c5d837684359e3629c4ac96297a25d1165edcb39 creates cycles between
those two modules.  This fact is not immediately obvious because it only
adds an edge from (gnu packages texinfo) -> (gnu packages gettext).
Here's one such cycle, with ==> being the newly added edge:

  gcc -> texinfo ==> gettext -> xml -> gnome -> glib -> base -> gcc

When there exists a cycle involving two modules, the order in which they
are loaded cannot be assured, because of the way module loading is done
in Guile.

In the short term, it might help to move (gnu packages gcc) into
(gnu packages base), and more generally to avoid inheriting from
imported packages, at least among modules that are likely to be
involved in cycles, such as core modules.

       Mark