guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

62/72: DRAFT: gnu: zig: Default to zig-0.13.


From: guix-commits
Subject: 62/72: DRAFT: gnu: zig: Default to zig-0.13.
Date: Thu, 21 Nov 2024 07:19:52 -0500 (EST)

hako pushed a commit to branch wip-zig-bootstrap
in repository guix.

commit 569803018de83a2b1ab74e07d706412707fa0021
Author: Hilton Chain <hako@ultrarare.space>
AuthorDate: Wed Nov 20 08:00:54 2024 +0800

    DRAFT: gnu: zig: Default to zig-0.13.
    
    * gnu/packages/zig.scm (zig): Use zig-0.13.
    * guix/build-system/zig.scm (#:parallel-build?,#:parallel-tests?): New
    arguments.
    * guix/build/zig-build-system.scm (zig-arguments): New procedure.
    (bulid): Use it and honor #:parallel-build?.
    (check): Use it and honor #:parallel-tests?.
    * gnu/packages/zig-xyz.scm (river)[arguments]<#:zig>: Use zig-0.10.
    (zig-zls)[arguments]<#:zig>: Use zig-0.10.
    <#:zig-release-type>: Set to "safe".
    * gnu/packages/ncdu.scm (ncdu)[arguments]: Remove field.
    
    Change-Id: I1f0087ff39ea9fecb2ad911019d0525f1e6285f6
---
 gnu/packages/ncdu.scm           |  2 --
 gnu/packages/zig-xyz.scm        |  7 ++--
 gnu/packages/zig.scm            |  2 +-
 guix/build-system/zig.scm       |  8 +++++
 guix/build/zig-build-system.scm | 71 ++++++++++++++++++++++++++++++++---------
 5 files changed, 70 insertions(+), 20 deletions(-)

diff --git a/gnu/packages/ncdu.scm b/gnu/packages/ncdu.scm
index ab88f41dad..95d8330410 100644
--- a/gnu/packages/ncdu.scm
+++ b/gnu/packages/ncdu.scm
@@ -71,8 +71,6 @@ ncurses installed.")
                (base32
                 "01g5mpvsm78lkd0yin82gyancrl23npy69qcp3d60vmm72yiwirz"))))
     (build-system zig-build-system)
