GNU bug report logs -
#37586
Import cycles in unrelated packages should not be an error
Previous Next
To reply to this bug, email your comments to 37586 AT debbugs.gnu.org.
Toggle the display of automated, internal messages from the tracker.
Report forwarded
to
bug-guix <at> gnu.org
:
bug#37586
; Package
guix
.
(Wed, 02 Oct 2019 17:16:02 GMT)
Full text and
rfc822 format available.
Acknowledgement sent
to
"pelzflorian (Florian Pelz)" <pelzflorian <at> pelzflorian.de>
:
New bug report received and forwarded. Copy sent to
bug-guix <at> gnu.org
.
(Wed, 02 Oct 2019 17:16:04 GMT)
Full text and
rfc822 format available.
Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
I am annoyed by another import cycle similar to
<https://issues.guix.info/issue/37346> in an unfinished package I’m
writing. They needlessly complicate packaging and make packagers
split modules that logically should not be split.
Is it possible to make import cycles not an error in Guix packages?
These errors do not surface during module compilation but only when
running guix show or guix build or similar. I suppose that means
changing the way they are evaluated could make packages not care about
dependencies in unrelated packages that just happen to be in the same
module, could it?
Regards,
Florian
Information forwarded
to
bug-guix <at> gnu.org
:
bug#37586
; Package
guix
.
(Sun, 06 Oct 2019 10:01:02 GMT)
Full text and
rfc822 format available.
Message #8 received at 37586 <at> debbugs.gnu.org (full text, mbox):
Hi Florian,
"pelzflorian (Florian Pelz)" <pelzflorian <at> pelzflorian.de> skribis:
> I am annoyed by another import cycle similar to
> <https://issues.guix.info/issue/37346> in an unfinished package I’m
> writing. They needlessly complicate packaging and make packagers
> split modules that logically should not be split.
I agree that this is annoying.
> 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.
> These errors do not surface during module compilation but only when
> running guix show or guix build or similar. I suppose that means
> changing the way they are evaluated could make packages not care about
> dependencies in unrelated packages that just happen to be in the same
> module, could it?
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.
Thanks,
Ludo’.
Information forwarded
to
bug-guix <at> gnu.org
:
bug#37586
; Package
guix
.
(Sun, 06 Oct 2019 10:41:01 GMT)
Full text and
rfc822 format available.
Message #11 received at 37586 <at> debbugs.gnu.org (full text, mbox):
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 249 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.