guix/gnu/packages/zig.scm
Hilton Chain bdff1941e5
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
2024-12-31 10:56:34 +08:00

1642 lines
59 KiB
Scheme
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2021 Liliana Marie Prikler <liliana.prikler@gmail.com>
;;; Copyright © 2021 Sarah Morgensen <iskarian@mgsn.dev>
;;; Copyright © 2021 Calum Irwin <calumirwin1@gmail.com>
;;; Copyright © 2022-2024 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2023, 2024 Hilton Chain <hako@ultrarare.space>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages zig)
#:use-module (guix gexp)
#:use-module (guix packages)
#:use-module (guix platform)
#:use-module (guix search-paths)
#:use-module (guix utils)
#:use-module (guix download)
#:use-module (guix git-download)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix build-system cmake)
#:use-module (gnu packages)
#:use-module (gnu packages compression)
#:use-module (gnu packages llvm)
#:use-module (gnu packages llvm-meta)
#:use-module (gnu packages web)
#:export (add-build.zig.zon
rename-zig-dependencies))
(define* (add-build.zig.zon name version dependencies #:optional (paths '("")))
"Snippet to generate build.zig.zon of DEPENDENCIES for package NAME@VERSION."
`(let ((port (open-file "build.zig.zon" "w" #:encoding "utf8")))
(format port "\
.{
.name = \"~a\",
.version = \"~a\",
.paths = .{
~{\
\"~a\",
~}\
},
.dependencies = .{
~{\
.@\"~a\" = .{
.url = \"\",
},
~}\
},
}~%" ,name ,version (quote ,paths) (quote ,dependencies))
(close-port port)))
(define* (rename-zig-dependencies mapping #:optional (directories '(".")))
"Snippet to rename Zig dependencies in build.zig and build.zig.zon."
`(begin
(use-modules (ice-9 match)
(guix build utils))
(for-each
(lambda (directory)
(for-each
(match-lambda
((old-name . new-name)
(with-directory-excursion directory
(substitute* "build.zig"
(((string-append "([Dd]ependency.\")" old-name) _ prefix)
(string-append prefix new-name)))
(substitute* "build.zig.zon"
(((format #f "\\.(@\")?~a\"?" old-name))
(format #f ".@\"~a\"" new-name))))))
(quote ,mapping)))
(quote ,directories))))
(define (zig-source version commit hash)
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/ziglang/zig")
(commit commit)))
(file-name (git-file-name "zig" version))
(sha256 (base32 hash))
(modules '((guix build utils)))
(snippet
#~(for-each
(lambda (file)
(when (file-exists? file)
(delete-file file)))
(append
'("stage1/zig1.wasm"
"stage1/zig1.wasm.zst")
;; Generated from glibc sources, see also:
;; https://github.com/ziglang/zig/blob/master/lib/libc/glibc/README.md
;; https://github.com/ziglang/glibc-abi-tool
'("lib/libc/glibc/abilists")
;; IETF RFC documents have nonfree license.
(find-files "." "^rfc[0-9]+\\.txt"))))))
(define zig-0.9-glibc-abi-tool
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/ziglang/glibc-abi-tool")
(commit "6f992064f821c612f68806422b2780c9260cbc4c")))
(file-name "glibc-abi-tool")
(sha256
(base32 "0lsi3f2lkixcdidljby73by2sypywb813yqdapy9md4bi2h8hhgp"))))
(define-public zig-0.9
(package
(name "zig")
(version "0.9.1")
(source
(origin
(inherit (zig-source
version version
"0nfvgg23sw50ksy0z0ml6lkdsvmd0278mq29m23dbb2jsirkhry7"))
(patches
(search-patches
"zig-0.9-build-respect-PKG_CONFIG-env-var.patch"
"zig-0.9-riscv-support.patch"
"zig-0.9-use-baseline-cpu-by-default.patch"
"zig-0.9-use-system-paths.patch"
"zig-0.9-fix-runpath.patch"))))
(build-system cmake-build-system)
(arguments
(list
#:imported-modules
(cons '(guix build zig-utils)
%cmake-build-system-modules)
#:modules
(cons '(guix build zig-utils)
'((guix build cmake-build-system)
(guix build utils)))
#:configure-flags
#~(list (string-append "-DZIG_LIB_DIR=" #$output "/lib/zig")
"-DZIG_TARGET_MCPU=baseline"
(string-append
"-DZIG_TARGET_TRIPLE="
(zig-target
#$(platform-target
(lookup-platform-by-target-or-system
(or (%current-target-system)
(%current-system))))))
"-DZIG_USE_LLVM_CONFIG=ON")
#:out-of-source? #f ; for tests
;; There are too many unclear test failures.
#:tests? (not (or (target-riscv64?)
(%current-target-system)))
#:phases
#~(modify-phases %standard-phases
#$@(if (target-riscv64?)
;; It is unclear why all these tests fail to build.
`((add-after 'unpack 'adjust-tests
(lambda _
(substitute* "build.zig"
((".*addRuntimeSafetyTests.*") "")
((".*addRunTranslatedCTests.*") ""))
(substitute* "test/standalone.zig"
;; These tests fail to build on riscv64-linux.
;; They both contain 'exe.linkSystemLibrary("c");'
((".*shared_library.*") "")
((".*mix_o_files.*") "")
;; ld.lld: error: undefined symbol: __tls_get_addr
;; Is this symbol x86 only in glibc?
((".*link_static_lib_as_system_lib.*") "")))))
'())
(add-before 'configure 'zig-configure zig-configure)
(delete 'check)
(add-after 'install 'check
(lambda* (#:key tests? #:allow-other-keys)
(when tests?
;; error(libc_installation): msvc_lib_dir may not be empty for
;; windows-msvc.
(unsetenv "ZIG_LIBC")
(invoke (string-append #$output "/bin/zig")
;; Testing the standard library takes >7.5GB RAM, and
;; will fail if it is OOM-killed. The 'test-toolchain'
;; target skips standard library and doc tests.
"build" "test-toolchain"
;; Stage 2 is experimental, not what we run with `zig',
"-Dskip-stage2-tests"
;; Non-native tests try to link and execute non-native
;; binaries.
"-Dskip-non-native"))))
(add-before 'check 'install-glibc-abilists
(lambda* (#:key inputs native-inputs #:allow-other-keys)
(mkdir-p "/tmp/glibc-abi-tool")
(with-directory-excursion "/tmp/glibc-abi-tool"
(copy-recursively
(dirname (search-input-file
(or native-inputs inputs) "consolidate.zig"))
".")
(for-each make-file-writable (find-files "."))
(invoke (string-append #$output "/bin/zig")
"run" "consolidate.zig")
(install-file
"abilists"
(string-append #$output "/lib/zig/libc/glibc"))))))))
(inputs
(list clang-13 ;Clang propagates llvm.
lld-13))
;; Zig compiles fine with GCC, but also needs native LLVM libraries.
(native-inputs
(list llvm-13
zig-0.9-glibc-abi-tool))
(native-search-paths
(list $C_INCLUDE_PATH
$CPLUS_INCLUDE_PATH
$LIBRARY_PATH
(search-path-specification
(variable "GUIX_ZIG_PACKAGE_PATH")
(files '("src/zig")))))
(synopsis "General purpose programming language and toolchain")
(description "Zig is a general-purpose programming language and
toolchain. Among other features it provides
@itemize
@item an Optional type instead of null pointers,
@item manual memory management,
@item generic data structures and functions,
@item compile-time reflection and compile-time code execution,
@item integration with C using zig as a C compiler, and
@item concurrency via async functions.
@end itemize")
(home-page "https://github.com/ziglang/zig")
;; Currently building zig can take up to 10GB of RAM for linking stage1:
;; https://github.com/ziglang/zig/issues/6485
(supported-systems %64bit-supported-systems)
;; Stage3 can take a lot of time and isn't verbose.
(properties `((max-silent-time . 9600)
,@(clang-compiler-cpu-architectures "13")))
(license license:expat)))
(define zig-0.10-glibc-abi-tool
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/ziglang/glibc-abi-tool")
(commit "b07bf67ab3c15881f13b9c3c03bcec04535760bb")))
(file-name "glibc-abi-tool")
(sha256
(base32 "0csn3c9pj8wchwy5sk5lfnhjn8a3c8cp45fv7mkpi5bqxzdzf1na"))
(modules '((guix build utils)))
(snippet
#~(substitute* "consolidate.zig"
(("(@ctz.)u.., " _ prefix) prefix)
(("(@popCount.)u.., " _ prefix) prefix)))))
(define-public zig-0.10
(package
(inherit zig-0.9)
(name "zig")
(version "0.10.1")
(source
(origin
(inherit (zig-source
version version
"1sh5xjsksl52i4cfv1qj36sz5h0ln7cq4pdhgs3960mk8a90im7b"))
(patches
(search-patches
"zig-0.10-build-respect-PKG_CONFIG-env-var.patch"
"zig-0.9-use-baseline-cpu-by-default.patch"
"zig-0.10-use-system-paths.patch"
"zig-0.10-fix-runpath.patch"))))
(arguments
(substitute-keyword-arguments (package-arguments zig-0.9)
((#:tests? _ #t)
(not (%current-target-system)))
((#:configure-flags flags ''())
#~(cons "-DZIG_SHARED_LLVM=ON"
#$flags))
((#:phases phases '%standard-phases)
#~(modify-phases #$phases
#$@(if (target-riscv64?)
`((delete 'adjust-tests))
'())
(add-after 'patch-source-shebangs 'patch-more-shebangs
(lambda* (#:key inputs #:allow-other-keys)
;; Zig uses information about an ELF file to determine the
;; version of glibc and other data for native builds.
(substitute* "lib/std/zig/system/NativeTargetInfo.zig"
(("/usr/bin/env") (search-input-file inputs "bin/clang++")))))
(replace 'check
(lambda* (#:key tests? #:allow-other-keys)
(when tests?
;; error(libc_installation): msvc_lib_dir may not be empty for
;; windows-msvc.
(unsetenv "ZIG_LIBC")
(invoke (string-append #$output "/bin/zig")
"build" "test"
;; We're not testing the compiler bootstrap chain.
"-Dskip-stage1"
"-Dskip-stage2-tests"
;; Non-native tests try to link and execute non-native
;; binaries.
"-Dskip-non-native"))))))))
(inputs
(modify-inputs (package-inputs zig-0.9)
(prepend zlib `(,zstd "lib"))
(replace "clang" clang-15)
(replace "lld" lld-15)))
(native-inputs
(modify-inputs (package-native-inputs zig-0.9)
(replace "glibc-abi-tool" zig-0.10-glibc-abi-tool)
(replace "llvm" llvm-15)))
(properties `((max-silent-time . 9600)
,@(clang-compiler-cpu-architectures "15")))))
;;;
;;; Bootstrap path for Zig 0.11.
;;; See also: <https://git.jakstys.lt/motiejus/zig-repro>.
;;;
;; Restore C++ stage 1 and build the initial zig1.wasm.
(define zig-0.10.0-538-source
(let ((commit "bf316e550671cc71eb498b3cf799493627bb0fdc")
(revision "538"))
(zig-source
(git-version "0.10.0" revision commit)
commit "1dchc2bp842jlw0byssqzindv8cigpqcj2hk3752667jrrww13vv")))
(define zig-0.10.0-539-patch
(let ((commit "28514476ef8c824c3d189d98f23d0f8d23e496ea"))
(origin
(method url-fetch)
(uri (string-append
"https://github.com/ziglang/zig/commit/" commit ".patch"))
(file-name "zig-0.10.0-539.patch")
(sha256
(base32 "0qxxiafg2sd5rr4xhw0c12rygd7zh1rmf3x8hfialyxmsbi5pfxp")))))
(define zig-0.10.0-542-patch
(let ((commit "3ba916584db5485c38ebf2390e8d22bc6d81bf8e"))
(origin
(method url-fetch)
(uri (string-append
"https://github.com/ziglang/zig/commit/" commit ".patch"))
(file-name "zig-0.10.0-542.patch")
(sha256
(base32 "1l09gmbr3vqzinb63kvaskgs1d0mvm1m7w3ai3ngwg5zlabyya35")))))
(define zig-0.10.0-610
(let ((commit "e7d28344fa3ee81d6ad7ca5ce1f83d50d8502118")
(revision "610")
(base zig-0.10))
(package
(inherit base)
(name "zig")
(version (git-version "0.10.0" revision commit))
(source (zig-source
version commit
"08pm3f4hh6djl3szhqgm7fa3qisdl2xh9jrp18m0z7bk2vd0bzw7"))
(arguments
(substitute-keyword-arguments (package-arguments base)
;; Patch for fixing RUNPATH not applied to intermediate versions.
((#:validate-runpath? _ #t) #f)
;; Patch for cross-compilation not applied to intermediate versions.
((#:modules modules '())
(cons '(srfi srfi-1) modules))
((#:configure-flags flags ''())
#~(filter (lambda (flag)
(not (string-contains flag "ZIG_TARGET_TRIPLE")))
#$flags))
;; Disable tests for intermediate versions.
((#:tests? _ #t) #f)
((#:phases phases '%standard-phases)
#~(modify-phases #$phases
(add-after 'unpack 'backup-source
(lambda _
(copy-recursively "." "../source-backup")))
(add-after 'backup-source 'prepare-source
(lambda* (#:key native-inputs inputs #:allow-other-keys)
;; Revert "actually remove stage1".
(invoke "patch" "--reverse" "--strip=1"
"--input" #+zig-0.10.0-542-patch)
;; Revert "remove `-fstage1` option".
(false-if-exception
(invoke "patch" "--reverse" "--strip=1"
"--input" #+zig-0.10.0-539-patch))
;; Resolve conflicts in previous patching.
(invoke
"patch" "--forward" "--strip=1" "--input"
#+(local-file
(search-patch
"zig-0.10.0-610-bootstrap-resolve-conflicts.patch")))
;; Restore build system.
(rename-file "stage1/config.zig.in" "src/config.zig.in")
(substitute* "src/config.zig.in"
(("(have_stage1 = )false" _ prefix)
(string-append prefix "true")))
(for-each
(lambda (file)
(copy-file (in-vicinity #+zig-0.10.0-538-source file)
file))
'("build.zig" "CMakeLists.txt"))))
(add-after 'install 'restore-source
(lambda _
(for-each delete-file-recursively (find-files "."))
(copy-recursively "../source-backup" ".")))
(add-after 'restore-source 'build-zig1
(lambda _
(invoke (string-append #$output "/bin/zig")
"build" "update-zig1" "--verbose")))
(add-after 'build-zig1 'install-zig1
(lambda _
(install-file "stage1/zig1.wasm.zst"
(string-append #$output:zig1 "/bin"))))
(delete 'install-glibc-abilists)))))
(native-inputs
(modify-inputs (package-native-inputs base)
(prepend binaryen)
(delete "glibc-abi-tool")))
(outputs '("out" "zig1")))))
;; Supply zig1.wasm.zst, build zig2 + zig1.wasm, install zig2 + zig1.wasm.zst.
(define zig-0.10.0-675
(let ((commit "9d93b2ccf11f584320a2c5209dd2d94705167695")
(revision "675")
(base zig-0.10.0-610))
(package
(inherit base)
(name "zig")
(version (git-version "0.10.0" revision commit))
(source
(origin
(inherit (zig-source
version commit
"1qsfsv8wg0kz616sgj7dw9ihdz5rsm80p3ambl5lnkrjhwym7z7x"))
(patches (search-patches "zig-0.10.0-675-TypeOf-hack.patch"))))
(arguments
(substitute-keyword-arguments (package-arguments base)
((#:phases phases '%standard-phases)
#~(modify-phases #$phases
(add-after 'unpack 'set-host-triple
(lambda _
(substitute* "CMakeLists.txt"
(("\\$\\{(ZIG_)?HOST_TARGET_TRIPLE\\}")
(zig-target
#$(platform-target
(lookup-platform-by-system (%current-system))))))))
(replace 'prepare-source
(lambda* (#:key native-inputs inputs #:allow-other-keys)
(install-file (search-input-file
(or native-inputs inputs) "bin/zig1.wasm.zst")
"stage1")))
(add-after 'prepare-source 'remove-stage3
(lambda _
;; Multiline substitution.
(invoke
"sed" "--in-place" "/^add_custom_target(stage3/,/^)$/d"
"CMakeLists.txt")))
(replace 'install
(lambda _
(install-file "zig2" (string-append #$output "/bin"))
(mkdir-p (string-append #$output "/lib"))
(copy-recursively "lib" (string-append #$output "/lib/zig"))))
(replace 'build-zig1
(lambda _
(invoke "./zig2" "build" "update-zig1" "--verbose")))
(delete 'patch-more-shebangs)
(delete 'backup-source)
(delete 'restore-source)))))
(native-inputs
(modify-inputs (package-native-inputs base)
(prepend `(,base "zig1")))))))
;; Supply zig1.wasm.zst, build zig2 + zig1.wasm, install zig2 + zig1.wasm.
(define zig-0.10.0-722
(let ((commit "d10fd78d4615f329141f5c19f893039d56aff425")
(revision "722")
(base zig-0.10.0-675))
(package
(inherit base)
(name "zig")
(version (git-version "0.10.0" revision commit))
(source (zig-source
version commit
"0829wymcwph71zlwql6v7i7j9gr1m96acyp2xsr69vq2h98wmlap"))
(arguments
(substitute-keyword-arguments (package-arguments base)
((#:phases phases '%standard-phases)
#~(modify-phases #$phases
(replace 'prepare-source
(lambda* (#:key native-inputs inputs #:allow-other-keys)
(install-file (search-input-file
(or native-inputs inputs) "bin/zig1.wasm.zst")
"stage1")
(invoke "zstd" "-d" "stage1/zig1.wasm.zst")
(make-file-writable "stage1/zig1.wasm")))
(replace 'install-zig1
(lambda _
(install-file "stage1/zig1.wasm"
(string-append #$output:zig1 "/bin"))))))))
(native-inputs
(modify-inputs (package-native-inputs base)
(prepend zstd)
(replace "zig" `(,base "zig1")))))))
;; Supply zig2, build zig1.wasm, install zig1.wasm.
(define zig-0.10.0-747
(let ((commit "7b2a936173165002105ba5e76bed69654e132fea")
(revision "747")
(base zig-0.10.0-722))
(package
(inherit base)
(name "zig")
(version (git-version "0.10.0" revision commit))
(source
(origin
(inherit (zig-source
version commit
"1z5ndywk4d1dcv2k3bw3n2zgjr3ysf3bi2ac4jhwqgnmzsw498wd"))
(patches (search-patches "zig-0.10.0-747-CallOptions.patch"))))
(arguments
(substitute-keyword-arguments (package-arguments zig-0.10.0-722)
;; zig1.wasm is architecture-independent.
((#:target _ #f) #f)
((#:phases phases '%standard-phases)
#~(modify-phases #$phases
(replace 'build-zig1
(lambda _
(invoke "zig2" "build" "--zig-lib-dir" "lib"
"update-zig1" "--verbose")))
(delete 'prepare-source)
(delete 'configure)
(delete 'build)
(delete 'install)))))
(native-inputs
(modify-inputs (package-native-inputs base)
(replace "zig" `(,base "out"))
(delete "zstd"))))))
;; Supply zig1.wasm, build zig2 + zig1.wasm, install zig1.wasm.
(define zig-0.10.0-748
(let ((commit "08b2d491bcd8c79c68495267cc71967661caea1e")
(revision "748")
(base zig-0.10.0-747))
(package
(inherit base)
(name "zig")
(version (git-version "0.10.0" revision commit))
(source (zig-source
version commit
"1iv1wjgj0nfbb19sp3zw4d8hmrhkah4cmklzxm8c32zsg673kv3i"))
(arguments
(substitute-keyword-arguments (package-arguments zig-0.10.0-722)
;; zig1.wasm is architecture-independent.
((#:target _ #f) #f)
((#:phases phases '%standard-phases)
#~(modify-phases #$phases
(replace 'prepare-source
(lambda* (#:key native-inputs inputs #:allow-other-keys)
(install-file (search-input-file
(or native-inputs inputs) "bin/zig1.wasm")
"stage1")
(make-file-writable "stage1/zig1.wasm")))))))
(native-inputs
(modify-inputs (package-native-inputs base)
(replace "zig" `(,base "zig1")))))))
;; Supply zig1.wasm, build zig2, install zig2.
(define zig-0.10.0-851
(let ((commit "aac2d6b56f32134ea32fb3d984e3fcdfddd8aaf6")
(revision "851")
(base zig-0.10.0-748))
(package
(inherit base)
(name "zig")
(version (git-version "0.10.0" revision commit))
(source (zig-source
version commit
"026q8igib5a2wiqdxispijph7isx8g1m0p6xgclikrmwpkpr7wb8"))
(arguments
(substitute-keyword-arguments (package-arguments zig-0.10.0-748)
((#:phases phases '%standard-phases)
#~(modify-phases #$phases
(delete 'build-zig1)
(delete 'install-zig1)))))
(native-inputs
(modify-inputs (package-native-inputs base)
(replace "zig" `(,base "zig1")))))))
(define zig-0.10.0-853
(let ((commit "2a5e1426aa9469fadb78e837d0100d689213b034")
(revision "853")
(base zig-0.10.0-851))
(package
(inherit base)
(name "zig")
(version (git-version "0.10.0" revision commit))
(source (zig-source
version commit
"18lqcf3vg6yi70hk6nzyv8mzw7rlhybawspk5z9s281bqv210v5s"))
(arguments
;; zig1
(substitute-keyword-arguments (package-arguments zig-0.10.0-747)
((#:phases phases '%standard-phases)
#~(modify-phases #$phases
(replace 'build-zig1
(lambda _
(invoke "zig2" "build" "update-zig1" "--verbose")))))))
(native-inputs
(modify-inputs (package-native-inputs base)
(replace "zig" `(,base "out")))))))
(define zig-0.10.0-961
(let ((commit "54160e7f6aecb4628df633ceaef4c6d956429a3d")
(revision "961")
(base zig-0.10.0-853))
(package
(inherit base)
(name "zig")
(version (git-version "0.10.0" revision commit))
(source (zig-source
version commit
"0f0n2bkygj8zxri275nisia3pdv2s4fikgnsnmag42bs747zn8bz"))
;; zig2
(arguments (package-arguments zig-0.10.0-851))
(native-inputs
(modify-inputs (package-native-inputs base)
(replace "zig" `(,base "zig1")))))))
(define zig-0.10.0-962
(let ((commit "622311fb9ac7ee6d93dcb8cda4b608751f7e092a")
(revision "962")
(base zig-0.10.0-961))
(package
(inherit base)
(name "zig")
(version (git-version "0.10.0" revision commit))
(source (zig-source
version commit
"1yywzmxr6nwhdix5x9k5nrxa4n1nc8x8v1gqgyvwdhz47x9vw8b0"))
;; zig1
(arguments (package-arguments zig-0.10.0-747))
(native-inputs
(modify-inputs (package-native-inputs base)
(replace "zig" `(,base "out")))))))
(define zig-0.10.0-1027
(let ((commit "a43fdc1620fa24c8c606f748505766bfd53d1049")
(revision "1027")
(base zig-0.10.0-962))
(package
(inherit base)
(name "zig")
(version (git-version "0.10.0" revision commit))
(source (zig-source
version commit
"0w19qlzb2la5bnjalmv7n05m08lhz4x8c53hf34aqw66kagw47kj"))
;; zig2
(arguments (package-arguments zig-0.10.0-851))
(native-inputs
(modify-inputs (package-native-inputs base)
(replace "zig" `(,base "zig1")))))))
;; Supply zig2, build zig1.wasm + zig2, install zig2.
(define zig-0.10.0-1073
(let ((commit "4c1007fc044689b8cbc20634d73debb43df8efe1")
(revision "1073")
(base zig-0.10.0-1027))
(package
(inherit base)
(name "zig")
(version (git-version "0.10.0" revision commit))
(source (zig-source
version commit
"1mgvi3m2aph10c1ij9b4k6xs3jbp8hbswqgdnzxdi5y0ak7h1pd4"))
(arguments
(substitute-keyword-arguments (package-arguments zig-0.10.0-851)
((#:phases phases '%standard-phases)
#~(modify-phases #$phases
(add-before 'build 'build-zig1
(lambda _
(invoke "zig2" "build" "--zig-lib-dir" "lib"
"update-zig1" "--verbose")))
(delete 'prepare-source)))))
(native-inputs
(modify-inputs (package-native-inputs base)
(replace "zig" `(,base "out")))))))
(define zig-0.10.0-1497
(let ((commit "a9b68308b9eeb494524e2b7ab0d63cfa6b623cd0")
(revision "1497")
(base zig-0.10.0-1073))
(package
(inherit base)
(name "zig")
(version (git-version "0.10.0" revision commit))
(source (zig-source
version commit
"0ja2555h41kibkxyyjpzrp5rradm3bknxhaspzz3brcbc6xvac21"))
;; zig1
(arguments (package-arguments zig-0.10.0-747))
(native-inputs
(modify-inputs (package-native-inputs base)
(replace "zig" `(,base "out")))))))
(define zig-0.10.0-1505-source
(let ((commit "fe4ea31f7e9e1c8caea6a1df107b91e8ea1a7b8a")
(revision "1505"))
(zig-source
(git-version "0.10.0" revision commit)
commit "0q91hz824l867dlzz885i4mlkjdr0v5nfk3drsnvkvz2q52r0ffx")))
(define zig-0.10.0-1506
(let ((commit "f16c10a86b7183e99e54a70344f4681211cd52bb")
(revision "1506")
(base zig-0.10.0-1497))
(package
(inherit base)
(name "zig")
(version (git-version "0.10.0" revision commit))
(source (zig-source
version commit
"17qbwknv33xi8908f1kdapvvj331bmibvvjhsza04j3siq3rpbz7"))
;; zig2+zig1
(arguments
(substitute-keyword-arguments (package-arguments zig-0.10.0-748)
((#:phases phases '%standard-phases)
#~(modify-phases #$phases
(add-after 'prepare-source 'restore-lib
(lambda _
(delete-file-recursively "lib")
(copy-recursively
(string-append #+zig-0.10.0-1505-source "/lib")
"lib")))
(replace 'build-zig1
(lambda _
(invoke "./zig2" "build" "--zig-lib-dir" "lib"
"update-zig1" "--verbose")))))))
(native-inputs
(modify-inputs (package-native-inputs base)
(replace "zig" `(,base "zig1")))))))
(define zig-0.10.0-1637-source
(let ((commit "4e6f21e2cb2c557b5c019f4acf445665a26edcba")
(revision "1637"))
(zig-source
(git-version "0.10.0" revision commit)
commit "1nd55j2c0br7rqx9fj6bkjyymkf1k6ms2m9f7byrc1ahggdyxrpv")))
(define zig-0.10.0-1638
(let ((commit "7199d7c77715fe06606c5c89595e6852b3fa8c20")
(revision "1638")
(base zig-0.10.0-1506))
(package
(inherit base)
(name "zig")
(version (git-version "0.10.0" revision commit))
(source
(origin
(inherit (zig-source
version commit
"15mvfgab9wglm1g5gakvqwb7l33v1vjwjwchb3pmhxmkxkrjkmgq"))
(patches (search-patches "zig-0.10.0-1638-re-add-qualCast.patch"))))
;; zig2+zig1
(arguments
(substitute-keyword-arguments (package-arguments zig-0.10.0-748)
((#:phases phases '%standard-phases)
#~(modify-phases #$phases
(add-after 'prepare-source 'restore-lib
(lambda _
(delete-file-recursively "lib")
(copy-recursively
(string-append #+zig-0.10.0-1637-source "/lib")
"lib")))
(replace 'build-zig1
(lambda _
(invoke "./zig2" "build" "--zig-lib-dir" "lib"
"update-zig1" "--verbose")))))))
(native-inputs
(modify-inputs (package-native-inputs base)
(replace "zig" `(,base "zig1")))))))
(define zig-0.10.0-1657
(let ((commit "321ccbdc525ab0f5862e42378b962c10ec54e4a1")
(revision "1657")
(base zig-0.10.0-1638))
(package
(inherit base)
(name "zig")
(version (git-version "0.10.0" revision commit))
(source (zig-source
version commit
"0nv16z8fm1ihszlwvdncnza0pgykj1ca87pf1w8nr8prqhsc7kj7"))
;; zig2
(arguments (package-arguments zig-0.10.0-851))
(native-inputs
(modify-inputs (package-native-inputs base)
(replace "zig" `(,base "zig1")))))))
(define zig-0.10.0-1681
(let ((commit "0bb178bbb2451238a326c6e916ecf38fbc34cab1")
(revision "1681")
(base zig-0.10.0-1657))
(package
(inherit base)
(name "zig")
(version (git-version "0.10.0" revision commit))
(source (zig-source
version commit
"0kg1wnxxhjgd8fszbch039ngck1spyjvb1l0z2ja40ihnk5bxnsz"))
;; zig1
(arguments (package-arguments zig-0.10.0-747))
(native-inputs
(modify-inputs (package-native-inputs base)
(replace "zig" `(,base "out")))))))
(define zig-0.10.0-1712
(let ((commit "705d2a3c2cd94faf8e16c660b3b342d6fe900e55")
(revision "1712")
(base zig-0.10.0-1681))
(package
(inherit base)
(name "zig")
(version (git-version "0.10.0" revision commit))
(source (zig-source
version commit
"08znnqyacjkdls4dhx6mis6yi6za0zv4abi2q3xl2304yjczm288"))
;; zig2
(arguments (package-arguments zig-0.10.0-851))
(native-inputs
(modify-inputs (package-native-inputs base)
(replace "zig" `(,base "zig1")))))))
(define zig-0.10.0-1713
(let ((commit "09a84c8384dffc7884528947b879f32d93c1bd90")
(revision "1713")
(base zig-0.10.0-1712))
(package
(inherit base)
(name "zig")
(version (git-version "0.10.0" revision commit))
(source (zig-source
version commit
"1rbyqwd7iqbgwnws6rqr2d5bxxdh4z6phbg23hzm9i1xlxka6y6v"))
;; zig1
(arguments (package-arguments zig-0.10.0-747))
(native-inputs
(modify-inputs (package-native-inputs base)
(replace "zig" `(,base "out")))))))
(define zig-0.10.0-1888
(let ((commit "c839c180ef1686794c039fc6d3c20a8716e87357")
(revision "1888")
(base zig-0.10.0-1713))
(package
(inherit base)
(name "zig")
(version (git-version "0.10.0" revision commit))
(source (zig-source
version commit
"0kxgjzzqqknqimi0a0c75blgr2ic550nchbag4mv1yfrhr5y0x27"))
;; zig2
(arguments (package-arguments zig-0.10.0-851))
(native-inputs
(modify-inputs (package-native-inputs base)
(replace "zig" `(,base "zig1")))))))
(define zig-0.10.0-1891
(let ((commit "ac1b0e832b4b9d151098050e1d29e28a568e215c")
(revision "1891")
(base zig-0.10.0-1888))
(package
(inherit base)
(name "zig")
(version (git-version "0.10.0" revision commit))
(source (zig-source
version commit
"15qjgbmygk05p86wqm170lxmalq2mr9f81slf8svb7akkmx5qls2"))
;; zig1
(arguments (package-arguments zig-0.10.0-747))
(native-inputs
(modify-inputs (package-native-inputs base)
(replace "zig" `(,base "out")))))))
(define zig-0.10.0-2558
(let ((commit "d3a237a98c5a2ccf72a774b5f93425c02fea4bea")
(revision "2558")
(base zig-0.10.0-1891))
(package
(inherit base)
(name "zig")
(version (git-version "0.10.0" revision commit))
(source (zig-source
version commit
"0q9583w919gvi91wbp529q54ijr8pldj8s0p2yapkbniadxxil7y"))
;; zig2
(arguments (package-arguments zig-0.10.0-851))
(inputs
(modify-inputs (package-inputs base)
(replace "clang" clang-16)
(replace "lld" lld-16)))
(native-inputs
(modify-inputs (package-native-inputs base)
(replace "llvm" llvm-16)
(replace "zig" `(,base "zig1"))))
(properties `((max-silent-time . 9600)
,@(clang-compiler-cpu-architectures "16"))))))
(define zig-0.10.0-2565-source
(let ((commit "856a9c2e3120d9ffa1166eed13641600230946da")
(revision "2565"))
(zig-source
(git-version "0.10.0" revision commit)
commit "00wqqckiyl6c3zcvgqxssnnv4ajip872ghrgv4mfrc8sllnhkdwa")))
(define zig-0.10.0-2566
(let ((commit "e2fe1907ecac075e4d4a37776359144318b6055a")
(revision "2566")
(base zig-0.10.0-2558))
(package
(inherit base)
(name "zig")
(version (git-version "0.10.0" revision commit))
(source (zig-source
version commit
"1vy36ksv7jdxdkspi0jvmfz2xwvbc26x3rqns51wk3a39ngx1g2f"))
(arguments
;; zig1
(substitute-keyword-arguments (package-arguments zig-0.10.0-747)
((#:phases phases '%standard-phases)
#~(modify-phases #$phases
(add-after 'unpack 'restore-lib
(lambda _
(let ((path "lib/std/start.zig"))
(copy-file (in-vicinity #+zig-0.10.0-2565-source path)
path))))))))
(native-inputs
(modify-inputs (package-native-inputs base)
(replace "zig" `(,base "out")))))))
(define zig-0.10.0-2571
(let ((commit "31738de2817f7932fa9237492f20fb736bc07dd3")
(revision "2571")
(base zig-0.10.0-2566))
(package
(inherit base)
(name "zig")
(version (git-version "0.10.0" revision commit))
(source (zig-source
version commit
"0hak2yydzjjn61lpbmmvkvykc1imgb92qkn90p4wi4fw9nfsqq0v"))
;; zig2+zig1
(arguments (package-arguments zig-0.10.0-748))
(native-inputs
(modify-inputs (package-native-inputs base)
(replace "zig" `(,base "zig1")))))))
(define zig-0.10.0-2796-source
(let ((commit "42ee364e7b698822a69cba4cd2bda17868657e05")
(revision "2796"))
(zig-source
(git-version "0.10" revision commit)
commit "0jd9q7bk6vsvjfma8d8iic7r9hc7j6xkz1ghw2vpra5q20fl86ba")))
(define zig-0.10.0-2797
(let ((commit "35d82d31be3d2f2611049f41dc2616f898d70871")
(revision "2797")
(base zig-0.10.0-2571))
(package
(inherit base)
(name "zig")
(version (git-version "0.10.0" revision commit))
(source (zig-source
version commit
"0av4qw7a41d9jmdmyachhisq98c3vjw1dqln1lgy1y3jxjsdf27h"))
;; zig2+zig1
(arguments
(substitute-keyword-arguments (package-arguments zig-0.10.0-748)
((#:phases phases '%standard-phases)
#~(modify-phases #$phases
(add-after 'prepare-source 'restore-lib
(lambda _
(delete-file-recursively "lib")
(copy-recursively
(string-append #+zig-0.10.0-2796-source "/lib")
"lib")))))))
(native-inputs
(modify-inputs (package-native-inputs base)
(replace "zig" `(,base "zig1")))))))
(define zig-0.10.0-2824-source
(let ((commit "8d88dcdc61c61e3410138f4402482131f5074a80")
(revision "2824"))
(zig-source
(git-version "0.10" revision commit)
commit "0xyhr98hyyb9b3c3d2lv6hxysaq1k1kmw9gynci0z9wm1y82rir8")))
(define zig-0.10.0-2838
(let ((commit "a8de15f66a51d273cefa07eed0d8fd2952e92387")
(revision "2838")
(base zig-0.10.0-2797))
(package
(inherit base)
(name "zig")
(version (git-version "0.10.0" revision commit))
(source (zig-source
version commit
"0hhz1hijg5hnw41s4p4p15gllpql5hn9my6a3d80jxv8nmd367q1"))
;; zig2+zig1
(arguments
(substitute-keyword-arguments (package-arguments zig-0.10.0-748)
((#:phases phases '%standard-phases)
#~(modify-phases #$phases
(add-before 'prepare-source 'backup-source
(lambda _
(copy-recursively "lib" "../lib-backup")))
(add-after 'prepare-source 'restore-lib
(lambda _
(delete-file-recursively "lib")
(copy-recursively
(string-append #+zig-0.10.0-2824-source "/lib")
"lib")))
(add-before 'build-zig1 'restore-source
(lambda _
(delete-file-recursively "lib")
(copy-recursively "../lib-backup" "lib")))))))
(native-inputs
(modify-inputs (package-native-inputs base)
(replace "zig" `(,base "zig1")))))))
(define zig-0.10.0-3660
(let ((commit "22c6b6c9a9378aaca75c83c2182a6d94298f6bc2")
(revision "3660")
(base zig-0.10.0-2838))
(package
(inherit base)
(name "zig")
(version (git-version "0.10.0" revision commit))
(source (zig-source
version commit
"0dhcdi6008qqvy3ws2hhmj51wr213whbyghh7n9arai3zyg6y65g"))
;; zig2+zig1
(arguments (package-arguments zig-0.10.0-748))
(native-inputs
(modify-inputs (package-native-inputs base)
(replace "zig" `(,base "zig1")))))))
(define zig-0.10.0-3726
(let ((commit "a6c8ee5231230947c928bbe1c6a39eb6e1bb9c5b")
(revision "3726")
(base zig-0.10.0-3660))
(package
(inherit base)
(name "zig")
(version (git-version "0.10.0" revision commit))
(source (zig-source
version commit
"148dhnzhm52lcwhvpwnnvpkpd3g6i1xh2vsac858agqr0slsd7g9"))
;; zig1
(arguments (package-arguments zig-0.10.0-747))
(native-inputs
(modify-inputs (package-native-inputs base)
(replace "zig" `(,base "out")))))))
(define zig-0.10.0-3728
(let ((commit "a4d1edac8d65e1aa4b565f6fb11ab78541d97efa")
(revision "3728")
(base zig-0.10.0-3726))
(package
(inherit base)
(name "zig")
(version (git-version "0.10.0" revision commit))
(source (zig-source
version commit
"13vff9hqp83xhz0fab9wcwsf56hcz4sg3rwn1vziq85wkr9scj4b"))
;; zig2
(arguments (package-arguments zig-0.10.0-851))
(native-inputs
(modify-inputs (package-native-inputs base)
(replace "zig" `(,base "zig1")))))))
(define zig-0.10.0-3807
(let ((commit "be0c69957e7489423606023ad820599652a60e15")
(revision "3807")
(base zig-0.10.0-3728))
(package
(inherit base)
(name "zig")
(version (git-version "0.10.0" revision commit))
(source (zig-source
version commit
"069w7d67imdn4qgdk7acddsfwl4dhs9nzna5k4h0cza2cl0xi0ic"))
;; zig1
(arguments (package-arguments zig-0.10.0-747))
(native-inputs
(modify-inputs (package-native-inputs base)
(replace "zig" `(,base "out")))))))
(define zig-0.10.0-3813
(let ((commit "21ac0beb436f49fe49c6982a872f2dc48e4bea5e")
(revision "3813")
(base zig-0.10.0-3807))
(package
(inherit base)
(name "zig")
(version (git-version "0.10.0" revision commit))
(source (zig-source
version commit
"0dmi1d8jg7y7zgi8xyq53g4g39ba4hnigyj491a5fj8xnkxqfrrb"))
;; zig2+zig1
(arguments (package-arguments zig-0.10.0-748))
(native-inputs
(modify-inputs (package-native-inputs base)
(replace "zig" `(,base "zig1")))))))
(define zig-0.10.0-3980
(let ((commit "4bce7b1db964098e4a9163201fa3adcb26af6d97")
(revision "3980")
(base zig-0.10.0-3813))
(package
(inherit base)
(name "zig")
(version (git-version "0.10.0" revision commit))
(source (zig-source
version commit
"0h76x1ak28dv5y60r4m4y524kwmf43ridwvsx3ahfql63jwxn0m3"))
;; zig2
(arguments (package-arguments zig-0.10.0-851))
(native-inputs
(modify-inputs (package-native-inputs base)
(replace "zig" `(,base "zig1")))))))
(define zig-0.10.0-3985
(let ((commit "47d5bf26164b4ddb3228d17ae2158d1c29b8d040")
(revision "3985")
(base zig-0.10.0-3980))
(package
(inherit base)
(name "zig")
(version (git-version "0.10.0" revision commit))
(source (zig-source
version commit
"0w412aka8wjkkwyssqg8nvzb7qwaa29ywzwhg11bbwkpqyig36r4"))
;; zig1
(arguments (package-arguments zig-0.10.0-747))
(native-inputs
(modify-inputs (package-native-inputs base)
(replace "zig" `(,base "out")))))))
(define zig-0.11-glibc-abi-tool
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/ziglang/glibc-abi-tool")
(commit "13576b1ea957882be7ff2c99f4cdc27454930219")))
(file-name "glibc-abi-tool")
(sha256
(base32 "09m0ipixxw0dnal0zsgk6kvcz29y9s256b9y00s4hkhj95n630il"))
(modules '((guix build utils)))
(snippet
#~(begin
(substitute* "consolidate.zig"
((".*minor = 3[5678].*") "")
(("(w\\.writeIntLittle.u16, )(@intCast.*);" _ prefix suffix)
(string-append prefix "@as(u16, " suffix ");")))
(with-directory-excursion "glibc"
(for-each delete-file-recursively
'("2.35" "2.36" "2.37" "2.38")))))))
(define-public zig-0.11
(package
(inherit zig-0.10)
(name "zig")
(version "0.11.0")
(source
(origin
(inherit (zig-source
version version
"0qh7c27cd4wcdjj0mbpkarvwypfk1js8hkyxs0z149qv75zkbrca"))
(patches
(search-patches
"zig-0.11-build-respect-PKG_CONFIG-env-var.patch"
"zig-0.9-use-baseline-cpu-by-default.patch"
"zig-0.11-use-system-paths.patch"
"zig-0.11-fix-runpath.patch"))))
(arguments
(substitute-keyword-arguments (package-arguments zig-0.10)
((#:phases phases '%standard-phases)
#~(modify-phases #$phases
(add-after 'unpack 'set-host-triple
(lambda _
(substitute* "CMakeLists.txt"
(("\\$\\{ZIG_HOST_TARGET_TRIPLE\\}")
(zig-target
#$(platform-target
(lookup-platform-by-system (%current-system))))))))
(add-after 'unpack 'prepare-source
(lambda* (#:key native-inputs inputs #:allow-other-keys)
(install-file (search-input-file
(or native-inputs inputs) "bin/zig1.wasm")
"stage1")
(make-file-writable "stage1/zig1.wasm")))
(add-after 'install 'build-zig1
(lambda _
(invoke (string-append #$output "/bin/zig")
"build" "update-zig1" "--verbose")))
(add-after 'build-zig1 'install-zig1
(lambda _
(install-file "stage1/zig1.wasm"
(string-append #$output:zig1 "/bin"))))
;; TODO: Disable tests for macOS target and run full test.
;; Issue with glibc in CPLUS_INCLUDE_PATH:
;; <https://github.com/ziglang/zig/issues/18063>.
(replace 'check
(lambda* (#:key tests? #:allow-other-keys)
(when tests?
(invoke (string-append #$output "/bin/zig")
"test" "-I" "test" "test/behavior.zig"))))))))
(inputs
(modify-inputs (package-inputs zig-0.10)
(replace "clang" clang-16)
(replace "lld" lld-16)))
(native-inputs
(modify-inputs (package-native-inputs zig-0.10)
(prepend binaryen `(,zig-0.10.0-3985 "zig1"))
(replace "glibc-abi-tool" zig-0.11-glibc-abi-tool)
(replace "llvm" llvm-16)))
(outputs '("out" "zig1"))
(properties `((max-silent-time . 9600)
,@(clang-compiler-cpu-architectures "16")))))
;;;
;;; Bootstrap path for Zig 0.12.
;;; See also: <https://git.jakstys.lt/motiejus/zig-repro>.
;;;
(define zig-0.11.0-149
(let ((commit "7a85ad151daece3d0bba3c8d23081502a0956c95")
(revision "149")
(base zig-0.11))
(package
(inherit base)
(name "zig")
(version (git-version "0.11.0" revision commit))
(source (zig-source
version commit
"1kb245d4wfs1dyv7ccw3xiawasggpln9qxfqwlp4gkdg50l1qyzw"))
;; zig1
(arguments
(substitute-keyword-arguments (package-arguments zig-0.10.0-747)
((#:phases phases '%standard-phases)
#~(modify-phases #$phases
(replace 'build-zig1
(lambda _
(invoke "zig" "build" "--zig-lib-dir" "lib"
"update-zig1" "--verbose")))))))
(native-inputs
(modify-inputs (package-native-inputs base)
(replace "zig" `(,base "out")))))))
(define zig-0.11.0-384
(let ((commit "88f5315ddfc6eaf3e28433504ec046fb3252db7c")
(revision "384")
(base zig-0.11.0-149))
(package
(inherit base)
(name "zig")
(version (git-version "0.11.0" revision commit))
(source (zig-source
version commit
"0ybql8l4mg8i79n353rc7gbx88kqgd371xrlvpmy69mxdffh5bas"))
;; zig2+zig1
(arguments (package-arguments zig-0.10.0-748))
(native-inputs
(modify-inputs (package-native-inputs base)
(replace "zig" `(,base "zig1")))))))
(define zig-0.11.0-494
(let ((commit "a8d2ed806558cc1472f3a532169a4994abe17833")
(revision "494")
(base zig-0.11.0-384))
(package
(inherit base)
(name "zig")
(version (git-version "0.11.0" revision commit))
(source (zig-source
version commit
"04jb7la7ang0mip9qbrx57j1ls2n29svqafschxbh5j23pf74dql"))
;; zig2
(arguments (package-arguments zig-0.10.0-851))
(inputs
(modify-inputs (package-inputs base)
(replace "clang" clang-17)
(replace "lld" lld-17)))
(native-inputs
(modify-inputs (package-native-inputs base)
(replace "llvm" llvm-17)
(replace "zig" `(,base "zig1"))))
(properties `((max-silent-time . 9600)
,@(clang-compiler-cpu-architectures "17"))))))
(define zig-0.11.0-587
(let ((commit "6bd54a1d3ebd8d997158c57057ba742824cf7e0c")
(revision "587")
(base zig-0.11.0-494))
(package
(inherit base)
(name "zig")
(version (git-version "0.11.0" revision commit))
(source (zig-source
version commit
"16v6yrbwg1pc888fp3cmdbk2wyz0nm8xp66a14fi3akxyavsmkxm"))
;; zig1
(arguments (package-arguments zig-0.10.0-747))
(native-inputs
(modify-inputs (package-native-inputs base)
(replace "zig" `(,base "out")))))))
(define zig-0.11.0-631
(let ((commit "21780899eb17a0cb795ff40e5fae6556c38ea13e")
(revision "631")
(base zig-0.11.0-587))
(package
(inherit base)
(name "zig")
(version (git-version "0.11.0" revision commit))
(source (zig-source
version commit
"19j3gbdsjsp602n2c1lp3i96yay94acsiasyzns8hs3v1sc952rp"))
;; zig2
(arguments (package-arguments zig-0.10.0-851))
(native-inputs
(modify-inputs (package-native-inputs base)
(replace "zig" `(,base "zig1")))))))
(define zig-0.11.0-638
(let ((commit "9763573ebb4f05eaa1c0bd5598f8dd6aee20ae9c")
(revision "638")
(base zig-0.11.0-631))
(package
(inherit base)
(name "zig")
(version (git-version "0.11.0" revision commit))
(source (zig-source
version commit
"13620a6hlcaklmnxax4g3f4irddr9d15646s6bgn6ymwf6m4w4g0"))
;; zig1+zig2
(arguments (package-arguments zig-0.10.0-1073))
(native-inputs
(modify-inputs (package-native-inputs base)
(replace "zig" `(,base "out")))))))
(define zig-0.11.0-702
(let ((commit "63bd2bff12992aef0ce23ae4b344e9cb5d65f05d")
(revision "702")
(base zig-0.11.0-638))
(package
(inherit base)
(name "zig")
(version (git-version "0.11.0" revision commit))
(source (zig-source
version commit
"049fpdgkarp834amymw0clvsk6g20742d3940la60na03rc4vy5x"))
;; zig1
(arguments
(substitute-keyword-arguments (package-arguments zig-0.10.0-747)
((#:phases phases '%standard-phases)
#~(modify-phases #$phases
(replace 'build-zig1
(lambda _
(invoke "zig2" "build" "update-zig1" "--verbose")))))))
(native-inputs
(modify-inputs (package-native-inputs base)
(replace "zig" `(,base "out")))))))
(define zig-0.11.0-761
(let ((commit "9a09651019b24a32945f73dd7a69562f2cf31581")
(revision "761")
(base zig-0.11.0-702))
(package
(inherit base)
(name "zig")
(version (git-version "0.11.0" revision commit))
(source (zig-source
version commit
"0d503vq76vl7m9fcmyqwx5nljy04fvjf06wfr7q7n5ircw5wjp0s"))
;; zig2
(arguments (package-arguments zig-0.10.0-851))
(native-inputs
(modify-inputs (package-native-inputs base)
(replace "zig" `(,base "zig1")))))))
(define zig-0.11.0-1967
(let ((commit "6beae6c061a650ea2d695e6902683641df920aa8")
(revision "1967")
(base zig-0.11.0-761))
(package
(inherit base)
(name "zig")
(version (git-version "0.11.0" revision commit))
(source (zig-source
version commit
"0bah98h9rdaynwxlq4ibr925hmk69kwbrkgid2dgsksf6krb6sms"))
;; zig1
(arguments (package-arguments zig-0.10.0-747))
(native-inputs
(modify-inputs (package-native-inputs base)
(replace "zig" `(,base "out")))))))
(define zig-0.11.0-3245
(let ((commit "4f782d1e853accbe1c4bfab2617c3813d4b1e59f")
(revision "3245")
(base zig-0.11.0-1967))
(package
(inherit base)
(name "zig")
(version (git-version "0.11.0" revision commit))
(source (zig-source
version commit
"0a4pnilfc528zl9ycwsi8kaqbq6q4bw3l1cpv50fpacsxgnsfjp3"))
;; zig2
(arguments (package-arguments zig-0.10.0-851))
(native-inputs
(modify-inputs (package-native-inputs base)
(replace "zig" `(,base "zig1")))))))
(define zig-0.11.0-3344
(let ((commit "e646e0116196c2bd9668317366f5380f08c30e6e")
(revision "3344")
(base zig-0.11.0-3245))
(package
(inherit base)
(name "zig")
(version (git-version "0.11.0" revision commit))
(source (zig-source
version commit
"1vymn6qffmkhkl3rnp8zrxa1vwg8ayg5r2z3qz9bpfc6r2sb6ddq"))
;; zig1
(arguments
(substitute-keyword-arguments (package-arguments zig-0.10.0-747)
((#:phases phases '%standard-phases)
#~(modify-phases #$phases
(replace 'build-zig1
(lambda _
(invoke "zig2" "build" "update-zig1" "--verbose")))))))
(native-inputs
(modify-inputs (package-native-inputs base)
(replace "zig" `(,base "out")))))))
(define zig-0.11.0-3501
(let ((commit "9b2345e182090e2f4c57e7684ec9739f195fdb1d")
(revision "3501")
(base zig-0.11.0-3344))
(package
(inherit base)
(name "zig")
(version (git-version "0.11.0" revision commit))
(source (zig-source
version commit
"0gwfnsjc3avx51cr5cwancms8s14hkrhqvk926cz3phgnn4jmpz0"))
;; zig2
(arguments (package-arguments zig-0.10.0-851))
(native-inputs
(modify-inputs (package-native-inputs base)
(replace "zig" `(,base "zig1")))))))
(define zig-0.11.0-3503
(let ((commit "17673dcd6e3ffeb25fc9dc1cfc72334ab4e71b37")
(revision "3503")
(base zig-0.11.0-3501))
(package
(inherit base)
(name "zig")
(version (git-version "0.11.0" revision commit))
(source (zig-source
version commit
"09j6svmrlk9ybkz308vbdqqx87yc20yfj7jk59vj451478x4fcnb"))
;; zig1
(arguments (package-arguments zig-0.10.0-747))
(native-inputs
(modify-inputs (package-native-inputs base)
(replace "zig" `(,base "out")))))))
(define zig-0.11.0-3506
(let ((commit "fb192df4f2d12dda5019e14bf6cab2693432cb36")
(revision "3506")
(base zig-0.11.0-3503))
(package
(inherit base)
(name "zig")
(version (git-version "0.11.0" revision commit))
(source (zig-source
version commit
"1k5qd1pf563wi4hk4qs29sxph38n7jd4ic5w7qw80pi3aq9c9vbx"))
;; zig2
(arguments (package-arguments zig-0.10.0-851))
(native-inputs
(modify-inputs (package-native-inputs base)
(replace "zig" `(,base "zig1")))))))
(define zig-0.11.0-3604
(let ((commit "7611d90ba011fb030523e669e85acfb6faae5d19")
(revision "3604")
(base zig-0.11.0-3506))
(package
(inherit base)
(name "zig")
(version (git-version "0.11.0" revision commit))
(source (zig-source
version commit
"1yl91rpqsnlf38hg77phpl5hy7ds0cg57agr23hjhy50z4vdj3m4"))
;; zig1
(arguments (package-arguments zig-0.10.0-747))
(native-inputs
(modify-inputs (package-native-inputs base)
(replace "zig" `(,base "out")))))))
(define zig-0.12-glibc-abi-tool
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/ziglang/glibc-abi-tool")
(commit "fc5d0a7046b76795e4219f8f168e118ec29fbc53")))
(file-name "glibc-abi-tool")
(sha256
(base32 "1q9plbqkkk3jzrvsgcjmj5jjdncz4ym9p0snglz4kkjwwm65gqs1"))))
(define-public zig-0.12
(package
(inherit zig-0.11)
(name "zig")
(version "0.12.1")
(source
(origin
(inherit (zig-source
version version
"0ssgfrsk116p16rwjwq1z2pvvcdij6s30s19bhzjms7maz4s77hb"))
(patches
(search-patches
"zig-0.12-build-respect-PKG_CONFIG-env-var.patch"
"zig-0.12-use-baseline-cpu-by-default.patch"
"zig-0.12-use-system-paths.patch"
"zig-0.12-fix-runpath.patch"))))
(arguments
(substitute-keyword-arguments (package-arguments zig-0.11)
((#:phases phases '%standard-phases)
#~(modify-phases #$phases
(replace 'patch-more-shebangs
(lambda* (#:key inputs #:allow-other-keys)
;; Zig uses information about an ELF file to determine the
;; version of glibc and other data for native builds.
(substitute* "lib/std/zig/system.zig"
(("/usr/bin/env")
(search-input-file inputs "bin/clang++")))))))))
(inputs
(modify-inputs (package-inputs zig-0.11)
(replace "clang" clang-17)
(replace "lld" lld-17)))
(native-inputs
(modify-inputs (package-native-inputs zig-0.11)
(replace "glibc-abi-tool" zig-0.12-glibc-abi-tool)
(replace "llvm" llvm-17)
(replace "zig" `(,zig-0.11.0-3604 "zig1"))))
(properties `((max-silent-time . 9600)
,@(clang-compiler-cpu-architectures "17")))))
;;;
;;; Bootstrap path for Zig 0.13.
;;;
(define zig-0.12.0-109
(let ((commit "b7799ef322103c8e449c45494c29fb4a8c9867df")
(revision "109")
(base zig-0.12))
(package
(inherit base)
(name "zig")
(version (git-version "0.12.0" revision commit))
(source (zig-source
version commit
"1zy19w93wrd7dfdih8hfk9h3brkgaspaa60ipcmf08hlx6z2f0bz"))
;; zig1
(arguments
(substitute-keyword-arguments (package-arguments zig-0.10.0-747)
((#:phases phases '%standard-phases)
#~(modify-phases #$phases
;; Build errors when zig1.wasm is not found.
(add-after 'unpack 'prepare-source
(lambda _
(invoke "touch" "stage1/zig1.wasm")))
(replace 'build-zig1
(lambda _
(invoke "zig" "build" "--zig-lib-dir" "lib"
"update-zig1" "--verbose")))))))
(native-inputs
(modify-inputs (package-native-inputs base)
(replace "zig" `(,base "out")))))))
(define zig-0.13-glibc-abi-tool
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/ziglang/glibc-abi-tool")
(commit "fc5d0a7046b76795e4219f8f168e118ec29fbc53")))
(file-name "glibc-abi-tool")
(sha256
(base32 "1q9plbqkkk3jzrvsgcjmj5jjdncz4ym9p0snglz4kkjwwm65gqs1"))))
(define-public zig-0.13
(package
(inherit zig-0.12)
(name "zig")
(version "0.13.0")
(source
(origin
(inherit (zig-source
version version
"0ly8042lbsa8019g0d1jg4l06rxpq2530n9mijq66n4lmx7a5976"))
(patches
(search-patches
"zig-0.13-build-respect-PKG_CONFIG-env-var.patch"
"zig-0.12-use-baseline-cpu-by-default.patch"
"zig-0.12-use-system-paths.patch"
"zig-0.13-fix-runpath.patch"))))
(inputs
(modify-inputs (package-inputs zig-0.12)
(replace "clang" clang-18)
(replace "lld" lld-18)))
(native-inputs
(modify-inputs (package-native-inputs zig-0.12)
(replace "glibc-abi-tool" zig-0.13-glibc-abi-tool)
(replace "llvm" llvm-18)
(replace "zig" `(,zig-0.12.0-109 "zig1"))))
(properties `((max-silent-time . 9600)
,@(clang-compiler-cpu-architectures "18")))))
(define-public zig zig-0.13)