From mboxrd@z Thu Jan 1 00:00:00 1970 From: ludo@gnu.org (Ludovic =?UTF-8?Q?Court=C3=A8s?=) Subject: bug#18247: Cyclic dependencies in (gnu package *) modules Date: Mon, 11 Aug 2014 23:07:50 +0200 Message-ID: <87d2c6razd.fsf@gnu.org> References: <87egwmbxln.fsf@netris.org> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:47227) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XGwp7-0004Vz-6b for bug-guix@gnu.org; Mon, 11 Aug 2014 17:08:15 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XGwp0-00028R-V3 for bug-guix@gnu.org; Mon, 11 Aug 2014 17:08:09 -0400 Received: from debbugs.gnu.org ([140.186.70.43]:32780) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XGwp0-00027u-RJ for bug-guix@gnu.org; Mon, 11 Aug 2014 17:08:02 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.80) (envelope-from ) id 1XGwp0-0007Ra-6Q for bug-guix@gnu.org; Mon, 11 Aug 2014 17:08:02 -0400 Sender: "Debbugs-submit" Resent-Message-ID: In-Reply-To: <87egwmbxln.fsf@netris.org> (mhw@netris.org's message of "Mon, 11 Aug 2014 16:05:56 -0400") List-Id: Bug reports for GNU Guix List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-guix-bounces+gcggb-bug-guix=m.gmane.org@gnu.org Sender: bug-guix-bounces+gcggb-bug-guix=m.gmane.org@gnu.org To: mhw@netris.org Cc: 18247@debbugs.gnu.org mhw@netris.org skribis: > I'm currently unable to compile guix from git, with error messages that > suggest cyclic dependencies between the modules. Indeed. That is fixed by reverting c5d8376. Can you confirm? > I just computed the strongly connected components of the (gnu package > *) modules. The non-trivial ones are listed below. > > There are three cycles of size 2: > > ((gnu packages emacs) (gnu packages version-control)) > ((gnu packages flex) (gnu packages bison)) > ((gnu packages python) (gnu packages zip)) > > And one large strongly-connected component containing 51 modules: Ouch. Well, that is not really a problem per se. The real problem is when top-level bindings refer to each other, of course. But anyway, I agree we need tooling or something to help deal with this kind of issues. Perhaps something like the script you posted, but that would look at the set of bindings referenced from the top-level of a module? Or can we do better? If Guile supported phases, such circular references would not be a problem since it would not have to evaluate all of the imported modules at expansion phase, just the =E2=80=98define-module=E2=80=99 clause. Thanks, Ludo=E2=80=99.