summaryrefslogtreecommitdiff
path: root/gnu/packages/zig.scm
diff options
context:
space:
mode:
authorHilton Chain <hako@ultrarare.space>2024-11-20 07:41:06 +0800
committerHilton Chain <hako@ultrarare.space>2024-12-31 10:56:34 +0800
commit5ce59e0413510098f92e4b824d2a24b97ad2e4c9 (patch)
treec8b24010320c7a5ccb4c03c759f148b009e456c3 /gnu/packages/zig.scm
parent3ef8c9307ce10ca59af9bcf84161a88fd08310e7 (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.scm63
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
184toolchain. Among other features it provides 225toolchain. Among other features it provides