diff options
| author | Hilton Chain <hako@ultrarare.space> | 2024-11-20 08:00:54 +0800 |
|---|---|---|
| committer | Hilton Chain <hako@ultrarare.space> | 2024-12-31 10:56:34 +0800 |
| commit | bdff1941e51193437dbcefad80d019fd9d5d0aa9 (patch) | |
| tree | d229690dfa81d125ac2a33ab1acfd2e6568b0e15 | |
| parent | 5ce59e0413510098f92e4b824d2a24b97ad2e4c9 (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.scm | 6 | ||||
| -rw-r--r-- | gnu/packages/zig-xyz.scm | 5 | ||||
| -rw-r--r-- | gnu/packages/zig.scm | 2 | ||||
| -rw-r--r-- | guix/build-system/zig.scm | 8 | ||||
| -rw-r--r-- | guix/build/zig-build-system.scm | 65 |
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 |
