diff options
| author | Hilton Chain <hako@ultrarare.space> | 2024-11-20 07:41:06 +0800 |
|---|---|---|
| committer | Hilton Chain <hako@ultrarare.space> | 2024-12-31 10:56:34 +0800 |
| commit | 5ce59e0413510098f92e4b824d2a24b97ad2e4c9 (patch) | |
| tree | c8b24010320c7a5ccb4c03c759f148b009e456c3 /gnu/packages/zig.scm | |
| parent | 3ef8c9307ce10ca59af9bcf84161a88fd08310e7 (diff) | |
build-system: zig: Support Zig package manager.
* guix/build-system/zig.scm (zig-build,zig-cross-build)
[#:install-source?,#:skip-build?]: New arguments.
[#:tests?]: Honor #:skip-build?.
* guix/build/zig-build-system.scm (zig-source-install-path)
(zig-input-install-path,unpack-dependencies): New procedures.
(%standard-phases): Add 'unpack-dependencies.
(build,install): Honor #:skip-build?.
* doc/guix.texi (Build Systems)[zig-build-system]: Update documentation.
* gnu/packages/zig.scm (zig-0.9)[native-search-paths]: Add
GUIX_ZIG_PACKAGE_PATH.
Use search paths defined in (guix search-paths).
(add-build.zig.zon,rename-zig-dependencies): New procedures.
* gnu/packages/ncdu.scm (ncdu)[arguments]: Don't install source.
* gnu/packages/zig-xyz.scm (river,tigerbeetle,zig-zls)[arguments]: Likewise.
Diffstat (limited to 'gnu/packages/zig.scm')
| -rw-r--r-- | gnu/packages/zig.scm | 63 |
1 files changed, 52 insertions, 11 deletions
diff --git a/gnu/packages/zig.scm b/gnu/packages/zig.scm index 99335c54048..2644516e696 100644 --- a/gnu/packages/zig.scm +++ b/gnu/packages/zig.scm | |||
| @@ -24,6 +24,7 @@ | |||
| 24 | #:use-module (guix gexp) | 24 | #:use-module (guix gexp) |
| 25 | #:use-module (guix packages) | 25 | #:use-module (guix packages) |
| 26 | #:use-module (guix platform) | 26 | #:use-module (guix platform) |
| 27 | #:use-module (guix search-paths) | ||
| 27 | #:use-module (guix utils) | 28 | #:use-module (guix utils) |
| 28 | #:use-module (guix download) | 29 | #:use-module (guix download) |
| 29 | #:use-module (guix git-download) | 30 | #:use-module (guix git-download) |
| @@ -33,7 +34,51 @@ | |||
| 33 | #:use-module (gnu packages compression) | 34 | #:use-module (gnu packages compression) |
| 34 | #:use-module (gnu packages llvm) | 35 | #:use-module (gnu packages llvm) |
| 35 | #:use-module (gnu packages llvm-meta) | 36 | #:use-module (gnu packages llvm-meta) |
| 36 | #:use-module (gnu packages web)) | 37 | #:use-module (gnu packages web) |
| 38 | #:export (add-build.zig.zon | ||
| 39 | rename-zig-dependencies)) | ||
| 40 | |||
| 41 | (define* (add-build.zig.zon name version dependencies #:optional (paths '(""))) | ||
| 42 | "Snippet to generate build.zig.zon of DEPENDENCIES for package NAME@VERSION." | ||
| 43 | `(let ((port (open-file "build.zig.zon" "w" #:encoding "utf8"))) | ||
| 44 | (format port "\ | ||
| 45 | .{ | ||
| 46 | .name = \"~a\", | ||
| 47 | .version = \"~a\", | ||
| 48 | .paths = .{ | ||
| 49 | ~{\ | ||
| 50 | \"~a\", | ||
| 51 | ~}\ | ||
| 52 | }, | ||
| 53 | .dependencies = .{ | ||
| 54 | ~{\ | ||
| 55 | .@\"~a\" = .{ | ||
| 56 | .url = \"\", | ||
| 57 | }, | ||
| 58 | ~}\ | ||
| 59 | }, | ||
| 60 | }~%" ,name ,version (quote ,paths) (quote ,dependencies)) | ||
| 61 | (close-port port))) | ||
| 62 | |||
| 63 | (define* (rename-zig-dependencies mapping #:optional (directories '("."))) | ||
| 64 | "Snippet to rename Zig dependencies in build.zig and build.zig.zon." | ||
| 65 | `(begin | ||
| 66 | (use-modules (ice-9 match) | ||
| 67 | (guix build utils)) | ||
| 68 | (for-each | ||
| 69 | (lambda (directory) | ||
| 70 | (for-each | ||
| 71 | (match-lambda | ||
| 72 | ((old-name . new-name) | ||
| 73 | (with-directory-excursion directory | ||
| 74 | (substitute* "build.zig" | ||
| 75 | (((string-append "([Dd]ependency.\")" old-name) _ prefix) | ||
| 76 | (string-append prefix new-name))) | ||
| 77 | (substitute* "build.zig.zon" | ||
| 78 | (((format #f "\\.(@\")?~a\"?" old-name)) | ||
| 79 | (format #f ".@\"~a\"" new-name)))))) | ||
| 80 | (quote ,mapping))) | ||
| 81 | (quote ,directories)))) | ||
| 37 | 82 | ||
| 38 | (define (zig-source version commit hash) | 83 | (define (zig-source version commit hash) |
| 39 | (origin | 84 | (origin |
| @@ -169,16 +214,12 @@ | |||
| 169 | (list llvm-13 | 214 | (list llvm-13 |
| 170 | zig-0.9-glibc-abi-tool)) | 215 | zig-0.9-glibc-abi-tool)) |
| 171 | (native-search-paths | 216 | (native-search-paths |
| 172 | (list | 217 | (list $C_INCLUDE_PATH |
| 173 | (search-path-specification | 218 | $CPLUS_INCLUDE_PATH |
| 174 | (variable "C_INCLUDE_PATH") | 219 | $LIBRARY_PATH |
| 175 | (files '("include"))) | 220 | (search-path-specification |
| 176 | (search-path-specification | 221 | (variable "GUIX_ZIG_PACKAGE_PATH") |
| 177 | (variable "CPLUS_INCLUDE_PATH") | 222 | (files '("src/zig"))))) |
| 178 | (files '("include/c++" "include"))) | ||
| 179 | (search-path-specification | ||
| 180 | (variable "LIBRARY_PATH") | ||
| 181 | (files '("lib" "lib64"))))) | ||
| 182 | (synopsis "General purpose programming language and toolchain") | 223 | (synopsis "General purpose programming language and toolchain") |
| 183 | (description "Zig is a general-purpose programming language and | 224 | (description "Zig is a general-purpose programming language and |
| 184 | toolchain. Among other features it provides | 225 | toolchain. Among other features it provides |
