[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#40839: Shepherd activation .GO files are not cross-compiled ... and
From: |
Ludovic Courtès |
Subject: |
bug#40839: Shepherd activation .GO files are not cross-compiled ... and the Hurd |
Date: |
Sat, 25 Apr 2020 17:53:40 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/26.3 (gnu/linux) |
Hey ho!
Mathieu Othacehe <address@hidden> skribis:
> That would look like:
>
> (if target
> (with-target target
> (compile-file #$file #:output-file #$output
> #:env env))
> (compile-file #$file #:output-file #$output
> #:env env))
>
>
> Now, the tricky part is the value of target, because
> #$(%current-target-system) might not be correct in that context.
Yes, that brings us back to <https://issues.guix.gnu.org/issue/29296>.
Time flies! But now we really need to address it.
Jan Nieuwenhuizen <address@hidden> skribis:
> + (let ((target (%current-target-system)))
> + (with-extensions (list shepherd)
> + (computed-file (string-append (basename (scheme-file-name file) ".scm")
> + ".go")
> + #~(begin
The problem here is that ‘%current-target-system’ is not resolved in the
right context. Though in practice, it’s “good enough” when using ‘guix
system build --target’ though, because ‘%current-target-system’ is bound
once and for all at the beginning.
What about applying this patch, but adding a FIXME comment above ‘let’
pointing at <https://bugs.gnu.org/29296>?
Also, you can avoid duplicating the ‘compile-file’ call by writing it
like this:
(with-target #$(or target #~%host-type)
(compile-file …))
Thanks!
Ludo’.