[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
05/06: services: shepherd: Cross-compilation fix.
From: |
guix-commits |
Subject: |
05/06: services: shepherd: Cross-compilation fix. |
Date: |
Sat, 25 Apr 2020 09:33:28 -0400 (EDT) |
janneke pushed a commit to branch wip-hurd-vm
in repository guix.
commit cc9259a87c46cfa0dc2c59dc425b3656c9eecb13
Author: Jan (janneke) Nieuwenhuizen <address@hidden>
AuthorDate: Sat Apr 25 15:20:04 2020 +0200
services: shepherd: Cross-compilation fix.
Fixes <https://bugs.gnu.org/40839>.
Reported by Jan (janneke) Nieuwenhuizen <address@hidden>
Fix suggested by Mathieu Othacehe <address@hidden>
* gnu/services/shepherd.scm (scm->go): Use `with-target' when
cross-compiling.
---
gnu/services/shepherd.scm | 40 ++++++++++++++++++++++++----------------
1 file changed, 24 insertions(+), 16 deletions(-)
diff --git a/gnu/services/shepherd.scm b/gnu/services/shepherd.scm
index 2f30c6c..ca4edd8 100644
--- a/gnu/services/shepherd.scm
+++ b/gnu/services/shepherd.scm
@@ -25,6 +25,7 @@
#:use-module (guix store)
#:use-module (guix records)
#:use-module (guix derivations) ;imported-modules, etc.
+ #:use-module (guix utils)
#:use-module (gnu services)
#:use-module (gnu services herd)
#:use-module (gnu packages admin)
@@ -260,22 +261,29 @@ stored."
(define (scm->go file)
"Compile FILE, which contains code to be loaded by shepherd's config file,
and return the resulting '.go' file."
- (with-extensions (list shepherd)
- (computed-file (string-append (basename (scheme-file-name file) ".scm")
- ".go")
- #~(begin
- (use-modules (system base compile))
-
- ;; Do the same as the Shepherd's 'load-in-user-module'.
- (let ((env (make-fresh-user-module)))
- (module-use! env (resolve-interface '(oop goops)))
- (module-use! env (resolve-interface '(shepherd
service)))
- (compile-file #$file #:output-file #$output
- #:env env)))
-
- ;; It's faster to build locally than to download.
- #:options '(#:local-build? #t
- #:substitutable? #f))))
+ (let ((target (%current-target-system)))
+ (with-extensions (list shepherd)
+ (computed-file (string-append (basename (scheme-file-name file) ".scm")
+ ".go")
+ #~(begin
+ (use-modules (system base compile)
+ (system base target))
+
+ ;; Do the same as the Shepherd's
'load-in-user-module'.
+ (let ((env (make-fresh-user-module)))
+ (module-use! env (resolve-interface '(oop goops)))
+ (module-use! env (resolve-interface '(shepherd
service)))
+ (if #$target
+ (with-target #$target
+ (lambda _
+ (compile-file #$file #:output-file #$output
+ #:env env)))
+ (compile-file #$file #:output-file #$output
+ #:env env))))
+
+ ;; It's faster to build locally than to download.
+ #:options '(#:local-build? #t
+ #:substitutable? #f)))))
(define (shepherd-configuration-file services)
"Return the shepherd configuration file for SERVICES."
- branch wip-hurd-vm updated (091aceb -> d7353f4), guix-commits, 2020/04/25
- 03/06: system: hurd: Add hurd-grub-configuration-file., guix-commits, 2020/04/25
- 02/06: squash! squash! bare-hurd.tmpl, guix-commits, 2020/04/25
- 01/06: squash! bare-hurd.tmpl, guix-commits, 2020/04/25
- 04/06: system: hurd: Add hurd-grub-minimal-bootloader., guix-commits, 2020/04/25
- 05/06: services: shepherd: Cross-compilation fix.,
guix-commits <=
- 06/06: Revert "HACK use uncompiled .scm for shepherd", guix-commits, 2020/04/25