summaryrefslogtreecommitdiff
path: root/gnu/packages/zig.scm
diff options
context:
space:
mode:
authorHilton Chain <hako@ultrarare.space>2026-06-21 14:21:47 +0800
committerHilton Chain <hako@ultrarare.space>2026-07-06 16:08:22 +0800
commit144df629c2a3a4ef475c195371ce41003dc5ad89 (patch)
tree6348e05b89711df0783ebe6cdf2fef76aab05149 /gnu/packages/zig.scm
parent990aa9ced2d6415a6724858dd47d5e6ce761cc08 (diff)
gnu: zig: Make public packages leaves of the bootstrap chain.
This avoids building stage3 on the bootstrap chain and makes it easier to modify / remove the public packages. * gnu/packages/zig.scm (zig-0.11.0-149): Base on zig-0.10.0-3985. (zig-0.12.0-109): Base on zig-0.11.0-3604. (zig-0.13.0-286): Base on zig-0.12.0-109. (zig-0.14.0-0): New variable. (zig-0.14.0-687): Base on it. (zig-0.15.0-0): New variable. (zig-0.15.0-1447): Base on it. (zig-0.11-libc-abi-tools, zig-0.12-libc-abi-tools, zig-0.13-libc-abi-tools) (zig-0.14-libc-abi-tools, zig-0.15-libc-abi-tools, zig-0.11, zig-0.12, zig-0.13) (zig-0.14, zig-0.15): Move definitions to the end of the file.
Diffstat (limited to 'gnu/packages/zig.scm')
-rw-r--r--gnu/packages/zig.scm640
1 files changed, 334 insertions, 306 deletions
diff --git a/gnu/packages/zig.scm b/gnu/packages/zig.scm
index 00715fe7736..7344c496455 100644
--- a/gnu/packages/zig.scm
+++ b/gnu/packages/zig.scm
@@ -1111,88 +1111,6 @@ toolchain. Among other features it provides
1111 (modify-inputs native-inputs 1111 (modify-inputs native-inputs
1112 (replace "zig" `(,base "out"))))))) 1112 (replace "zig" `(,base "out")))))))
1113 1113
1114(define zig-0.11-libc-abi-tools
1115 (origin
1116 (method git-fetch)
1117 (uri (git-reference
1118 (url "https://codeberg.org/ziglang/libc-abi-tools")
1119 (commit "13576b1ea957882be7ff2c99f4cdc27454930219")))
1120 (file-name "libc-abi-tools")
1121 (sha256
1122 (base32 "09m0ipixxw0dnal0zsgk6kvcz29y9s256b9y00s4hkhj95n630il"))
1123 (modules '((guix build utils)))
1124 (snippet
1125 #~(begin
1126 (substitute* "consolidate.zig"
1127 ((".*minor = 3[5678].*") "")
1128 (("(w\\.writeIntLittle.u16, )(@intCast.*);" _ prefix suffix)
1129 (string-append prefix "@as(u16, " suffix ");")))
1130 (with-directory-excursion "glibc"
1131 (for-each delete-file-recursively
1132 '("2.35" "2.36" "2.37" "2.38")))))))
1133
1134(define-public zig-0.11
1135 (package
1136 (inherit zig-0.10)
1137 (name "zig")
1138 (version "0.11.0")
1139 (source
1140 (origin
1141 (inherit (zig-source
1142 version version
1143 "0qh7c27cd4wcdjj0mbpkarvwypfk1js8hkyxs0z149qv75zkbrca"))
1144 (patches
1145 (search-patches
1146 "zig-0.11-build-respect-PKG_CONFIG-env-var.patch"
1147 "zig-0.9-use-baseline-cpu-by-default.patch"
1148 "zig-0.11-use-system-paths.patch"
1149 "zig-0.11-fix-runpath.patch"))))
1150 (arguments
1151 (substitute-keyword-arguments arguments
1152 ((#:phases phases '%standard-phases)
1153 #~(modify-phases #$phases
1154 (add-after 'unpack 'set-host-triple
1155 (lambda _
1156 (substitute* "CMakeLists.txt"
1157 (("\\$\\{ZIG_HOST_TARGET_TRIPLE\\}")
1158 (zig-target
1159 #$(platform-target
1160 (lookup-platform-by-system (%current-system))))))))
1161 (add-after 'unpack 'prepare-source
1162 (lambda* (#:key native-inputs inputs #:allow-other-keys)
1163 (install-file (search-input-file
1164 (or native-inputs inputs) "bin/zig1.wasm")
1165 "stage1")
1166 (make-file-writable "stage1/zig1.wasm")))
1167 (add-after 'install 'build-zig1
1168 (lambda _
1169 (invoke (string-append #$output "/bin/zig")
1170 "build" "update-zig1" "--verbose")))
1171 (add-after 'build-zig1 'install-zig1
1172 (lambda _
1173 (install-file "stage1/zig1.wasm"
1174 (string-append #$output:zig1 "/bin"))))
1175 ;; TODO: Disable tests for macOS target and run full test.
1176 ;; Issue with glibc in CPLUS_INCLUDE_PATH:
1177 ;; <https://github.com/ziglang/zig/issues/18063>.
1178 (replace 'check
1179 (lambda* (#:key tests? #:allow-other-keys)
1180 (when tests?
1181 (invoke (string-append #$output "/bin/zig")
1182 "test" "-I" "test" "test/behavior.zig"))))))))
1183 (inputs
1184 (modify-inputs inputs
1185 (replace "clang" clang-16)
1186 (replace "lld" lld-16)))
1187 (native-inputs
1188 (modify-inputs native-inputs
1189 (prepend binaryen `(,zig-0.10.0-3985 "zig1"))
1190 (replace "libc-abi-tools" zig-0.11-libc-abi-tools)
1191 (replace "llvm" llvm-16)))
1192 (outputs '("out" "zig1"))
1193 (properties `((max-silent-time . 9600)
1194 ,@(clang-compiler-cpu-architectures "16")))))
1195
1196 1114
1197;;; 1115;;;
1198;;; Bootstrap path for Zig 0.12. 1116;;; Bootstrap path for Zig 0.12.
@@ -1202,7 +1120,7 @@ toolchain. Among other features it provides
1202(define zig-0.11.0-149 1120(define zig-0.11.0-149
1203 (let ((commit "7a85ad151daece3d0bba3c8d23081502a0956c95") 1121 (let ((commit "7a85ad151daece3d0bba3c8d23081502a0956c95")
1204 (revision "149") 1122 (revision "149")
1205 (base zig-0.11)) 1123 (base zig-0.10.0-3985))
1206 (package 1124 (package
1207 (inherit base) 1125 (inherit base)
1208 (name "zig") 1126 (name "zig")
@@ -1210,18 +1128,11 @@ toolchain. Among other features it provides
1210 (source (zig-source 1128 (source (zig-source
1211 version commit 1129 version commit
1212 "1kb245d4wfs1dyv7ccw3xiawasggpln9qxfqwlp4gkdg50l1qyzw")) 1130 "1kb245d4wfs1dyv7ccw3xiawasggpln9qxfqwlp4gkdg50l1qyzw"))
1213 ;; zig1 1131 ;; zig2+zig1
1214 (arguments 1132 (arguments (package-arguments zig-0.10.0-748))
1215 (substitute-keyword-arguments (package-arguments zig-0.10.0-747)
1216 ((#:phases phases '%standard-phases)
1217 #~(modify-phases #$phases
1218 (replace 'build-zig1
1219 (lambda _
1220 (invoke "zig" "build" "--zig-lib-dir" "lib"
1221 "update-zig1" "--verbose")))))))
1222 (native-inputs 1133 (native-inputs
1223 (modify-inputs native-inputs 1134 (modify-inputs native-inputs
1224 (replace "zig" `(,base "out"))))))) 1135 (replace "zig" `(,base "zig1")))))))
1225 1136
1226(define zig-0.11.0-384 1137(define zig-0.11.0-384
1227 (let ((commit "88f5315ddfc6eaf3e28433504ec046fb3252db7c") 1138 (let ((commit "88f5315ddfc6eaf3e28433504ec046fb3252db7c")
@@ -1480,55 +1391,6 @@ toolchain. Among other features it provides
1480 (modify-inputs native-inputs 1391 (modify-inputs native-inputs
1481 (replace "zig" `(,base "out"))))))) 1392 (replace "zig" `(,base "out")))))))
1482 1393
1483(define zig-0.12-libc-abi-tools
1484 (origin
1485 (method git-fetch)
1486 (uri (git-reference
1487 (url "https://codeberg.org/ziglang/libc-abi-tools")
1488 (commit "fc5d0a7046b76795e4219f8f168e118ec29fbc53")))
1489 (file-name "libc-abi-tools")
1490 (sha256
1491 (base32 "1q9plbqkkk3jzrvsgcjmj5jjdncz4ym9p0snglz4kkjwwm65gqs1"))))
1492
1493(define-public zig-0.12
1494 (package
1495 (inherit zig-0.11)
1496 (name "zig")
1497 (version "0.12.1")
1498 (source
1499 (origin
1500 (inherit (zig-source
1501 version version
1502 "0ssgfrsk116p16rwjwq1z2pvvcdij6s30s19bhzjms7maz4s77hb"))
1503 (patches
1504 (search-patches
1505 "zig-0.12-build-respect-PKG_CONFIG-env-var.patch"
1506 "zig-0.12-use-baseline-cpu-by-default.patch"
1507 "zig-0.12-use-system-paths.patch"
1508 "zig-0.12-fix-runpath.patch"))))
1509 (arguments
1510 (substitute-keyword-arguments arguments
1511 ((#:phases phases '%standard-phases)
1512 #~(modify-phases #$phases
1513 (replace 'patch-more-shebangs
1514 (lambda* (#:key inputs #:allow-other-keys)
1515 ;; Zig uses information about an ELF file to determine the
1516 ;; version of glibc and other data for native builds.
1517 (substitute* "lib/std/zig/system.zig"
1518 (("/usr/bin/env")
1519 (search-input-file inputs "bin/clang++")))))))))
1520 (inputs
1521 (modify-inputs inputs
1522 (replace "clang" clang-17)
1523 (replace "lld" lld-17)))
1524 (native-inputs
1525 (modify-inputs native-inputs
1526 (replace "libc-abi-tools" zig-0.12-libc-abi-tools)
1527 (replace "llvm" llvm-17)
1528 (replace "zig" `(,zig-0.11.0-3604 "zig1"))))
1529 (properties `((max-silent-time . 9600)
1530 ,@(clang-compiler-cpu-architectures "17")))))
1531
1532 1394
1533;;; 1395;;;
1534;;; Bootstrap path for Zig 0.13. 1396;;; Bootstrap path for Zig 0.13.
@@ -1537,7 +1399,7 @@ toolchain. Among other features it provides
1537(define zig-0.12.0-109 1399(define zig-0.12.0-109
1538 (let ((commit "b7799ef322103c8e449c45494c29fb4a8c9867df") 1400 (let ((commit "b7799ef322103c8e449c45494c29fb4a8c9867df")
1539 (revision "109") 1401 (revision "109")
1540 (base zig-0.12)) 1402 (base zig-0.11.0-3604))
1541 (package 1403 (package
1542 (inherit base) 1404 (inherit base)
1543 (name "zig") 1405 (name "zig")
@@ -1545,60 +1407,18 @@ toolchain. Among other features it provides
1545 (source (zig-source 1407 (source (zig-source
1546 version commit 1408 version commit
1547 "1zy19w93wrd7dfdih8hfk9h3brkgaspaa60ipcmf08hlx6z2f0bz")) 1409 "1zy19w93wrd7dfdih8hfk9h3brkgaspaa60ipcmf08hlx6z2f0bz"))
1548 ;; zig1 1410 ;; zig2+zig1
1549 (arguments 1411 (arguments (package-arguments zig-0.10.0-748))
1550 (substitute-keyword-arguments (package-arguments zig-0.10.0-747) 1412 (inputs
1551 ((#:phases phases '%standard-phases) 1413 (modify-inputs inputs
1552 #~(modify-phases #$phases 1414 (replace "clang" clang-18)
1553 ;; Build errors when zig1.wasm is not found. 1415 (replace "lld" lld-18)))
1554 (add-after 'unpack 'prepare-source
1555 (lambda _
1556 (invoke "touch" "stage1/zig1.wasm")))
1557 (replace 'build-zig1
1558 (lambda _
1559 (invoke "zig" "build" "--zig-lib-dir" "lib"
1560 "update-zig1" "--verbose")))))))
1561 (native-inputs 1416 (native-inputs
1562 (modify-inputs native-inputs 1417 (modify-inputs native-inputs
1563 (replace "zig" `(,base "out"))))))) 1418 (replace "llvm" llvm-18)
1564 1419 (replace "zig" `(,base "zig1"))))
1565(define zig-0.13-libc-abi-tools 1420 (properties `((max-silent-time . 9600)
1566 (origin 1421 ,@(clang-compiler-cpu-architectures "18"))))))
1567 (method git-fetch)
1568 (uri (git-reference
1569 (url "https://codeberg.org/ziglang/libc-abi-tools")
1570 (commit "fc5d0a7046b76795e4219f8f168e118ec29fbc53")))
1571 (file-name "libc-abi-tools")
1572 (sha256
1573 (base32 "1q9plbqkkk3jzrvsgcjmj5jjdncz4ym9p0snglz4kkjwwm65gqs1"))))
1574
1575(define-public zig-0.13
1576 (package
1577 (inherit zig-0.12)
1578 (name "zig")
1579 (version "0.13.0")
1580 (source
1581 (origin
1582 (inherit (zig-source
1583 version version
1584 "0ly8042lbsa8019g0d1jg4l06rxpq2530n9mijq66n4lmx7a5976"))
1585 (patches
1586 (search-patches
1587 "zig-0.13-build-respect-PKG_CONFIG-env-var.patch"
1588 "zig-0.12-use-baseline-cpu-by-default.patch"
1589 "zig-0.12-use-system-paths.patch"
1590 "zig-0.13-fix-runpath.patch"))))
1591 (inputs
1592 (modify-inputs inputs
1593 (replace "clang" clang-18)
1594 (replace "lld" lld-18)))
1595 (native-inputs
1596 (modify-inputs native-inputs
1597 (replace "libc-abi-tools" zig-0.13-libc-abi-tools)
1598 (replace "llvm" llvm-18)
1599 (replace "zig" `(,zig-0.12.0-109 "zig1"))))
1600 (properties `((max-silent-time . 9600)
1601 ,@(clang-compiler-cpu-architectures "18")))))
1602 1422
1603 1423
1604;;; 1424;;;
@@ -1608,7 +1428,7 @@ toolchain. Among other features it provides
1608(define zig-0.13.0-286 1428(define zig-0.13.0-286
1609 (let ((commit "d72a8db2db1a5c77af2deb713248dc53f9adcb73") 1429 (let ((commit "d72a8db2db1a5c77af2deb713248dc53f9adcb73")
1610 (revision "286") 1430 (revision "286")
1611 (base zig-0.13)) 1431 (base zig-0.12.0-109))
1612 (package 1432 (package
1613 (inherit base) 1433 (inherit base)
1614 (name "zig") 1434 (name "zig")
@@ -1808,58 +1628,32 @@ toolchain. Among other features it provides
1808 (modify-inputs native-inputs 1628 (modify-inputs native-inputs
1809 (replace "zig" `(,base "zig1"))))))) 1629 (replace "zig" `(,base "zig1")))))))
1810 1630
1811(define zig-0.14-libc-abi-tools
1812 (origin
1813 (method git-fetch)
1814 (uri (git-reference
1815 (url "https://codeberg.org/ziglang/libc-abi-tools")
1816 (commit "ed9d3bb356413e73b836955e75f399dfb3ec255e")))
1817 (file-name "libc-abi-tools")
1818 (sha256
1819 (base32 "0ckhwlszm0vkiqsyp2rzp1zcfljh1ng24c7pdvpyfj51x4s612z1"))))
1820
1821(define-public zig-0.14
1822 (package
1823 (inherit zig-0.12)
1824 (name "zig")
1825 (version "0.14.1")
1826 (source
1827 (origin
1828 (inherit (zig-source
1829 version version
1830 "0cnc3bzl965ckm70ayd6a29zn5h9cy3qzyfncp4n7mzkiwhlj58f"))
1831 (patches
1832 (search-patches
1833 "zig-0.14-use-baseline-cpu-by-default.patch"
1834 "zig-0.14-use-system-paths.patch"
1835 "zig-0.14-fix-runpath.patch"))
1836 (snippet
1837 #~(begin
1838 #$(origin-snippet (package-source zig-0.13))
1839 ;; For ARM builds.
1840 (substitute* "build.zig"
1841 (("\\.*.max_rss.*") ""))))))
1842 (inputs
1843 (modify-inputs inputs
1844 (replace "clang" clang-19)
1845 (replace "lld" lld-19)))
1846 (native-inputs
1847 (modify-inputs native-inputs
1848 (replace "libc-abi-tools" zig-0.14-libc-abi-tools)
1849 (replace "llvm" llvm-19)
1850 (replace "zig" `(,zig-0.13.0-3252 "zig1"))))
1851 (properties `((max-silent-time . 9600)
1852 ,@(clang-compiler-cpu-architectures "19")))))
1853
1854 1631
1855;;; 1632;;;
1856;;; Bootstrap path for Zig 0.15. 1633;;; Bootstrap path for Zig 0.15.
1857;;; 1634;;;
1858 1635
1636(define zig-0.14.0-0
1637 (let ((commit "5ad91a646a753cc3eecd8751e61cf458dadd9ac4")
1638 (revision "0")
1639 (base zig-0.13.0-3252))
1640 (package
1641 (inherit base)
1642 (name "zig")
1643 (version (git-version "0.14.0" revision commit))
1644 (source (zig-source
1645 version commit
1646 "0ndrwir81zhkwviwnzwqc4vszc1klv1fnlf66nmdwijrkqi5wasp"))
1647 ;; zig2+zig1
1648 (arguments (package-arguments zig-0.10.0-748))
1649 (native-inputs
1650 (modify-inputs native-inputs
1651 (replace "zig" `(,base "zig1")))))))
1652
1859(define zig-0.14.0-687 1653(define zig-0.14.0-687
1860 (let ((commit "cc047fdd959edb260f7a6e305ccad53f185ece66") 1654 (let ((commit "cc047fdd959edb260f7a6e305ccad53f185ece66")
1861 (revision "687") 1655 (revision "687")
1862 (base zig-0.14)) 1656 (base zig-0.14.0-0))
1863 (package 1657 (package
1864 (inherit base) 1658 (inherit base)
1865 (name "zig") 1659 (name "zig")
@@ -1965,80 +1759,32 @@ toolchain. Among other features it provides
1965 (modify-inputs native-inputs 1759 (modify-inputs native-inputs
1966 (replace "zig" `(,base "out"))))))) 1760 (replace "zig" `(,base "out")))))))
1967 1761
1968(define zig-0.15-libc-abi-tools
1969 (origin
1970 (method git-fetch)
1971 (uri (git-reference
1972 (url "https://codeberg.org/ziglang/libc-abi-tools")
1973 (commit "ec46122c7b8c7854f08e67e108083907d09996f5")))
1974 (file-name "libc-abi-tools")
1975 (sha256
1976 (base32 "0s46f1wbqg53wxlrljb9afw4s8j5cl5vz5xhajy6fagy05xns2bc"))))
1977
1978(define-public zig-0.15
1979 (package
1980 (inherit zig-0.12)
1981 (name "zig")
1982 (version "0.15.2")
1983 (source
1984 (origin
1985 (inherit (zig-source
1986 version version
1987 "0kr8y1xzb7ffqg4yy7ncg4jh6kndxn5xfqf2viy5gvqdqqql8ymv"))
1988 (patches
1989 (search-patches
1990 "zig-0.14-use-baseline-cpu-by-default.patch"
1991 "zig-0.14-use-system-paths.patch"
1992 "zig-0.15-fix-runpath.patch"))))
1993 (arguments
1994 (substitute-keyword-arguments arguments
1995 ((#:phases phases '%standard-phases)
1996 #~(modify-phases #$phases
1997 (replace 'copy-libc-abi-tools
1998 (lambda* (#:key inputs native-inputs #:allow-other-keys)
1999 (mkdir-p "/tmp/libc-abi-tools")
2000 (with-directory-excursion "/tmp/libc-abi-tools"
2001 (copy-recursively
2002 (dirname (search-input-file
2003 (or native-inputs inputs) "list.zig"))
2004 ".")
2005 (for-each make-file-writable (find-files ".")))))
2006 ;; Added support for more libc implementations.
2007 (replace 'install-abilists
2008 (lambda _
2009 (with-directory-excursion "/tmp/libc-abi-tools"
2010 (for-each
2011 (lambda (libc)
2012 (with-directory-excursion libc
2013 (invoke (string-append #$output "/bin/zig")
2014 "run" "consolidate.zig")
2015 (install-file
2016 "abilists"
2017 (string-append #$output "/lib/zig/libc/" libc))))
2018 '("freebsd"
2019 "glibc"
2020 "netbsd")))))))))
2021 (inputs
2022 (modify-inputs inputs
2023 (replace "clang" clang-20)
2024 (replace "lld" lld-20)))
2025 (native-inputs
2026 (modify-inputs native-inputs
2027 (replace "libc-abi-tools" zig-0.15-libc-abi-tools)
2028 (replace "llvm" llvm-20)
2029 (replace "zig" `(,zig-0.14.0-1197 "zig1"))))
2030 (properties `((max-silent-time . 9600)
2031 ,@(clang-compiler-cpu-architectures "20")))))
2032
2033 1762
2034;;; 1763;;;
2035;;; Bootstrap path for Zig 0.16. 1764;;; Bootstrap path for Zig 0.16.
2036;;; 1765;;;
2037 1766
1767(define zig-0.15.0-0
1768 (let ((commit "94cda37d691316ad4129ee37bbdecb911349109f")
1769 (revision "0")
1770 (base zig-0.14.0-1197))
1771 (package
1772 (inherit base)
1773 (name "zig")
1774 (version (git-version "0.15.0" revision commit))
1775 (source (zig-source
1776 version commit
1777 "1wlw9acjff9hhghqmcrbh42n6hwkfgzdbkcizk9p948z2pnqmic2"))
1778 ;; zig2+zig1
1779 (arguments (package-arguments zig-0.10.0-748))
1780 (native-inputs
1781 (modify-inputs native-inputs
1782 (replace "zig" `(,base "zig1")))))))
1783
2038(define zig-0.15.0-1447 1784(define zig-0.15.0-1447
2039 (let ((commit "ce0df033cf2bb6986c6c226786e6543d05e29a77") 1785 (let ((commit "ce0df033cf2bb6986c6c226786e6543d05e29a77")
2040 (revision "1447") 1786 (revision "1447")
2041 (base zig-0.15)) 1787 (base zig-0.15.0-0))
2042 (package 1788 (package
2043 (inherit base) 1789 (inherit base)
2044 (name "zig") 1790 (name "zig")
@@ -2144,6 +1890,71 @@ toolchain. Among other features it provides
2144 (modify-inputs native-inputs 1890 (modify-inputs native-inputs
2145 (replace "zig" `(,base "out"))))))) 1891 (replace "zig" `(,base "out")))))))
2146 1892
1893
1894;;;
1895;;; Public packages.
1896;;;
1897
1898(define zig-0.11-libc-abi-tools
1899 (origin
1900 (method git-fetch)
1901 (uri (git-reference
1902 (url "https://codeberg.org/ziglang/libc-abi-tools")
1903 (commit "13576b1ea957882be7ff2c99f4cdc27454930219")))
1904 (file-name "libc-abi-tools")
1905 (sha256
1906 (base32 "09m0ipixxw0dnal0zsgk6kvcz29y9s256b9y00s4hkhj95n630il"))
1907 (modules '((guix build utils)))
1908 (snippet
1909 #~(begin
1910 (substitute* "consolidate.zig"
1911 ((".*minor = 3[5678].*") "")
1912 (("(w\\.writeIntLittle.u16, )(@intCast.*);" _ prefix suffix)
1913 (string-append prefix "@as(u16, " suffix ");")))
1914 (with-directory-excursion "glibc"
1915 (for-each delete-file-recursively
1916 '("2.35" "2.36" "2.37" "2.38")))))))
1917
1918(define zig-0.12-libc-abi-tools
1919 (origin
1920 (method git-fetch)
1921 (uri (git-reference
1922 (url "https://codeberg.org/ziglang/libc-abi-tools")
1923 (commit "fc5d0a7046b76795e4219f8f168e118ec29fbc53")))
1924 (file-name "libc-abi-tools")
1925 (sha256
1926 (base32 "1q9plbqkkk3jzrvsgcjmj5jjdncz4ym9p0snglz4kkjwwm65gqs1"))))
1927
1928(define zig-0.13-libc-abi-tools
1929 (origin
1930 (method git-fetch)
1931 (uri (git-reference
1932 (url "https://codeberg.org/ziglang/libc-abi-tools")
1933 (commit "fc5d0a7046b76795e4219f8f168e118ec29fbc53")))
1934 (file-name "libc-abi-tools")
1935 (sha256
1936 (base32 "1q9plbqkkk3jzrvsgcjmj5jjdncz4ym9p0snglz4kkjwwm65gqs1"))))
1937
1938(define zig-0.14-libc-abi-tools
1939 (origin
1940 (method git-fetch)
1941 (uri (git-reference
1942 (url "https://codeberg.org/ziglang/libc-abi-tools")
1943 (commit "ed9d3bb356413e73b836955e75f399dfb3ec255e")))
1944 (file-name "libc-abi-tools")
1945 (sha256
1946 (base32 "0ckhwlszm0vkiqsyp2rzp1zcfljh1ng24c7pdvpyfj51x4s612z1"))))
1947
1948(define zig-0.15-libc-abi-tools
1949 (origin
1950 (method git-fetch)
1951 (uri (git-reference
1952 (url "https://codeberg.org/ziglang/libc-abi-tools")
1953 (commit "ec46122c7b8c7854f08e67e108083907d09996f5")))
1954 (file-name "libc-abi-tools")
1955 (sha256
1956 (base32 "0s46f1wbqg53wxlrljb9afw4s8j5cl5vz5xhajy6fagy05xns2bc"))))
1957
2147(define zig-0.16-libc-abi-tools 1958(define zig-0.16-libc-abi-tools
2148 (origin 1959 (origin
2149 (method git-fetch) 1960 (method git-fetch)
@@ -2154,6 +1965,223 @@ toolchain. Among other features it provides
2154 (sha256 1965 (sha256
2155 (base32 "0a4f1bhgi6rd33gp3zlarcibagd603km4g97pdkphdkbs11066x1")))) 1966 (base32 "0a4f1bhgi6rd33gp3zlarcibagd603km4g97pdkphdkbs11066x1"))))
2156 1967
1968(define-public zig-0.11
1969 (package
1970 (inherit zig-0.10)
1971 (name "zig")
1972 (version "0.11.0")
1973 (source
1974 (origin
1975 (inherit (zig-source
1976 version version
1977 "0qh7c27cd4wcdjj0mbpkarvwypfk1js8hkyxs0z149qv75zkbrca"))
1978 (patches
1979 (search-patches
1980 "zig-0.11-build-respect-PKG_CONFIG-env-var.patch"
1981 "zig-0.9-use-baseline-cpu-by-default.patch"
1982 "zig-0.11-use-system-paths.patch"
1983 "zig-0.11-fix-runpath.patch"))))
1984 (arguments
1985 (substitute-keyword-arguments arguments
1986 ((#:phases phases '%standard-phases)
1987 #~(modify-phases #$phases
1988 (add-after 'unpack 'set-host-triple
1989 (lambda _
1990 (substitute* "CMakeLists.txt"
1991 (("\\$\\{ZIG_HOST_TARGET_TRIPLE\\}")
1992 (zig-target
1993 #$(platform-target
1994 (lookup-platform-by-system (%current-system))))))))
1995 (add-after 'unpack 'prepare-source
1996 (lambda* (#:key native-inputs inputs #:allow-other-keys)
1997 (install-file (search-input-file
1998 (or native-inputs inputs) "bin/zig1.wasm")
1999 "stage1")
2000 (make-file-writable "stage1/zig1.wasm")))
2001 (add-after 'install 'build-zig1
2002 (lambda _
2003 (invoke (string-append #$output "/bin/zig")
2004 "build" "update-zig1" "--verbose")))
2005 (add-after 'build-zig1 'install-zig1
2006 (lambda _
2007 (install-file "stage1/zig1.wasm"
2008 (string-append #$output:zig1 "/bin"))))
2009 ;; TODO: Disable tests for macOS target and run full test.
2010 ;; Issue with glibc in CPLUS_INCLUDE_PATH:
2011 ;; <https://github.com/ziglang/zig/issues/18063>.
2012 (replace 'check
2013 (lambda* (#:key tests? #:allow-other-keys)
2014 (when tests?
2015 (invoke (string-append #$output "/bin/zig")
2016 "test" "-I" "test" "test/behavior.zig"))))))))
2017 (inputs
2018 (modify-inputs inputs
2019 (replace "clang" clang-16)
2020 (replace "lld" lld-16)))
2021 (native-inputs
2022 (modify-inputs native-inputs
2023 (prepend binaryen `(,zig-0.10.0-3985 "zig1"))
2024 (replace "libc-abi-tools" zig-0.11-libc-abi-tools)
2025 (replace "llvm" llvm-16)))
2026 (outputs '("out" "zig1"))
2027 (properties `((max-silent-time . 9600)
2028 ,@(clang-compiler-cpu-architectures "16")))))
2029
2030(define-public zig-0.12
2031 (package
2032 (inherit zig-0.11)
2033 (name "zig")
2034 (version "0.12.1")
2035 (source
2036 (origin
2037 (inherit (zig-source
2038 version version
2039 "0ssgfrsk116p16rwjwq1z2pvvcdij6s30s19bhzjms7maz4s77hb"))
2040 (patches
2041 (search-patches
2042 "zig-0.12-build-respect-PKG_CONFIG-env-var.patch"
2043 "zig-0.12-use-baseline-cpu-by-default.patch"
2044 "zig-0.12-use-system-paths.patch"
2045 "zig-0.12-fix-runpath.patch"))))
2046 (arguments
2047 (substitute-keyword-arguments arguments
2048 ((#:phases phases '%standard-phases)
2049 #~(modify-phases #$phases
2050 (replace 'patch-more-shebangs
2051 (lambda* (#:key inputs #:allow-other-keys)
2052 ;; Zig uses information about an ELF file to determine the
2053 ;; version of glibc and other data for native builds.
2054 (substitute* "lib/std/zig/system.zig"
2055 (("/usr/bin/env")
2056 (search-input-file inputs "bin/clang++")))))))))
2057 (inputs
2058 (modify-inputs inputs
2059 (replace "clang" clang-17)
2060 (replace "lld" lld-17)))
2061 (native-inputs
2062 (modify-inputs native-inputs
2063 (replace "libc-abi-tools" zig-0.12-libc-abi-tools)
2064 (replace "llvm" llvm-17)
2065 (replace "zig" `(,zig-0.11.0-3604 "zig1"))))
2066 (properties `((max-silent-time . 9600)
2067 ,@(clang-compiler-cpu-architectures "17")))))
2068
2069(define-public zig-0.13
2070 (package
2071 (inherit zig-0.12)
2072 (name "zig")
2073 (version "0.13.0")
2074 (source
2075 (origin
2076 (inherit (zig-source
2077 version version
2078 "0ly8042lbsa8019g0d1jg4l06rxpq2530n9mijq66n4lmx7a5976"))
2079 (patches
2080 (search-patches
2081 "zig-0.13-build-respect-PKG_CONFIG-env-var.patch"
2082 "zig-0.12-use-baseline-cpu-by-default.patch"
2083 "zig-0.12-use-system-paths.patch"
2084 "zig-0.13-fix-runpath.patch"))))
2085 (inputs
2086 (modify-inputs inputs
2087 (replace "clang" clang-18)
2088 (replace "lld" lld-18)))
2089 (native-inputs
2090 (modify-inputs native-inputs
2091 (replace "libc-abi-tools" zig-0.13-libc-abi-tools)
2092 (replace "llvm" llvm-18)
2093 (replace "zig" `(,zig-0.12.0-109 "zig1"))))
2094 (properties `((max-silent-time . 9600)
2095 ,@(clang-compiler-cpu-architectures "18")))))
2096
2097(define-public zig-0.14
2098 (package
2099 (inherit zig-0.12)
2100 (name "zig")
2101 (version "0.14.1")
2102 (source
2103 (origin
2104 (inherit (zig-source
2105 version version
2106 "0cnc3bzl965ckm70ayd6a29zn5h9cy3qzyfncp4n7mzkiwhlj58f"))
2107 (patches
2108 (search-patches
2109 "zig-0.14-use-baseline-cpu-by-default.patch"
2110 "zig-0.14-use-system-paths.patch"
2111 "zig-0.14-fix-runpath.patch"))
2112 (snippet
2113 #~(begin
2114 #$(origin-snippet (package-source zig-0.13))
2115 ;; For ARM builds.
2116 (substitute* "build.zig"
2117 (("\\.*.max_rss.*") ""))))))
2118 (inputs
2119 (modify-inputs inputs
2120 (replace "clang" clang-19)
2121 (replace "lld" lld-19)))
2122 (native-inputs
2123 (modify-inputs native-inputs
2124 (replace "libc-abi-tools" zig-0.14-libc-abi-tools)
2125 (replace "llvm" llvm-19)
2126 (replace "zig" `(,zig-0.13.0-3252 "zig1"))))
2127 (properties `((max-silent-time . 9600)
2128 ,@(clang-compiler-cpu-architectures "19")))))
2129
2130(define-public zig-0.15
2131 (package
2132 (inherit zig-0.12)
2133 (name "zig")
2134 (version "0.15.2")
2135 (source
2136 (origin
2137 (inherit (zig-source
2138 version version
2139 "0kr8y1xzb7ffqg4yy7ncg4jh6kndxn5xfqf2viy5gvqdqqql8ymv"))
2140 (patches
2141 (search-patches
2142 "zig-0.14-use-baseline-cpu-by-default.patch"
2143 "zig-0.14-use-system-paths.patch"
2144 "zig-0.15-fix-runpath.patch"))))
2145 (arguments
2146 (substitute-keyword-arguments arguments
2147 ((#:phases phases '%standard-phases)
2148 #~(modify-phases #$phases
2149 (replace 'copy-libc-abi-tools
2150 (lambda* (#:key inputs native-inputs #:allow-other-keys)
2151 (mkdir-p "/tmp/libc-abi-tools")
2152 (with-directory-excursion "/tmp/libc-abi-tools"
2153 (copy-recursively
2154 (dirname (search-input-file
2155 (or native-inputs inputs) "list.zig"))
2156 ".")
2157 (for-each make-file-writable (find-files ".")))))
2158 ;; Added support for more libc implementations.
2159 (replace 'install-abilists
2160 (lambda _
2161 (with-directory-excursion "/tmp/libc-abi-tools"
2162 (for-each
2163 (lambda (libc)
2164 (with-directory-excursion libc
2165 (invoke (string-append #$output "/bin/zig")
2166 "run" "consolidate.zig")
2167 (install-file
2168 "abilists"
2169 (string-append #$output "/lib/zig/libc/" libc))))
2170 '("freebsd"
2171 "glibc"
2172 "netbsd")))))))))
2173 (inputs
2174 (modify-inputs inputs
2175 (replace "clang" clang-20)
2176 (replace "lld" lld-20)))
2177 (native-inputs
2178 (modify-inputs native-inputs
2179 (replace "libc-abi-tools" zig-0.15-libc-abi-tools)
2180 (replace "llvm" llvm-20)
2181 (replace "zig" `(,zig-0.14.0-1197 "zig1"))))
2182 (properties `((max-silent-time . 9600)
2183 ,@(clang-compiler-cpu-architectures "20")))))
2184
2157(define-public zig-0.16 2185(define-public zig-0.16
2158 (package 2186 (package
2159 (inherit zig-0.15) 2187 (inherit zig-0.15)