-    (arguments
-     (list #:zig zig-0.12))
     (inputs (list ncurses `(,zstd "lib")))
     (native-inputs (list pkg-config))
     (properties `((tunable? . #t)))))
diff --git a/gnu/packages/zig-xyz.scm b/gnu/packages/zig-xyz.scm
index 0cd08b6ac6..5c91bdbb21 100644
--- a/gnu/packages/zig-xyz.scm
+++ b/gnu/packages/zig-xyz.scm
@@ -53,6 +53,7 @@
     (build-system zig-build-system)
     (arguments
      (list
+      #:zig zig-0.10
       #:phases
       #~(modify-phases %standard-phases
           (add-after 'install 'install-wayland-session
@@ -122,8 +123,10 @@ mission-critical safety and performance for financial 
services.")
     (build-system zig-build-system)
     (inputs (list zig-0.10 python))
     (arguments
-     ;; The tests fail with memory leaks.
-     (list #:tests? #f))
+     (list #:zig zig-0.10
+           #:zig-release-type "safe"
+           ;; The tests fail with memory leaks.
+           #:tests? #f))
     (synopsis "Zig language server")
     (description
      "Zig Language Server is a language server implementing the @acronym{LSP,
diff --git a/gnu/packages/zig.scm b/gnu/packages/zig.scm
index cf733eaee8..b19b8baa6a 100644
--- a/gnu/packages/zig.scm
+++ b/gnu/packages/zig.scm
@@ -1488,4 +1488,4 @@ toolchain.  Among other features it provides
     (properties `((max-silent-time . 9600)
                   ,@(clang-compiler-cpu-architectures "18")))))
 
-(define-public zig zig-0.10)
+(define-public zig zig-0.13)
diff --git a/guix/build-system/zig.scm b/guix/build-system/zig.scm
index 0ac40b1bde..3574f63507 100644
--- a/guix/build-system/zig.scm
+++ b/guix/build-system/zig.scm
@@ -61,6 +61,8 @@
                     source
                     (tests? #t)
                     (test-target #f)
+                    (parallel-build? #t)
+                    (parallel-tests? #t)
                     (skip-build? #f)
                     (zig-build-flags ''())
                     (zig-test-flags ''())
@@ -83,6 +85,8 @@
                      #:source #+source
                      #:system #$system
                      #:test-target #$test-target
+                     #:parallel-build? #$parallel-build?
+                     #:parallel-tests? #$parallel-tests?
                      #:skip-build? #$skip-build?
                      #:zig-build-flags #$zig-build-flags
                      #:zig-test-flags #$zig-test-flags
@@ -113,6 +117,8 @@
                           (native-search-paths '())
                           (tests? #t)
                           (test-target #f)
+                          (parallel-build? #t)
+                          (parallel-tests? #t)
                           (skip-build? #f)
                           (zig-build-flags ''())
                           (zig-test-flags ''())
@@ -151,6 +157,8 @@
                      #:outputs %outputs
                      #:target #$target
                      #:test-target #$test-target
+                     #:parallel-build? #$parallel-build?
+                     #:parallel-tests? #$parallel-tests?
                      #:inputs %build-target-inputs
                      #:native-inputs %build-host-inputs
                      #:search-paths '#$(map search-path-specification->sexp
diff --git a/guix/build/zig-build-system.scm b/guix/build/zig-build-system.scm
index 0d4a354186..7907eece8e 100644
--- a/guix/build/zig-build-system.scm
+++ b/guix/build/zig-build-system.scm
@@ -34,6 +34,32 @@
 ;; Interesting guide here:
 ;; https://github.com/riverwm/river/blob/master/PACKAGING.md
 
+(define (zig-arguments)
+  (define version-major+minor
+    (let* ((port (open-input-pipe "zig version"))
+           (str  (read-line port)))
+      (close-pipe port)
+      (take (string-split str #\.) 2)))
+  (define (version>=? a b-major b-minor)
+    (let ((a-major (string->number (first a)))
+          (a-minor (string->number (second a))))
+      (or (> a-major b-major)
+          (and (= a-major b-major)
+               (>= a-minor b-minor)))))
+  `(("parallel-jobs" .
+     ,(lambda (jobs)
+        (cond
+         ((version>=? version-major+minor 0 11)
+          (list (string-append "-j" (number->string jobs))))
+         (else '()))))
+    ("release-type" .
+     ,(lambda (type)
+        (cond
+         ((version>=? version-major+minor 0 11)
+          (list (string-append "-Doptimize=Release" (string-capitalize type))))
+         (else
+          (list (string-append "-Drelease-" type))))))))
+
 (define* (unpack-dependencies #:key zig-inputs skip-build? #:allow-other-keys)
   "Unpack and overwrite dependencies specified in build.zig.zon with the ones
 provided in ZIG-INPUTS."
@@ -53,37 +79,52 @@ provided in ZIG-INPUTS."
                 ;; "safe", "fast" or "small", empty for a "debug" build.
                 zig-release-type
                 target
+                parallel-build?
                 skip-build?
                 #:allow-other-keys)
   "Build a given Zig package."
   (when (not skip-build?)
     (setenv "DESTDIR" "out")
-    (let ((call `("zig" "build"
-                  "--prefix"             ""            ;; Don't add /usr
-                  "--prefix-lib-dir"     "lib"
-                  "--prefix-exe-dir"     "bin"
-                  "--prefix-include-dir" "include"
-                  ,@(if target
-                        (list (string-append "-Dtarget=" (zig-target target)))
-                        '())
-                  ,@(if zig-release-type
-                        (list (string-append "-Drelease-" zig-release-type))
-                        '())
-                  "--libc" "/tmp/guix-zig-libc-paths"
-                  ,@zig-build-flags)))
+    (let* ((arguments (zig-arguments))
+           (call `("zig" "build"
+                   "--prefix"             ""            ;; Don't add /usr
+                   "--prefix-lib-dir"     "lib"
+                   "--prefix-exe-dir"     "bin"
+                   "--prefix-include-dir" "include"
+                   ,@(if target
+                         (list (string-append "-Dtarget=" (zig-target target)))
+                         '())
+                   ,@(if parallel-build?
+                         ((assoc-ref arguments "parallel-jobs")
+                          (parallel-job-count))
+                         ((assoc-ref arguments "parallel-jobs")
+                          1))
+                   ,@(if zig-release-type
+                         ((assoc-ref arguments "release-type")
+                          zig-release-type)
+                         '())
+                   "--libc" "/tmp/guix-zig-libc-paths"
+                   ,@zig-build-flags)))
       (format #t "running: ~s~%" call)
       (apply invoke call))))
 
 (define* (check #:key tests?
                 zig-test-flags
                 target
+                parallel-tests?
                 #:allow-other-keys)
   "Run all the tests"
   (when (and tests? (not target))
     (let ((old-destdir (getenv "DESTDIR")))
       (setenv "DESTDIR" "test-out") ;; Avoid colisions with the build output
-      (let ((call `("zig" "build" "test"
-                    ,@zig-test-flags)))
+      (let* ((arguments (zig-arguments))
+             (call `("zig" "build" "test"
+                     ,@(if parallel-tests?
+                           ((assoc-ref arguments "parallel-jobs")
+                            (parallel-job-count))
+                           ((assoc-ref arguments "parallel-jobs")
+                            1))
+                     ,@zig-test-flags)))
         (format #t "running: ~s~%" call)
         (apply invoke call))
       (if old-destdir



reply via email to

[Prev in Thread] Current Thread [Next in Thread]