[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#31392: gnome.scm cannot import (gnu packages rust)
From: |
Ludovic Courtès |
Subject: |
bug#31392: gnome.scm cannot import (gnu packages rust) |
Date: |
Thu, 10 May 2018 00:56:10 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/25.3 (gnu/linux) |
Hello,
Marius Bakke <address@hidden> skribis:
> I'm trying to update librsvg, which requires "rust".
Speaking of which, what are other distros doing? Are all of them
switching to the Rust implementation, or are some keeping the C
implementation?
Not that I’m fond of C, but adding Rust (which is not bootstrapped,
etc.) in this place can be problematic.
> However adding this simple diff:
>
> --- a/gnu/packages/gnome.scm
> +++ b/gnu/packages/gnome.scm
> @@ -114,6 +114,7 @@
> #:use-module (gnu packages pulseaudio)
> #:use-module (gnu packages python)
> #:use-module (gnu packages rdesktop)
> + #:use-module (gnu packages rust)
> #:use-module (gnu packages scanner)
> #:use-module (gnu packages selinux)
> #:use-module (gnu packages slang)
>
> Causes the module to compile (sometimes), but any Guix action results in
> a backtrace similar to this:
Here’s a debugging trick (not as helpful as one might like, but still):
--8<---------------cut here---------------start------------->8---
$ GUIX_PACKAGE_PATH= ./pre-inst-env guile
GNU Guile 2.2.3
Copyright (C) 1995-2017 Free Software Foundation, Inc.
Guile comes with ABSOLUTELY NO WARRANTY; for details type `,show w'.
This program is free software, and you are welcome to redistribute it
under certain conditions; type `,show c' for details.
Enter `,help' for help.
scheme@(guile-user)> (primitive-load "gnu/packages/abiword.scm")
gnu/packages/rust.scm:241:25: error: gcc: unbound variable
Entering a new prompt. Type `,bt' for a backtrace or `,q' to continue.
scheme@(gnu packages rust) [1]> ,bt
1190 (primitive-load "gnu/packages/abiword.scm")
In ice-9/eval.scm:
721:201189 (primitive-eval _)
In ice-9/psyntax.scm:
1235:361188 (expand-top-sequence _ _ _ #f _ _ _)
1182:241187 (parse _ (("placeholder" placeholder)) ((top) #(ribcage () ()
())) _ e # …)
285:101186 (parse _ (("placeholder" placeholder)) (()) _ c&e (eval) (hygiene
#))
In ice-9/eval.scm:
293:341185 (_ #<directory (guile-user) 995140>)
In ice-9/boot-9.scm:
2862:41184 (define-module* _ #:filename _ #:pure _ #:version _ #:imports _ #
_ # _ …)
2071:241183 (call-with-deferred-observers _)
2875:241182 (_)
222:291181 (map1 _)
222:291180 (map1 _)
222:291179 (map1 _)
222:291178 (map1 _)
222:291177 (map1 _)
222:291176 (map1 _)
222:171175 (map1 (((gnu packages autotools)) ((gnu packages boost)) ((gnu #
#)) # …))
2788:171174 (resolve-interface (gnu packages autotools) #:select _ #:hide _
#:prefix …)
[...]
In unknown file:
22 (primitive-load-path "gnu/packages/gnome" #<procedure 1311b40 at
ice-9/b…>)
In gnu/packages/gnome.scm:
49:0 21 (_)
In ice-9/boot-9.scm:
2862:4 20 (define-module* _ #:filename _ #:pure _ #:version _ #:imports _
#:exports …)
2875:24 19 (_)
222:29 18 (map1 _)
222:29 17 (map1 _)
222:29 16 (map1 _)
222:29 15 (map1 _)
222:29 14 (map1 _)
222:29 13 (map1 _)
222:29 12 (map1 _)
222:29 11 (map1 _)
222:29 10 (map1 _)
222:29 9 (map1 _)
222:29 8 (map1 _)
222:17 7 (map1 (((gnu packages rust)) ((gnu packages admin)) ((gnu packages
#)) …))
2788:17 6 (resolve-interface (gnu packages rust) #:select _ #:hide _
#:prefix _ # _ …)
2714:10 5 (_ (gnu packages rust) _ _ #:ensure _)
2982:16 4 (try-module-autoload _ _)
2312:4 3 (save-module-excursion _)
3002:22 2 (_)
In unknown file:
1 (primitive-load-path "gnu/packages/rust" #<procedure 1311a40 at
ice-9/bo…>)
In gnu/packages/rust.scm:
241:25 0 (_)
scheme@(gnu packages rust) [1]> ,error
gnu/packages/rust.scm:241:25: error: gcc: unbound variable
--8<---------------cut here---------------end--------------->8---
The issue was the reference to ‘gcc’ from the ‘native-search-paths’
field (a “top level reference” because it’s executed as soon as we load
rust.scm.) While Guile allows for circular dependencies among modules,
it only works if the top-level of modules don’t look up variables
exported by each other, if you see what I mean.
Fixed in afc2bf53066975558676bc7f4957ad85d0ec170a.
Thanks,
Ludo’.