Compare commits

..

No commits in common. "rawhide" and "f37" have entirely different histories.

8 changed files with 180 additions and 661 deletions

4
.gitignore vendored
View file

@ -1,3 +1 @@
/*-build *.tar.gz
/zig-*.tar.xz
/zig-*.tar.xz.minisig

View file

@ -0,0 +1,28 @@
From d505ddbb7f46ba974b5d8458fd7134901930f033 Mon Sep 17 00:00:00 2001
From: Jan200101 <sentrycraft123@gmail.com>
Date: Thu, 17 Feb 2022 18:00:58 +0100
Subject: [PATCH] ignore target lib dirs when invoked with -feach-lib-rpath
Signed-off-by: Jan200101 <sentrycraft123@gmail.com>
---
src/main.zig | 4 ----
1 file changed, 4 deletions(-)
diff --git a/src/main.zig b/src/main.zig
index 7f50a7de6..a6bcf69a8 100644
--- a/src/main.zig
+++ b/src/main.zig
@@ -2077,10 +2077,6 @@ fn buildOutputType(
clang_argv.appendAssumeCapacity(framework_dir);
framework_dirs.appendAssumeCapacity(framework_dir);
}
-
- for (paths.lib_dirs.items) |lib_dir| {
- try lib_dirs.append(lib_dir);
- }
for (paths.rpaths.items) |rpath| {
try rpath_list.append(rpath);
}
--
2.35.1

View file

@ -1,33 +0,0 @@
From a865b3569ace118cc1c1cd8d5d130ec316b0307d Mon Sep 17 00:00:00 2001
From: Jan200101 <sentrycraft123@gmail.com>
Date: Tue, 14 Apr 2026 19:04:40 +0200
Subject: [PATCH 1/2] remove native lib directories from rpath
Signed-off-by: Jan200101 <sentrycraft123@gmail.com>
---
src/main.zig | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/src/main.zig b/src/main.zig
index 0395a21a5f..86b6d9f86b 100644
--- a/src/main.zig
+++ b/src/main.zig
@@ -4102,6 +4102,15 @@ fn createModule(
try create_module.lib_directories.ensureUnusedCapacity(arena, paths.lib_dirs.items.len);
for (paths.lib_dirs.items) |path| addLibDirectoryWarn2(io, &create_module.lib_directories, path, true);
+
+ for (paths.lib_dirs.items) |native_lib_dir| {
+ for (0.., create_module.rpath_list.items) |i, rpath_dir| {
+ if (std.mem.eql(u8, native_lib_dir, rpath_dir)) {
+ _ = create_module.rpath_list.orderedRemove(i);
+ break;
+ }
+ }
+ }
}
if (create_module.libc_paths_file) |paths_file| {
--
2.53.0

View file

@ -1,254 +0,0 @@
From 803935baf6a4730426afbb746adfd00c0ffc0f39 Mon Sep 17 00:00:00 2001
From: Jan200101 <sentrycraft123@gmail.com>
Date: Tue, 14 Apr 2026 19:20:26 +0200
Subject: [PATCH 2/2] Remove unsupported LLVM targets for RHEL
LLVM for RHEL is only build with a subset of targets
this blocks zig at the configuration stage.
This commit simply swaps them out with the one from
https://src.fedoraproject.org/rpms/llvm/blob/rawhide/f/llvm.spec
Signed-off-by: Jan200101 <sentrycraft123@gmail.com>
---
cmake/Findllvm.cmake | 2 +-
src/codegen/llvm.zig | 97 ++++++++++----------------------------------
src/target.zig | 43 +++++++++++---------
3 files changed, 45 insertions(+), 97 deletions(-)
diff --git a/cmake/Findllvm.cmake b/cmake/Findllvm.cmake
index 0c08d4f0ac..ed4da12044 100644
--- a/cmake/Findllvm.cmake
+++ b/cmake/Findllvm.cmake
@@ -83,7 +83,7 @@ if(ZIG_USE_LLVM_CONFIG)
OUTPUT_STRIP_TRAILING_WHITESPACE)
string(REPLACE " " ";" LLVM_TARGETS_BUILT "${LLVM_TARGETS_BUILT_SPACES}")
- set(ZIG_LLVM_REQUIRED_TARGETS "AArch64;AMDGPU;ARM;AVR;BPF;Hexagon;Lanai;LoongArch;Mips;MSP430;NVPTX;PowerPC;RISCV;SPIRV;Sparc;SystemZ;VE;WebAssembly;X86;XCore")
+ set(ZIG_LLVM_REQUIRED_TARGETS "X86;AMDGPU;PowerPC;NVPTX;SystemZ;AArch64;BPF;WebAssembly;RISCV")
set(ZIG_LLVM_REQUIRED_TARGETS_ENABLED TRUE)
foreach(TARGET_NAME IN LISTS ZIG_LLVM_REQUIRED_TARGETS)
diff --git a/src/codegen/llvm.zig b/src/codegen/llvm.zig
index 1ba3b272da..1ac1f6adc8 100644
--- a/src/codegen/llvm.zig
+++ b/src/codegen/llvm.zig
@@ -4736,20 +4736,6 @@ pub fn initializeLLVMTarget(arch: std.Target.Cpu.Arch) void {
bindings.LLVMInitializeAMDGPUAsmPrinter();
bindings.LLVMInitializeAMDGPUAsmParser();
},
- .thumb, .thumbeb, .arm, .armeb => {
- bindings.LLVMInitializeARMTarget();
- bindings.LLVMInitializeARMTargetInfo();
- bindings.LLVMInitializeARMTargetMC();
- bindings.LLVMInitializeARMAsmPrinter();
- bindings.LLVMInitializeARMAsmParser();
- },
- .avr => {
- bindings.LLVMInitializeAVRTarget();
- bindings.LLVMInitializeAVRTargetInfo();
- bindings.LLVMInitializeAVRTargetMC();
- bindings.LLVMInitializeAVRAsmPrinter();
- bindings.LLVMInitializeAVRAsmParser();
- },
.bpfel, .bpfeb => {
bindings.LLVMInitializeBPFTarget();
bindings.LLVMInitializeBPFTargetInfo();
@@ -4757,34 +4743,6 @@ pub fn initializeLLVMTarget(arch: std.Target.Cpu.Arch) void {
bindings.LLVMInitializeBPFAsmPrinter();
bindings.LLVMInitializeBPFAsmParser();
},
- .hexagon => {
- bindings.LLVMInitializeHexagonTarget();
- bindings.LLVMInitializeHexagonTargetInfo();
- bindings.LLVMInitializeHexagonTargetMC();
- bindings.LLVMInitializeHexagonAsmPrinter();
- bindings.LLVMInitializeHexagonAsmParser();
- },
- .lanai => {
- bindings.LLVMInitializeLanaiTarget();
- bindings.LLVMInitializeLanaiTargetInfo();
- bindings.LLVMInitializeLanaiTargetMC();
- bindings.LLVMInitializeLanaiAsmPrinter();
- bindings.LLVMInitializeLanaiAsmParser();
- },
- .mips, .mipsel, .mips64, .mips64el => {
- bindings.LLVMInitializeMipsTarget();
- bindings.LLVMInitializeMipsTargetInfo();
- bindings.LLVMInitializeMipsTargetMC();
- bindings.LLVMInitializeMipsAsmPrinter();
- bindings.LLVMInitializeMipsAsmParser();
- },
- .msp430 => {
- bindings.LLVMInitializeMSP430Target();
- bindings.LLVMInitializeMSP430TargetInfo();
- bindings.LLVMInitializeMSP430TargetMC();
- bindings.LLVMInitializeMSP430AsmPrinter();
- bindings.LLVMInitializeMSP430AsmParser();
- },
.nvptx, .nvptx64 => {
bindings.LLVMInitializeNVPTXTarget();
bindings.LLVMInitializeNVPTXTargetInfo();
@@ -4806,13 +4764,6 @@ pub fn initializeLLVMTarget(arch: std.Target.Cpu.Arch) void {
bindings.LLVMInitializeRISCVAsmPrinter();
bindings.LLVMInitializeRISCVAsmParser();
},
- .sparc, .sparc64 => {
- bindings.LLVMInitializeSparcTarget();
- bindings.LLVMInitializeSparcTargetInfo();
- bindings.LLVMInitializeSparcTargetMC();
- bindings.LLVMInitializeSparcAsmPrinter();
- bindings.LLVMInitializeSparcAsmParser();
- },
.s390x => {
bindings.LLVMInitializeSystemZTarget();
bindings.LLVMInitializeSystemZTargetInfo();
@@ -4843,13 +4794,6 @@ pub fn initializeLLVMTarget(arch: std.Target.Cpu.Arch) void {
bindings.LLVMInitializeXtensaAsmParser();
}
},
- .xcore => {
- bindings.LLVMInitializeXCoreTarget();
- bindings.LLVMInitializeXCoreTargetInfo();
- bindings.LLVMInitializeXCoreTargetMC();
- bindings.LLVMInitializeXCoreAsmPrinter();
- // There is no LLVMInitializeXCoreAsmParser function.
- },
.m68k => {
if (build_options.llvm_has_m68k) {
bindings.LLVMInitializeM68kTarget();
@@ -4868,13 +4812,6 @@ pub fn initializeLLVMTarget(arch: std.Target.Cpu.Arch) void {
bindings.LLVMInitializeCSKYAsmParser();
}
},
- .ve => {
- bindings.LLVMInitializeVETarget();
- bindings.LLVMInitializeVETargetInfo();
- bindings.LLVMInitializeVETargetMC();
- bindings.LLVMInitializeVEAsmPrinter();
- bindings.LLVMInitializeVEAsmParser();
- },
.arc => {
if (build_options.llvm_has_arc) {
bindings.LLVMInitializeARCTarget();
@@ -4884,21 +4821,29 @@ pub fn initializeLLVMTarget(arch: std.Target.Cpu.Arch) void {
// There is no LLVMInitializeARCAsmParser function.
}
},
- .loongarch32, .loongarch64 => {
- bindings.LLVMInitializeLoongArchTarget();
- bindings.LLVMInitializeLoongArchTargetInfo();
- bindings.LLVMInitializeLoongArchTargetMC();
- bindings.LLVMInitializeLoongArchAsmPrinter();
- bindings.LLVMInitializeLoongArchAsmParser();
- },
+
+ // Disabled LLVM targets
+ .thumb,
+ .thumbeb,
+ .arm,
+ .armeb,
+ .avr,
+ .hexagon,
+ .lanai,
+ .mips,
+ .mipsel,
+ .mips64,
+ .mips64el,
+ .msp430,
+ .sparc,
+ .sparc64,
+ .xcore,
+ .ve,
+ .loongarch32,
+ .loongarch64,
.spirv32,
.spirv64,
- => {
- bindings.LLVMInitializeSPIRVTarget();
- bindings.LLVMInitializeSPIRVTargetInfo();
- bindings.LLVMInitializeSPIRVTargetMC();
- bindings.LLVMInitializeSPIRVAsmPrinter();
- },
+ => unreachable,
// LLVM does does not have a backend for these.
.alpha,
diff --git a/src/target.zig b/src/target.zig
index 3d04c06f5e..9e19836815 100644
--- a/src/target.zig
+++ b/src/target.zig
@@ -185,23 +185,12 @@ pub fn hasLlvmSupport(target: *const std.Target, ofmt: std.Target.ObjectFormat)
}
return switch (target.cpu.arch) {
- .arm,
- .armeb,
.aarch64,
.aarch64_be,
.arc,
- .avr,
.bpfel,
.bpfeb,
- .hexagon,
- .loongarch32,
- .loongarch64,
.m68k,
- .mips,
- .mipsel,
- .mips64,
- .mips64el,
- .msp430,
.powerpc,
.powerpcle,
.powerpc64,
@@ -211,24 +200,38 @@ pub fn hasLlvmSupport(target: *const std.Target, ofmt: std.Target.ObjectFormat)
.riscv32be,
.riscv64,
.riscv64be,
- .sparc,
- .sparc64,
- .spirv32,
- .spirv64,
.s390x,
- .thumb,
- .thumbeb,
.x86,
.x86_64,
- .xcore,
.nvptx,
.nvptx64,
- .lanai,
.wasm32,
.wasm64,
- .ve,
=> true,
+ // Disabled LLVM targets
+ .thumb,
+ .thumbeb,
+ .arm,
+ .armeb,
+ .avr,
+ .hexagon,
+ .lanai,
+ .mips,
+ .mipsel,
+ .mips64,
+ .mips64el,
+ .msp430,
+ .sparc,
+ .sparc64,
+ .xcore,
+ .ve,
+ .loongarch32,
+ .loongarch64,
+ .spirv32,
+ .spirv64,
+ => false,
+
// LLVM backend exists but can produce neither assembly nor object files.
.csky,
.xtensa,
--
2.53.0

154
changelog
View file

@ -1,154 +0,0 @@
* Fri Jul 17 2026 Fedora Release Engineering <releng@fedoraproject.org> - 0.16.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_45_Mass_Rebuild
* Wed Apr 15 2026 Jan200101 <sentrycraft123@gmail.com> - 0.16.0-1
- Update to 0.16.0
* Sat Jan 17 2026 Fedora Release Engineering <releng@fedoraproject.org> - 0.15.2-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild
* Sun Jan 04 2026 Jan200101 <sentrycraft123@gmail.com> - 0.15.2-2
- Rebuilt for EPEL
* Sun Oct 12 2025 Jan200101 <sentrycraft123@gmail.com> - 0.15.2-1
- Update to 0.15.2
* Fri Jul 25 2025 Fedora Release Engineering <releng@fedoraproject.org> - 0.14.1-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild
* Mon Jun 09 2025 Jan200101 <sentrycraft123@gmail.com> - 0.14.1-1
- Update to 0.14.1
* Tue May 27 2025 Jan200101 <sentrycraft123@gmail.com> - 0.14.0-4
- add patch to add library directories
* Fri May 09 2025 Jan200101 <sentrycraft123@gmail.com> - 0.14.0-3
- add gcc to runtime dependencies
* Thu Apr 24 2025 Jan200101 <sentrycraft123@gmail.com> - 0.14.0-2
- fix and re-enable documentation
* Thu Mar 06 2025 Jan200101 <sentrycraft123@gmail.com> - 0.14.0-1
- Update to 0.14.0
* Mon Jan 27 2025 Jan200101 <sentrycraft123@gmail.com> - 0.13.0-8
- specify to build against local zig stdlib directory to ensure we are building against the newest stdlib
- use release fast instead of release safe to fix aarch64 builds from running out of memory
- enable position independent executable for the zig build
* Mon Jan 27 2025 Jan200101 <sentrycraft123@gmail.com> - 0.13.0-7
- build stage 3 using zig build system
- add user provided options to the end of the build and install options
* Thu Jan 23 2025 Jan200101 <sentrycraft123@gmail.com> - 0.13.0-6
- rebuild against fixed llvm
* Sun Jan 19 2025 Fedora Release Engineering <releng@fedoraproject.org> - 0.13.0-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
* Sun Dec 29 2024 Jan200101 <sentrycraft123@gmail.com> - 0.13.0-4
- correct macro variables
- set llvm_compat for F41
- update callaway licenses to follow SPDX
* Wed Sep 04 2024 Miroslav Suchý <msuchy@redhat.com> - 0.13.0-3
- convert license to SPDX
* Sat Jul 20 2024 Fedora Release Engineering <releng@fedoraproject.org> - 0.13.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
* Tue Jun 11 2024 Jan200101 <sentrycraft123@gmail.com> - 0.13.0-1
- Update to 0.13.0
* Sat Jun 08 2024 Jan200101 <sentrycraft123@gmail.com> - 0.12.1-1
- Update to 0.12.1
* Sat May 25 2024 Jan200101 <sentrycraft123@gmail.com> - 0.12.0-1
- Update to 0.12.0
* Wed Feb 21 2024 Jan Drögehoff <sentrycraft123@gmail.com> - 0.11.0-2
- Rebuilt for bootstrapping
* Sat Jan 27 2024 Aleksei Bavshin <alebastr@fedoraproject.org> - 0.11.0-1
- Update to 0.11.0
* Sat Jan 27 2024 Aleksei Bavshin <alebastr@fedoraproject.org> - 0.9.1-6
- Fix build with `--without macro`
- Skip %%check and test dependencies when tests are disabled
- Drop %%_zig_version macro
* Sat Jan 27 2024 Benson Muite <benson_muite@emailplus.org> - 0.9.1-6
- Verify source signature
* Sat Jan 27 2024 Fedora Release Engineering <releng@fedoraproject.org> - 0.9.1-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Sat Jul 22 2023 Fedora Release Engineering <releng@fedoraproject.org> - 0.9.1-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
* Sat Jan 21 2023 Fedora Release Engineering <releng@fedoraproject.org> - 0.9.1-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
* Sat Jul 23 2022 Fedora Release Engineering <releng@fedoraproject.org> - 0.9.1-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
* Fri Feb 18 2022 Jan Drögehoff <sentrycraft123@gmail.com> - 0.9.1-1
- Update to 0.9.1
* Thu Jan 27 2022 Jan Drögehoff <sentrycraft123@gmail.com> - 0.9.0-3
- Jan: add rpath patch
- Aleksei Bavshin: rpm macros: set default build flags
* Sat Jan 22 2022 Fedora Release Engineering <releng@fedoraproject.org> - 0.9.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
* Mon Dec 20 2021 Jan Drögehoff <sentrycraft123@gmail.com> - 0.9.0-1
- Update to 0.9.0
* Wed Nov 17 2021 Jan Drögehoff <sentrycraft123@gmail.com> - 0.8.1-5
- Enable documentation on Fedora 35
* Tue Nov 09 2021 Tom Stellard <tstellar@redhat.com> - 0.8.1-4
- Rebuild for llvm-13.0.0
* Sat Oct 30 2021 Jan Drögehoff <sentrycraft123@gmail.com> - 0.8.1-3
- Update LLVM13 Patch
* Thu Oct 07 2021 Tom Stellard <tstellar@redhat.com> - 0.8.1-2
- Rebuild for llvm-13.0.0
* Sun Sep 12 2021 Jan Drögehoff <sentrycraft123@gmail.com> - 0.8.1-1
- Update to Zig 0.8.1, add LLVM 13 patch
* Wed Aug 18 2021 Jan Drögehoff <sentrycraft123@gmail.com> - 0.8.0-8
- Rebuilt for lld soname bump
* Fri Jul 23 2021 Fedora Release Engineering <releng@fedoraproject.org> - 0.8.0-7
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
* Mon Jul 19 2021 Jan Drögehoff <sentrycraft123@gmail.com> - 0.8.0-6
- add native libc detection patch
* Sun Jul 04 2021 Jan Drögehoff <sentrycraft123@gmail.com> - 0.8.0-5
- correct newline in macro that caused DESTDIR to be ignored
* Mon Jun 28 2021 Jan Drögehoff <sentrycraft123@gmail.com> - 0.8.0-4
- correct macro once again to allow for proper packaging
* Thu Jun 24 2021 Jan Drögehoff <sentrycraft123@gmail.com> - 0.8.0-3
- improve macro for using the zig binary
* Thu Jun 24 2021 Jan Drögehoff <sentrycraft123@gmail.com> - 0.8.0-2
- Update patches, correct rpm macro
* Sat Jun 05 2021 Jan Drögehoff <sentrycraft123@gmail.com> - 0.8.0-1
- Update to Zig 0.8.0
* Sun Dec 13 23:18:24 CET 2020 Jan Drögehoff <sentrycraft123@gmail.com> - 0.7.1-1
- Update to Zig 0.7.1
* Wed Nov 11 17:18:27 CET 2020 Jan Drögehoff <sentrycraft123@gmail.com> - 0.7.0-1
- Update to Zig 0.7.0
* Tue Aug 18 2020 Jan Drögehoff <sentrycraft123@gmail.com> - 0.6.0-1
- Initial zig spec

View file

@ -1,72 +1,42 @@
%zig_arches x86_64 aarch64 riscv64 %{mips64} %zig_arches x86_64 aarch64 riscv64 %{mips64}
%__zig %{_bindir}/zig %_zig_version @@ZIG_VERSION@@
%zig /usr/bin/zig
%_zig_cache_dir %{_vpath_builddir}/zig-cache
%_zig_package_dir %{_zig_cache_dir}/p
# expected features for each arch when targeting baseline # expected features for each arch when targeting baseline
# found in https://github.com/ziglang/zig/tree/master/lib/std/Target # found in https://github.com/ziglang/zig/tree/master/lib/std/target
# #
# aarch64: # aarch64:
# enable_select_opt, ete, fuse_adrp_add, fuse_aes, neon, use_postra_scheduler, # ete, fuse_aes, neon, perfmon, use_postra_scheduler,
# #
# x86_64: # x86_64:
# cmov, cx8, fxsr, idivq_to_divl, macrofusion, mmx, nopl, slow_3ops_lea, slow_incdec, sse2, vzeroupper, x87 # cx8 idivq_to_divl macrofusion slow_3ops_lea slow_incdec vzeroupper x87
# #
# riscv64: # riscv64:
# a, c, d, i, m # a, c, d, m
# #
# mips64: # mips64:
# mips64r2 # mips32
#
%_zig_cpu baseline %_zig_cpu baseline
%_zig_target native %_zig_target native
%_zig_release_mode safe
# seperated build options # seperated build options
%_zig_general_options --verbose --release=%{_zig_release_mode} --build-id=sha1 --summary all %_zig_general_options --verbose
%_zig_project_options -Dtarget=%{_zig_target} -Dcpu=%{_zig_cpu} %_zig_project_options -Dtarget=%{_zig_target} -Dcpu=%{_zig_cpu} -Drelease-safe
# 0.16.0 introduced packaging changes which install packages into this relative directory %_zig_advanced_options --cache-dir zig-cache
# Will be ovewritable in 0.17.0
# https://codeberg.org/ziglang/zig/pulls/31950
%_zig_system_integration --system "zig-pkg"
%_zig_advanced_options -fallow-so-scripts --cache-dir "%{_zig_cache_dir}" --global-cache-dir "%{_zig_cache_dir}"
%_zig_build_options %{?_zig_general_options} %{?_zig_project_options} %{?_zig_system_integration} %{?_zig_advanced_options} %{?zig_build_options} %_zig_build_options %{?_zig_general_options} %{?_zig_project_options} %{?_zig_advanced_options}
%_zig_install_options --prefix "%{_prefix}" --prefix-lib-dir "%{_libdir}" --prefix-exe-dir "%{_bindir}" --prefix-include-dir "%{_includedir}" %{?zig_install_options} %_zig_install_options --prefix "%{_prefix}" --prefix-lib-dir "%{_libdir}" --prefix-exe-dir "%{_bindir}" --prefix-include-dir "%{_includedir}"
%_zig_fetch_options --global-cache-dir %{_zig_cache_dir} %{?zig_fetch_options}
%_zig_test_options %{?zig_test_options}
%zig_build %zig \\\
build \\\
%{?_zig_build_options}
%zig_prep %{shrink: \ %zig_install \
mkdir -p \ DESTDIR="%{buildroot}" %zig_build \\\
%{_zig_cache_dir} \ install \\\
%{_zig_package_dir} \ %{?_zig_install_options}
"zig-pkg" \
}
%zig_build %{shrink: \ %zig_test \
%__zig \ %zig_build \\\
build \ test
%{?_zig_build_options} \
}
%zig_install %{shrink: \
DESTDIR="%{buildroot}" \
%zig_build \
install \
%{?_zig_install_options} \
}
%zig_fetch %{shrink: \
%__zig \
fetch \
%{?_zig_fetch_options} \
}
%zig_test %{shrink: \
%zig_build \
test \
%{?%_zig_test_options} \
}

View file

@ -1,2 +1 @@
SHA512 (zig-0.16.0.tar.xz) = 1404a939c6f233d5f328a4833543d7a2b2d9f0f5081babe6e3ad43daed25bbb0844b28c01c900f64b5bb63ac62b5586457c05380b10494dfefb56f49b58d4a0a SHA512 (zig-0.9.1.tar.gz) = a9dc5fea25dde511122056832449658b00dbcf6d6bbfe658b375968a7bdb06c690abbdfe00c1afcfa481442392b051dcef5a5a5e81d4ceb23fa98a866b900f37
SHA512 (zig-0.16.0.tar.xz.minisig) = 44a2d57061cbe8bd4e9ad587c247883e2e9abefa148ab375617665fe51500a106f488ceaaeaf038c0ff5ce1a70f4eb3b519a44f3211769ea1ebae5ad49b2f1b9

291
zig.spec
View file

@ -1,119 +1,54 @@
# architecture and toolchain # https://ziglang.org/download/%{version}/release-notes.html#Support-Table
# 32 bit builds currently run out of memory https://github.com/ziglang/zig/issues/6485
%if 0%{?rhel}
# Zig depends on a C compiler (gcc) during bootstrapping.
# Older versions of gcc fail to compile the transpiled source, so limit to x86_64.
%global zig_arches x86_64
%else
# Supported architectures: https://ziglang.org/download/VERSION/release-notes.html#Support-Table
%global zig_arches x86_64 aarch64 riscv64 %{mips64} %global zig_arches x86_64 aarch64 riscv64 %{mips64}
# note here at which Fedora release we need to deal with LLVM and glibc differences
%global fedora_llvm 36
# TODO check if this is still relevant
%global fedora_glibc 38
%global llvm_version 13.0.0
%if %{fedora} >= %{fedora_llvm}
%define llvm_compat 13
%endif %endif
# GCC < 16.0 miscompiles on RISC-V; use Clang instead on older Fedora versions %if %{fedora} >= %{fedora_glibc}
%ifarch riscv64 # documentation and tests do not build due to an unsupported glibc version
%if 0%{?fedora} < 44 %bcond_with test
%bcond toolchain_clang 1 %bcond_with docs
%endif %else
%bcond_without test
%bcond_without docs
%endif %endif
%if %{with toolchain_clang} %bcond_without macro
%global toolchain clang
%endif
# minisign public key for source verification (from https://ziglang.org/download/)
%global public_key RWSGOq2NVecA2UPNdBUZykf1CCb147pkmdtYxgb3Ti+JO/wCYvhbAb/U
# dependency versions and cache
# Compatible LLVM/Clang version definitions
%if 0%{?fedora} >= 44 || 0%{?rhel} >= 11
%global llvm_compat 21
%endif
%global llvm_version 21.1.8
%global zig_cache_dir %{_vpath_builddir}/zig-cache
# build conditionals
%bcond bootstrap 0
%bcond docs %{without bootstrap}
%bcond macro %{without bootstrap}
%bcond test 1
# build and install options
%global zig_build_options %{shrink: \
--verbose \
--release=fast \
--summary all \
\
-Dtarget=native \
-Dcpu=baseline \
--zig-lib-dir lib \
--build-id=sha1 \
\
--cache-dir "%{zig_cache_dir}" \
--global-cache-dir "%{zig_cache_dir}" \
\
-Dversion-string="%{?dev_version}%{!?dev_version:%{version}}" \
-Dstatic-llvm=false \
-Denable-llvm=true \
-Dno-langref=true \
-Dstd-docs=false \
-Dpie \
-Dconfig_h="%{__cmake_builddir}/config.h" \
}
%global zig_install_options %{shrink: \
%zig_build_options \
--prefix "%{_prefix}" \
}
Name: zig Name: zig
Version: 0.16.0 Version: 0.9.1
Release: %autorelease Release: 2%{?dist}
Summary: Programming language for maintaining robust, optimal, and reusable software Summary: Programming language for maintaining robust, optimal, and reusable software
# The minisign file references a specific archive name so we store for ease of use License: MIT and NCSA and LGPLv2+ and LGPLv2+ with exceptions and GPLv2+ and GPLv2+ with exceptions and BSD and Inner-Net and ISC and Public Domain and GFDL and ZPLv2.1
%global archive_name %{name}-%{version}.tar.xz
License: MIT AND NCSA AND LGPL-2.1-or-later AND LGPL-2.1-or-later WITH GCC-exception-2.0 AND GPL-2.0-or-later AND GPL-2.0-or-later WITH GCC-exception-2.0 AND BSD-3-Clause AND Inner-Net-2.0 AND ISC AND LicenseRef-Fedora-Public-Domain AND GFDL-1.1-or-later AND ZPL-2.1
URL: https://ziglang.org URL: https://ziglang.org
Source0: %{url}/download/%{version}/%{archive_name} Source0: https://github.com/ziglang/zig/archive/%{version}.tar.gz#/%{name}-%{version}.tar.gz
Source1: %{url}/download/%{version}/%{archive_name}.minisig Source1: macros.%{name}
Source2: macros.%{name} # prevent native directories from polluting the rpath
# https://github.com/ziglang/zig/pull/10621
Patch0: 0001-ignore-target-lib-dirs-when-invoked-with-feach-lib-r.patch
# Remove native lib directories from rpath
# this is unlikely to be upstreamed in its current state because upstream
# wants to work around the shortcomings of NixOS
Patch0: 0001-remove-native-lib-directories-from-rpath.patch
# LLVM on RHEL/EPEL only provides fewer targets so we patch the required targets down
# Targets come from https://src.fedoraproject.org/rpms/llvm/blob/rawhide/f/llvm.spec
Patch1: 0002-Remove-unsupported-LLVM-targets-for-EPEL.patch
%if %{without toolchain_clang}
BuildRequires: gcc BuildRequires: gcc
BuildRequires: gcc-c++ BuildRequires: gcc-c++
%else
BuildRequires: clang
%endif
BuildRequires: cmake BuildRequires: cmake
BuildRequires: llvm%{?llvm_compat}-devel BuildRequires: llvm%{?llvm_compat}-devel
BuildRequires: clang%{?llvm_compat}-devel BuildRequires: clang%{?llvm_compat}-devel
BuildRequires: lld%{?llvm_compat}-devel BuildRequires: lld%{?llvm_compat}-devel
BuildRequires: zlib-devel
BuildRequires: libxml2-devel
# for man page generation # for man page generation
BuildRequires: help2man BuildRequires: help2man
# for signature verification
BuildRequires: minisign
%if %{without bootstrap} %if %{with macro} || 0%{?llvm_compat}
BuildRequires: (zig >= 0.16 with zig < 0.17) BuildRequires: sed
%endif %endif
%if %{with test} %if %{with test}
@ -126,22 +61,22 @@ Requires: %{name}-libs = %{version}
# These packages are bundled as source # These packages are bundled as source
# Apache-2.0 WITH LLVM-exception OR NCSA OR MIT # NCSA
Provides: bundled(compiler-rt) = %{llvm_version} Provides: bundled(compiler-rt) = %{llvm_version}
# LGPL-2.1-or-later AND SunPro AND LGPL-2.1-or-later WITH GCC-exception-2.0 AND BSD-3-Clause AND GPL-2.0-or-later AND LGPL-2.1-or-later WITH GNU-compiler-exception AND GPL-2.0-only AND ISC AND LicenseRef-Fedora-Public-Domain AND HPND AND CMU-Mach AND LGPL-2.0-or-later AND Unicode-3.0 AND GFDL-1.1-or-later AND GPL-1.0-or-later AND FSFUL AND MIT AND Inner-Net-2.0 AND X11 AND GPL-2.0-or-later WITH GCC-exception-2.0 AND GFDL-1.3-only AND GFDL-1.1-only # LGPLv2+, LGPLv2+ with exceptions, GPLv2+, GPLv2+ with exceptions, BSD, Inner-Net, ISC, Public Domain and GFDL
Provides: bundled(glibc) = 2.43 Provides: bundled(glibc) = 2.34
# Apache-2.0 WITH LLVM-exception OR MIT OR NCSA # NCSA
Provides: bundled(libcxx) = %{llvm_version} Provides: bundled(libcxx) = %{llvm_version}
# Apache-2.0 WITH LLVM-exception OR MIT OR NCSA # NCSA
Provides: bundled(libcxxabi) = %{llvm_version} Provides: bundled(libcxxabi) = %{llvm_version}
# NCSA # NCSA
Provides: bundled(libunwind) = %{llvm_version} Provides: bundled(libunwind) = %{llvm_version}
# BSD, LGPG, ZPL # BSD, LGPG, ZPL
Provides: bundled(mingw) = 3839e21b08807479a31d5a9764666f82ae2f0356 Provides: bundled(mingw) = 9.0.0
# MIT # MIT
Provides: bundled(musl) = 1.2.5 Provides: bundled(musl) = 1.2.2
# Apache-2.0 WITH LLVM-exception AND Apache-2.0 AND MIT AND BSD-2-Clause # CC0, BSD, MIT, Apache2, Apache2 with exceptions
Provides: bundled(wasi-libc) = d03829489904d38c624f6de9983190f1e5e7c9c5 Provides: bundled(wasi-libc) = 82fc2c4f449e56319112f6f2583195c7f4e714b1
ExclusiveArch: %{zig_arches} ExclusiveArch: %{zig_arches}
@ -149,7 +84,7 @@ ExclusiveArch: %{zig_arches}
Zig is an open-source programming language designed for robustness, optimality, Zig is an open-source programming language designed for robustness, optimality,
and clarity. This package provides the zig compiler and the associated runtime. and clarity. This package provides the zig compiler and the associated runtime.
# The Zig stdlib only contains uncompiled code # the standard library contains only plain text
%package libs %package libs
Summary: %{name} Standard Library Summary: %{name} Standard Library
BuildArch: noarch BuildArch: noarch
@ -178,88 +113,55 @@ This package contains common RPM macros for %{name}.
%endif %endif
%prep %prep
minisign -V -m %{SOURCE0} -x %{SOURCE1} -P %{public_key} -Q | grep -F "file:%{archive_name}" %autosetup -p1
%autosetup -N %if 0%{?llvm_compat}
%patch 0 -p1 sed -i "s|/usr/lib/llvm-13|%{_libdir}/llvm%{llvm_compat}|g" cmake/Find{clang,lld,llvm}.cmake
%if 0%{?rhel}
%patch 1 -p1
%endif
%if %{without bootstrap}
# Ensure that the pre-build stage1 binary is not used
rm -f stage1/zig1.wasm
%endif %endif
%build %build
# Fedora supports using ccache systemwide
# Zig generates a large C file for bootstrapping which does not
# behave well with ccache so we explicitly disable it.
export CCACHE_DISABLE=1
# zig doesn't know how to dynamically link llvm on its own so we need cmake to generate a header ahead of time
# if we provide the header we need to also build zigcpp
# C_FLAGS: wasm2c output generates a lot of noise with -Wunused.
# EXTRA_BUILD_ARGS: explicitly specify a build-id
%cmake \ %cmake \
-DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo \ -DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo \
-DCMAKE_C_FLAGS_RELWITHDEBINFO:STRING="-DNDEBUG -Wno-unused" \ -DZIG_PREFER_CLANG_CPP_DYLIB=true \
-DCMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING="-DNDEBUG -Wno-unused" \ -DZIG_VERSION:STRING="%{version}"
\ %cmake_build
-DZIG_EXTRA_BUILD_ARGS:STRING="--verbose;--build-id=sha1" \
-DZIG_SHARED_LLVM:BOOL=true \
-DZIG_PIE:BOOL=true \
\
-DZIG_TARGET_MCPU:STRING=baseline \
-DZIG_TARGET_TRIPLE:STRING=native \
\
-DZIG_VERSION:STRING="%{?dev_version}%{!?dev_version:%{version}}"
%if %{with bootstrap}
%cmake_build --target stage3
%else
%cmake_build --target zigcpp
zig build %{zig_build_options}
# Zig has no official manpage # Zig has no official manpage
# https://github.com/ziglang/zig/issues/715 # https://github.com/ziglang/zig/issues/715
help2man --no-discard-stderr --no-info "./zig-out/bin/zig" --version-option=version --output=zig.1 help2man --no-discard-stderr "%{__cmake_builddir}/zig" --version-option=version --output=%{name}.1
%endif
ln -s lib "%{__cmake_builddir}/"
%if %{with docs} %if %{with docs}
# Use the newly made stage 3 compiler to generate docs %{__cmake_builddir}/zig build docs -Dversion-string="%{version}"
./zig-out/bin/zig build docs %{zig_build_options}
%endif %endif
mkdir -p zig-cache
touch zig-cache/langref.html
%install %install
%if %{with bootstrap}
%cmake_install %cmake_install
%else
DESTDIR="%{buildroot}" zig build install %{zig_install_options}
install -D -pv -m 0644 -t %{buildroot}%{_mandir}/man1/ zig.1 mkdir -p %{buildroot}/%{_mandir}/man1
%endif install -m 0644 %{name}.1 %{buildroot}%{_mandir}/man1/
mkdir -p %{buildroot}%{_rpmconfigdir}/macros.d/
%if %{with macro} install -p -m644 %{SOURCE1} %{buildroot}%{_rpmconfigdir}/macros.d/
install -D -pv -m 0644 %{SOURCE2} %{buildroot}%{_rpmmacrodir}/macros.%{name} sed -i -e "s|@@ZIG_VERSION@@|%{version}|" %{buildroot}%{_rpmconfigdir}/macros.d/macros.%{name}
%endif
%check
%if %{with test} %if %{with test}
%check # Issues with tests stop them from completing successfully
# Run reduced set of tests, based on the Zig CI # https://github.com/ziglang/zig/issues/9738
"%{buildroot}%{_bindir}/zig" test test/behavior.zig -Itest #%%{__cmake_builddir}/zig build test
%endif %endif
%files %files
%license LICENSE %license LICENSE
%{_bindir}/zig %{_bindir}/zig
%if %{without bootstrap}
%{_mandir}/man1/%{name}.1.* %{_mandir}/man1/%{name}.1.*
%endif
%files libs %files libs
%{_prefix}/lib/%{name} %{_prefix}/lib/%{name}
@ -267,14 +169,77 @@ install -D -pv -m 0644 %{SOURCE2} %{buildroot}%{_rpmmacrodir}/macros.%{name}
%if %{with docs} %if %{with docs}
%files doc %files doc
%doc README.md %doc README.md
%doc zig-out/doc/langref.html %doc zig-cache/langref.html
%doc zig-out/doc/std
%endif %endif
%if %{with macro} %if %{with macro}
%files rpm-macros %files rpm-macros
%{_rpmmacrodir}/macros.%{name} %{_rpmconfigdir}/macros.d/macros.%{name}
%endif %endif
%changelog %changelog
%autochangelog * Sat Jul 23 2022 Fedora Release Engineering <releng@fedoraproject.org> - 0.9.1-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
* Fri Feb 18 2022 Jan Drögehoff <sentrycraft123@gmail.com> - 0.9.1-1
- Update to 0.9.1
* Thu Jan 27 2022 Jan Drögehoff <sentrycraft123@gmail.com> - 0.9.0-3
- Jan: add rpath patch
- Aleksei Bavshin: rpm macros: set default build flags
* Sat Jan 22 2022 Fedora Release Engineering <releng@fedoraproject.org> - 0.9.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
* Mon Dec 20 2021 Jan Drögehoff <sentrycraft123@gmail.com> - 0.9.0-1
- Update to 0.9.0
* Wed Nov 17 2021 Jan Drögehoff <sentrycraft123@gmail.com> - 0.8.1-5
- Enable documentation on Fedora 35
* Tue Nov 09 2021 Tom Stellard <tstellar@redhat.com> - 0.8.1-4
- Rebuild for llvm-13.0.0
* Sat Oct 30 2021 Jan Drögehoff <sentrycraft123@gmail.com> - 0.8.1-3
- Update LLVM13 Patch
* Thu Oct 07 2021 Tom Stellard <tstellar@redhat.com> - 0.8.1-2
- Rebuild for llvm-13.0.0
* Sun Sep 12 2021 Jan Drögehoff <sentrycraft123@gmail.com> - 0.8.1-1
- Update to Zig 0.8.1, add LLVM 13 patch
* Wed Aug 18 2021 Jan Drögehoff <sentrycraft123@gmail.com> - 0.8.0-8
- Rebuilt for lld soname bump
* Fri Jul 23 2021 Fedora Release Engineering <releng@fedoraproject.org> - 0.8.0-7
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
* Mon Jul 19 2021 Jan Drögehoff <sentrycraft123@gmail.com> - 0.8.0-6
- add native libc detection patch
* Sun Jul 04 2021 Jan Drögehoff <sentrycraft123@gmail.com> - 0.8.0-5
- correct newline in macro that caused DESTDIR to be ignored
* Mon Jun 28 2021 Jan Drögehoff <sentrycraft123@gmail.com> - 0.8.0-4
- correct macro once again to allow for proper packaging
* Thu Jun 24 2021 Jan Drögehoff <sentrycraft123@gmail.com> - 0.8.0-3
- improve macro for using the zig binary
* Thu Jun 24 2021 Jan Drögehoff <sentrycraft123@gmail.com> - 0.8.0-2
- Update patches, correct rpm macro
* Sat Jun 05 2021 Jan Drögehoff <sentrycraft123@gmail.com> - 0.8.0-1
- Update to Zig 0.8.0
* Sun Dec 13 23:18:24 CET 2020 Jan Drögehoff <sentrycraft123@gmail.com> - 0.7.1-1
- Update to Zig 0.7.1
* Wed Nov 11 17:18:27 CET 2020 Jan Drögehoff <sentrycraft123@gmail.com> - 0.7.0-1
- Update to Zig 0.7.0
* Tue Aug 18 2020 Jan Drögehoff <sentrycraft123@gmail.com> - 0.6.0-1
- Initial zig spec