summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHilton Chain <hako@ultrarare.space>2024-11-20 08:00:54 +0800
committerHilton Chain <hako@ultrarare.space>2024-12-31 10:56:34 +0800
commitbdff1941e51193437dbcefad80d019fd9d5d0aa9 (patch)
treed229690dfa81d125ac2a33ab1acfd2e6568b0e15
parent5ce59e0413510098f92e4b824d2a24b97ad2e4c9 (diff)
gnu: zig: Default to 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.scm (zig): Define as zig-0.13. * gnu/packages/ncdu.scm (ncdu)[arguments]<#:zig>: Unset. <#:zig-release-type>: Set to "safe". <#:zig-build-flags>: Add "-Dpie". * 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". Change-Id: I1f0087ff39ea9fecb2ad911019d0525f1e6285f6
-rw-r--r--gnu/packages/ncdu.scm6
-rw-r--r--gnu/packages/zig-xyz.scm5
-rw-r--r--gnu/packages/zig.scm2
-rw-r--r--guix/build-system/zig.scm8
-rw-r--r--guix/build/zig-build-system.scm65
5 files changed, 70 insertions, 16 deletions
diff --git a/gnu/packages/ncdu.scm b/gnu/packages/ncdu.scm
index c49fefc077e..bbbb2fea26f 100644
--- a/gnu/packages/ncdu.scm
+++ b/gnu/packages/ncdu.scm
@@ -72,8 +72,10 @@ ncurses installed.")
72 "01g5mpvsm78lkd0yin82gyancrl23npy69qcp3d60vmm72yiwirz")))) 72 "01g5mpvsm78lkd0yin82gyancrl23npy69qcp3d60vmm72yiwirz"))))
73 (build-system zig-build-system) 73 (build-system zig-build-system)
74 (arguments 74 (arguments
75 (list #:zig zig-0.12 75 (list #:install-source? #f
76 #:install-source? #f)) 76 #:zig-release-type "safe"
77 #:zig-build-flags
78 #~(list "-Dpie")))
77 (inputs (list ncurses `(,zstd "lib"))) 79 (inputs (list ncurses `(,zstd "lib")))
78 (native-inputs (list pkg-config)) 80 (native-inputs (list pkg-config))
79 (properties `((tunable? . #t))))) 81 (properties `((tunable? . #t)))))
diff --git a/gnu/packages/zig-xyz.scm b/gnu/packages/zig-xyz.scm
index 9c86dde5560..e504e50e237 100644
--- a/gnu/packages/zig-xyz.scm
+++ b/gnu/packages/zig-xyz.scm
@@ -53,6 +53,7 @@
53 (build-system zig-build-system) 53 (build-system zig-build-system)
54 (arguments 54 (arguments
55 (list 55 (list
56 #:zig zig-0.10
56 #:install-source? #f 57 #:install-source? #f
57 #:phases 58 #:phases
58 #~(modify-phases %standard-phases 59 #~(modify-phases %standard-phases
@@ -124,7 +125,9 @@ mission-critical safety and performance for financial services.")
124 (build-system zig-build-system) 125 (build-system zig-build-system)
125 (inputs (list zig-0.10 python)) 126 (inputs (list zig-0.10 python))
126 (arguments 127 (arguments
127 (list #:install-source? #f 128 (list #:zig zig-0.10
129 #:install-source? #f
130 #:zig-release-type "safe"
128 ;; The tests fail with memory leaks. 131 ;; The tests fail with memory leaks.
129 #:tests? #f)) 132 #:tests? #f))
130 (synopsis "Zig language server") 133 (synopsis "Zig language server")
diff --git a/gnu/packages/zig.scm b/gnu/packages/zig.scm
index 2644516e696..13c8fa421ed 100644
--- a/gnu/packages/zig.scm
+++ b/gnu/packages/zig.scm
@@ -1639,4 +1639,4 @@ toolchain. Among other features it provides
1639 (properties `((max-silent-time . 9600) 1639 (properties `((max-silent-time . 9600)
1640 ,@(clang-compiler-cpu-architectures "18"))))) 1640 ,@(clang-compiler-cpu-architectures "18")))))
1641 1641
1642(define-public zig zig-0.10) 1642(define-public zig zig-0.13)
diff --git a/guix/build-system/zig.scm b/guix/build-system/zig.scm
index 6d16303794c..43d6ee977c3 100644
--- a/guix/build-system/zig.scm
+++ b/guix/build-system/zig.scm
@@ -48,6 +48,8 @@
48 source 48 source
49 (tests? #t) 49 (tests? #t)
50 (test-target #f) 50 (test-target #f)
51 (parallel-build? #t)
52 (parallel-tests? #t)
51 (install-source? #t) 53 (install-source? #t)
52 (skip-build? #f) 54 (skip-build? #f)
53 (zig-build-flags ''()) 55 (zig-build-flags ''())
@@ -70,6 +72,8 @@
70 #:source #+source 72 #:source #+source
71 #:system #$system 73 #:system #$system
72 #:test-target #$test-target 74 #:test-target #$test-target
75 #:parallel-build? #$parallel-build?
76 #:parallel-tests? #$parallel-tests?
73 #:install-source? #$install-source? 77 #:install-source? #$install-source?
74 #:skip-build? #$skip-build? 78 #:skip-build? #$skip-build?
75 #:zig-build-flags #$zig-build-flags 79 #:zig-build-flags #$zig-build-flags
@@ -102,6 +106,8 @@
102 (native-search-paths '()) 106 (native-search-paths '())
103 (tests? #t) 107 (tests? #t)
104 (test-target #f) 108 (test-target #f)
109 (parallel-build? #t)
110 (parallel-tests? #t)
105 (install-source? #t) 111 (install-source? #t)
106 (skip-build? #f) 112 (skip-build? #f)
107 (zig-build-flags ''()) 113 (zig-build-flags ''())
@@ -140,6 +146,8 @@
140 #:outputs %outputs 146 #:outputs %outputs
141 #:target #$target 147 #:target #$target
142 #:test-target #$test-target 148 #:test-target #$test-target
149 #:parallel-build? #$parallel-build?
150 #:parallel-tests? #$parallel-tests?
143 #:inputs %build-target-inputs 151 #:inputs %build-target-inputs
144 #:native-inputs %build-host-inputs 152 #:native-inputs %build-host-inputs
145 #:search-paths '#$(map search-path-specification->sexp 153 #:search-paths '#$(map search-path-specification->sexp
diff --git a/guix/build/zig-build-system.scm b/guix/build/zig-build-system.scm
index f6928ad2531..b202c4bce23 100644
--- a/guix/build/zig-build-system.scm
+++ b/guix/build/zig-build-system.scm
@@ -41,6 +41,32 @@
41 (zig-source-install-path 41 (zig-source-install-path
42 (dirname (dirname (dirname (canonicalize-path input)))))) 42 (dirname (dirname (dirname (canonicalize-path input))))))
43 43
44(define (zig-arguments)
45 (define version-major+minor
46 (let* ((port (open-input-pipe "zig version"))
47 (str (read-line port)))
48 (close-pipe port)
49 (take (string-split str #\.) 2)))
50 (define (version>=? a b-major b-minor)
51 (let ((a-major (string->number (first a)))
52 (a-minor (string->number (second a))))
53 (or (> a-major b-major)
54 (and (= a-major b-major)
55 (>= a-minor b-minor)))))
56 `(("parallel-jobs" .
57 ,(lambda (jobs)
58 (cond
59 ((version>=? version-major+minor 0 11)
60 (list (string-append "-j" (number->string jobs))))
61 (else '()))))
62 ("release-type" .
63 ,(lambda (type)
64 (cond
65 ((version>=? version-major+minor 0 11)
66 (list (string-append "--release=" type)))
67 (else
68 (list (string-append "-Drelease-" type))))))))
69
44;; Notes on Zig package manager (`build.zig.zon') 70;; Notes on Zig package manager (`build.zig.zon')
45;; 1. Dependency definition (name -> URL + hash) 71;; 1. Dependency definition (name -> URL + hash)
46;; - Dependency names are not necessarily consistent across packages. 72;; - Dependency names are not necessarily consistent across packages.
@@ -114,34 +140,49 @@
114 zig-build-target 140 zig-build-target
115 ;; "safe", "fast" or "small", empty for a "debug" build. 141 ;; "safe", "fast" or "small", empty for a "debug" build.
116 zig-release-type 142 zig-release-type
143 parallel-build?
117 skip-build? 144 skip-build?
118 #:allow-other-keys) 145 #:allow-other-keys)
119 "Build a given Zig package." 146 "Build a given Zig package."
120 (when (not skip-build?) 147 (when (not skip-build?)
121 (setenv "DESTDIR" "out") 148 (setenv "DESTDIR" "out")
122 (let ((call `("zig" "build" 149 (let* ((arguments (zig-arguments))
123 "--prefix" "" ;; Don't add /usr 150 (call `("zig" "build"
124 "--prefix-lib-dir" "lib" 151 "--prefix" "" ;; Don't add /usr
125 "--prefix-exe-dir" "bin" 152 "--prefix-lib-dir" "lib"
126 "--prefix-include-dir" "include" 153 "--prefix-exe-dir" "bin"
127 ,(string-append "-Dtarget=" (zig-target zig-build-target)) 154 "--prefix-include-dir" "include"
128 ,@(if zig-release-type 155 ,(string-append "-Dtarget=" (zig-target zig-build-target))
129 (list (string-append "-Drelease-" zig-release-type)) 156 ,@(if parallel-build?
130 '()) 157 ((assoc-ref arguments "parallel-jobs")
131 ,@zig-build-flags))) 158 (parallel-job-count))
159 ((assoc-ref arguments "parallel-jobs")
160 1))
161 ,@(if zig-release-type
162 ((assoc-ref arguments "release-type")
163 zig-release-type)
164 '())
165 ,@zig-build-flags)))
132 (format #t "running: ~s~%" call) 166 (format #t "running: ~s~%" call)
133 (apply invoke call)))) 167 (apply invoke call))))
134 168
135(define* (check #:key tests? 169(define* (check #:key tests?
136 zig-test-flags 170 zig-test-flags
137 target 171 target
172 parallel-tests?
138 #:allow-other-keys) 173 #:allow-other-keys)
139 "Run all the tests" 174 "Run all the tests"
140 (when (and tests? (not target)) 175 (when (and tests? (not target))
141 (let ((old-destdir (getenv "DESTDIR"))) 176 (let ((old-destdir (getenv "DESTDIR")))
142 (setenv "DESTDIR" "test-out") ;; Avoid colisions with the build output 177 (setenv "DESTDIR" "test-out") ;; Avoid colisions with the build output
143 (let ((call `("zig" "build" "test" 178 (let* ((arguments (zig-arguments))
144 ,@zig-test-flags))) 179 (call `("zig" "build" "test"
180 ,@(if parallel-tests?
181 ((assoc-ref arguments "parallel-jobs")
182 (parallel-job-count))
183 ((assoc-ref arguments "parallel-jobs")
184 1))
185 ,@zig-test-flags)))
145 (format #t "running: ~s~%" call) 186 (format #t "running: ~s~%" call)
146 (apply invoke call)) 187 (apply invoke call))
147 (if old-destdir 188 (if old-destdir