GNU bug report logs - #70005
[PATCH 0/1] guix: chicken-build-system: fix the build system

Previous Next

Package: guix-patches;

Reported by: Daniel Ziltener <dziltener <at> lyrion.ch>

Date: Tue, 26 Mar 2024 15:22:03 UTC

Severity: normal

Tags: patch

To reply to this bug, email your comments to 70005 AT debbugs.gnu.org.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to guix-patches <at> gnu.org:
bug#70005; Package guix-patches. (Tue, 26 Mar 2024 15:22:03 GMT) Full text and rfc822 format available.

Acknowledgement sent to Daniel Ziltener <dziltener <at> lyrion.ch>:
New bug report received and forwarded. Copy sent to guix-patches <at> gnu.org. (Tue, 26 Mar 2024 15:22:03 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Daniel Ziltener <dziltener <at> lyrion.ch>
To: guix-patches <at> gnu.org
Cc: dziltener <at> lyrion.ch
Subject: [PATCH 0/1] guix: chicken-build-system: fix the build system
Date: Tue, 26 Mar 2024 14:55:48 +0100
The build system for Chicken as-is works for basic eggs, but contains some
assumptions that make it fail with more sophisticated ones. The main wrong
assumption is that CHICKEN_INSTALL_REPOSITORY is enough to cover all cases; it
is not. CHICKEN_INSTALL_PREFIX is needed, too, and CHICKEN_REPOSITORY_PATH has
to be concatenated to the CHICKEN_INSTALL_REPOSITORY.

I also took the liberty to move the env variable definitions all to one place
to improve readability.

Daniel Ziltener (1):
  guix: chicken-build-system: fix the build system

 guix/build-system/chicken.scm       | 42 +++++++++++++++++++++--------
 guix/build/chicken-build-system.scm | 24 +++++++----------
 2 files changed, 41 insertions(+), 25 deletions(-)

-- 
2.41.0





Information forwarded to guix-patches <at> gnu.org:
bug#70005; Package guix-patches. (Tue, 26 Mar 2024 15:35:02 GMT) Full text and rfc822 format available.

Message #8 received at 70005 <at> debbugs.gnu.org (full text, mbox):

From: Daniel Ziltener <dziltener <at> lyrion.ch>
To: 70005 <at> debbugs.gnu.org
Cc: dziltener <at> lyrion.ch
Subject: [PATCH 1/1] guix: chicken-build-system: fix the build system
Date: Tue, 26 Mar 2024 14:48:06 +0100
---
 guix/build-system/chicken.scm       | 42 +++++++++++++++++++++--------
 guix/build/chicken-build-system.scm | 24 +++++++----------
 2 files changed, 41 insertions(+), 25 deletions(-)

diff --git a/guix/build-system/chicken.scm b/guix/build-system/chicken.scm
index 9f518e66e6..e2b512446a 100644
--- a/guix/build-system/chicken.scm
+++ b/guix/build-system/chicken.scm
@@ -2,6 +2,7 @@
 ;;; Copyright © 2020 raingloom <raingloom <at> riseup.net>
 ;;; Copyright © 2021 Ludovic Courtès <ludo <at> gnu.org>
 ;;; Copyright © 2021 Xinglu Chen <public <at> yoctocell.xyz>
+;;; Copyright © 2024 Daniel Ziltener <dziltener <at> lyrion.ch>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -23,9 +24,12 @@ (define-module (guix build-system chicken)
   #:use-module (guix gexp)
   #:use-module (guix store)
   #:use-module (guix monads)
+  #:use-module (guix download)
   #:use-module (guix search-paths)
   #:use-module (guix build-system)
   #:use-module (guix build-system gnu)
+  #:use-module (ice-9 match)
+  #:use-module (srfi srfi-1)
   #:use-module (guix packages)
   #:export (%chicken-build-system-modules
             chicken-build
@@ -40,15 +44,15 @@ (define* (egg-uri name version #:optional (extension ".tar.gz"))
 
 (define %chicken-build-system-modules
   ;; Build-side modules imported and used by default.
-  `((guix build chicken-build-system)
+  `((zilti build chicken-build-system)
     (guix build union)
     ,@%gnu-build-system-modules))
 
 (define (default-chicken)
+  "Return the default Chicken package."
   ;; Lazily resolve the binding to avoid a circular dependency.
-  ;; TODO is this actually needed in every build system?
   (let ((chicken (resolve-interface '(gnu packages chicken))))
-      (module-ref chicken 'chicken)))
+    (module-ref chicken 'chicken)))
 
 (define* (lower name
                 #:key source inputs native-inputs outputs system target
@@ -57,7 +61,7 @@ (define* (lower name
                 #:rest arguments)
   "Return a bag for NAME."
   (define private-keywords
-    '(#:target #:chicken #:inputs #:native-inputs))
+    '(#:target #:chicken #:inputs #:native-inputs #:outputs))
 
   ;; TODO: cross-compilation support
   (and (not target)
@@ -77,22 +81,35 @@ (define private-keywords
                          ,@native-inputs))
          (outputs outputs)
          (build chicken-build)
-         (arguments (strip-keyword-arguments private-keywords arguments)))))
+         (arguments
+          (substitute-keyword-arguments
+              (strip-keyword-arguments private-keywords arguments)
+            ((#:extra-directories extra-directories)
+             `(list ,@(append-map
+                       (lambda (name)
+                         (match (assoc name inputs)
+                           ((_ pkg)
+                            (match (package-transitive-propagated-inputs pkg)
+                              (((propagated-names . _) ...)
+                               (cons name propagated-names))))))
+                       extra-directories))))))))
 
 (define* (chicken-build name inputs
-                        #:key
-                        source
+                        #:key source
+                        (tests? #t)
+                        (parallel-build? #f)
+                        (build-flags ''())
+                        (configure-flags ''())
+                        (extra-directories ''())
                         (phases '%standard-phases)
-                        (outputs '("out"))
+                        (outputs '("out" "static"))
                         (search-paths '())
                         (egg-name "")
                         (unpack-path "")
-                        (build-flags ''())
-                        (tests? #t)
                         (system (%current-system))
                         (guile #f)
                         (imported-modules %chicken-build-system-modules)
-                        (modules '((guix build chicken-build-system)
+                        (modules '((zilti build chicken-build-system)
                                    (guix build union)
                                    (guix build utils))))
   (define builder
@@ -103,6 +120,9 @@ (define builder
                          #:source #+source
                          #:system #$system
                          #:phases #$phases
+                         #:configure-flags #$configure-flags
+                         #:extra-directories #$extra-directories
+                         #:parallel-build? #$parallel-build?
                          #:outputs #$(outputs->gexp outputs)
                          #:search-paths '#$(sexp->gexp
                                             (map search-path-specification->sexp
diff --git a/guix/build/chicken-build-system.scm b/guix/build/chicken-build-system.scm
index 8f9f59cc25..0c250e9376 100644
--- a/guix/build/chicken-build-system.scm
+++ b/guix/build/chicken-build-system.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2020 raingloom <raingloom <at> riseup.net>
+;;; Copyright © 2024 Daniel Ziltener <dziltener <at> lyrion.ch>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -42,13 +43,12 @@ (define (chicken-package? name)
 
 (define* (setup-chicken-environment #:key inputs outputs #:allow-other-keys)
   (setenv "CHICKEN_INSTALL_REPOSITORY"
-          (string-concatenate
-           ;; see TODO item about binary version above
-           (append (list (assoc-ref outputs "out") "/var/lib/chicken/11/")
-                   (let ((oldenv (getenv "CHICKEN_INSTALL_REPOSITORY")))
-                     (if oldenv
-                         (list  ":" oldenv)
-                         '())))))
+          (string-append (assoc-ref outputs "out") "/var/lib/chicken/11/"))
+  (setenv "CHICKEN_INSTALL_PREFIX"
+          (assoc-ref outputs "out"))
+  (setenv "CHICKEN_REPOSITORY_PATH"
+          (string-append (getenv "CHICKEN_REPOSITORY_PATH")
+                         ":" (getenv "CHICKEN_INSTALL_REPOSITORY")))
   (setenv "CHICKEN_EGG_CACHE" (getcwd))
   #t)
 
@@ -58,9 +58,9 @@ (define* (setup-chicken-environment #:key inputs outputs #:allow-other-keys)
 (define* (unpack #:key source egg-name unpack-path #:allow-other-keys)
   "Relative to $CHICKEN_EGG_CACHE, unpack SOURCE in UNPACK-PATH, or EGG-NAME
 when UNPACK-PATH is unset.  If the SOURCE archive has a single top level
-directory, it is stripped so that the sources appear directly under UNPACK-PATH.
-When SOURCE is a directory, copy its content into UNPACK-PATH instead of
-unpacking."
+directory, it is stripped so that the sources appear directly under
+UNPACK-PATH.  When SOURCE is a directory, copy its content into UNPACK-PATH
+instead of unpacking."
   (define (unpack-maybe-strip source dest)
     (let* ((scratch-dir (string-append (or (getenv "TMPDIR") "/tmp")
                                        "/scratch-dir"))
@@ -104,10 +104,6 @@ (define* (check #:key egg-name tests? #:allow-other-keys)
   ;; there is no "-test-only" option, but we've already run install
   ;; so this just runs tests.
   ;; i think it's a fair assumption that phases won't be reordered.
-  (setenv "CHICKEN_REPOSITORY_PATH"
-          (string-append (getenv "CHICKEN_INSTALL_REPOSITORY")
-                         ":"
-                         (getenv "CHICKEN_REPOSITORY_PATH")))
   (when tests?
     (invoke "chicken-install" "-cached" "-test" "-no-install" egg-name)))
 
-- 
2.41.0





This bug report was last modified 237 days ago.

Previous Next


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