GNU bug report logs - #37586
Import cycles in unrelated packages should not be an error

Previous Next

Package: guix;

Reported by: "pelzflorian (Florian Pelz)" <pelzflorian <at> pelzflorian.de>

Date: Wed, 2 Oct 2019 17:16:01 UTC

Severity: normal

Full log


View this message in rfc822 format

From: "pelzflorian (Florian Pelz)" <pelzflorian <at> pelzflorian.de>
To: Ludovic Courtès <ludo <at> gnu.org>
Cc: 37586 <at> debbugs.gnu.org
Subject: bug#37586: Import cycles in unrelated packages should not be an error
Date: Sun, 6 Oct 2019 12:40:14 +0200
On Sun, Oct 06, 2019 at 12:00:27PM +0200, Ludovic Courtès wrote:
> "pelzflorian (Florian Pelz)" <pelzflorian <at> pelzflorian.de> skribis:
> > Is it possible to make import cycles not an error in Guix packages?
> 
> Unfortunately no, it’s fundamentally impossible.  When you have:
> 
>   (define-module (a) #:use-module (b))
>   (define-public var-a 42)
> 
> and:
> 
>   (define-module (b) #:use-module (a))
>   (define-public var-b (+ var-a 1))
> 
> you can understand that it will or will not work depending on whether
> (b) or (a) is loaded first.  This is what’s happening here.
> […]
> When you use ‘guix show’ or similar, that goes through the package cache
> created during ‘guix pull’, which allows Guix to load directly the
> module that contains the package.  That order could be different from
> the one you have in your checkout.
> 

Thank you for the explanation.  I now understand that eliminating the
error is not possible within define-module.  Currently, all packages
rely on define-module’s “global” #:use-module form.  How about adding
an alternative per-package, “local” use-module, to load and unload the
dependent module just for this one package?  It appears to be
preferrable to splitting modules.  Is it worth it?

Regards,
Florian




This bug report was last modified 5 years and 252 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.