Compare commits

..

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

8 changed files with 183 additions and 661 deletions

4
.gitignore vendored
View file

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

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 %{_bindir}/zig
%_zig_cache_dir %{_vpath_builddir}/zig-cache
%_zig_package_dir %{_zig_cache_dir}/p
%_zig_version @@ZIG_VERSION@@
%zig /usr/bin/zig
# 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:
# enable_select_opt, ete, fuse_adrp_add, fuse_aes, neon, use_postra_scheduler,
# ete, fuse_aes, neon, perfmon, use_postra_scheduler,
#
# 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:
# a, c, d, i, m
# a, c, d, m
#
# mips64:
# mips64r2
#
# mips32
%_zig_cpu baseline
%_zig_target native
%_zig_release_mode safe
# seperated build options
%_zig_general_options --verbose --release=%{_zig_release_mode} --build-id=sha1 --summary all
%_zig_project_options -Dtarget=%{_zig_target} -Dcpu=%{_zig_cpu}
# 0.16.0 introduced packaging changes which install packages into this relative directory
# 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_general_options --verbose
%_zig_project_options -Dtarget=%{_zig_target} -Dcpu=%{_zig_cpu} -Drelease-safe
%_zig_advanced_options --cache-dir zig-cache
%_zig_build_options %{?_zig_general_options} %{?_zig_project_options} %{?_zig_system_integration} %{?_zig_advanced_options} %{?zig_build_options}
%_zig_install_options --prefix "%{_prefix}" --prefix-lib-dir "%{_libdir}" --prefix-exe-dir "%{_bindir}" --prefix-include-dir "%{_includedir}" %{?zig_install_options}
%_zig_fetch_options --global-cache-dir %{_zig_cache_dir} %{?zig_fetch_options}
%_zig_test_options %{?zig_test_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_build %zig \\\
build \\\
%{?_zig_build_options}
%zig_prep %{shrink: \
mkdir -p \
%{_zig_cache_dir} \
%{_zig_package_dir} \
"zig-pkg" \
}
%zig_install \
DESTDIR="%{buildroot}" %zig_build \\\
install \\\
%{?_zig_install_options}
%zig_build %{shrink: \
%__zig \
build \
%{?_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} \
}
%zig_test \
%zig_build \\\
test

View file

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

296
zig.spec
View file

@ -1,119 +1,54 @@
# architecture and toolchain
%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
# 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
%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
# GCC < 16.0 miscompiles on RISC-V; use Clang instead on older Fedora versions
%ifarch riscv64
%if 0%{?fedora} < 44
%bcond toolchain_clang 1
%endif
%if %{fedora} >= %{fedora_glibc}
# documentation and tests do not build due to an unsupported glibc version
%bcond_with test
%bcond_with docs
%else
%bcond_without test
%bcond_without docs
%endif
%if %{with toolchain_clang}
%global toolchain clang
%endif
%bcond_without macro
# 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
Version: 0.16.0
Release: %autorelease
Version: 0.9.1
Release: 3%{?dist}
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
%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
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
URL: https://ziglang.org
Source0: %{url}/download/%{version}/%{archive_name}
Source1: %{url}/download/%{version}/%{archive_name}.minisig
Source2: macros.%{name}
Source0: https://github.com/ziglang/zig/archive/%{version}.tar.gz#/%{name}-%{version}.tar.gz
Source1: 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-c++
%else
BuildRequires: clang
%endif
BuildRequires: cmake
BuildRequires: llvm%{?llvm_compat}-devel
BuildRequires: clang%{?llvm_compat}-devel
BuildRequires: lld%{?llvm_compat}-devel
BuildRequires: zlib-devel
BuildRequires: libxml2-devel
# for man page generation
BuildRequires: help2man
# for signature verification
BuildRequires: minisign
%if %{without bootstrap}
BuildRequires: (zig >= 0.16 with zig < 0.17)
%if %{with macro} || 0%{?llvm_compat}
BuildRequires: sed
%endif
%if %{with test}
@ -126,22 +61,22 @@ Requires: %{name}-libs = %{version}
# These packages are bundled as source
# Apache-2.0 WITH LLVM-exception OR NCSA OR MIT
# NCSA
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
Provides: bundled(glibc) = 2.43
# Apache-2.0 WITH LLVM-exception OR MIT OR NCSA
# LGPLv2+, LGPLv2+ with exceptions, GPLv2+, GPLv2+ with exceptions, BSD, Inner-Net, ISC, Public Domain and GFDL
Provides: bundled(glibc) = 2.34
# NCSA
Provides: bundled(libcxx) = %{llvm_version}
# Apache-2.0 WITH LLVM-exception OR MIT OR NCSA
# NCSA
Provides: bundled(libcxxabi) = %{llvm_version}
# NCSA
Provides: bundled(libunwind) = %{llvm_version}
# BSD, LGPG, ZPL
Provides: bundled(mingw) = 3839e21b08807479a31d5a9764666f82ae2f0356
Provides: bundled(mingw) = 9.0.0
# MIT
Provides: bundled(musl) = 1.2.5
# Apache-2.0 WITH LLVM-exception AND Apache-2.0 AND MIT AND BSD-2-Clause
Provides: bundled(wasi-libc) = d03829489904d38c624f6de9983190f1e5e7c9c5
Provides: bundled(musl) = 1.2.2
# CC0, BSD, MIT, Apache2, Apache2 with exceptions
Provides: bundled(wasi-libc) = 82fc2c4f449e56319112f6f2583195c7f4e714b1
ExclusiveArch: %{zig_arches}
@ -149,7 +84,7 @@ ExclusiveArch: %{zig_arches}
Zig is an open-source programming language designed for robustness, optimality,
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
Summary: %{name} Standard Library
BuildArch: noarch
@ -173,93 +108,60 @@ Summary: Common RPM macros for %{name}
Requires: rpm
BuildArch: noarch
%description rpm-macros
%description rpm-macros
This package contains common RPM macros for %{name}.
%endif
%prep
minisign -V -m %{SOURCE0} -x %{SOURCE1} -P %{public_key} -Q | grep -F "file:%{archive_name}"
%autosetup -p1
%autosetup -N
%patch 0 -p1
%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
%if 0%{?llvm_compat}
sed -i "s|/usr/lib/llvm-13|%{_libdir}/llvm%{llvm_compat}|g" cmake/Find{clang,lld,llvm}.cmake
%endif
%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 \
-DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo \
-DCMAKE_C_FLAGS_RELWITHDEBINFO:STRING="-DNDEBUG -Wno-unused" \
-DCMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING="-DNDEBUG -Wno-unused" \
\
-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}
-DZIG_PREFER_CLANG_CPP_DYLIB=true \
-DZIG_VERSION:STRING="%{version}"
%cmake_build
# Zig has no official manpage
# https://github.com/ziglang/zig/issues/715
help2man --no-discard-stderr --no-info "./zig-out/bin/zig" --version-option=version --output=zig.1
%endif
help2man --no-discard-stderr "%{__cmake_builddir}/zig" --version-option=version --output=%{name}.1
ln -s lib "%{__cmake_builddir}/"
%if %{with docs}
# Use the newly made stage 3 compiler to generate docs
./zig-out/bin/zig build docs %{zig_build_options}
%{__cmake_builddir}/zig build docs -Dversion-string="%{version}"
%endif
mkdir -p zig-cache
touch zig-cache/langref.html
%install
%if %{with bootstrap}
%cmake_install
%else
DESTDIR="%{buildroot}" zig build install %{zig_install_options}
install -D -pv -m 0644 -t %{buildroot}%{_mandir}/man1/ zig.1
%endif
mkdir -p %{buildroot}/%{_mandir}/man1
install -m 0644 %{name}.1 %{buildroot}%{_mandir}/man1/
mkdir -p %{buildroot}%{_rpmconfigdir}/macros.d/
%if %{with macro}
install -D -pv -m 0644 %{SOURCE2} %{buildroot}%{_rpmmacrodir}/macros.%{name}
%endif
install -p -m644 %{SOURCE1} %{buildroot}%{_rpmconfigdir}/macros.d/
sed -i -e "s|@@ZIG_VERSION@@|%{version}|" %{buildroot}%{_rpmconfigdir}/macros.d/macros.%{name}
%check
%if %{with test}
%check
# Run reduced set of tests, based on the Zig CI
"%{buildroot}%{_bindir}/zig" test test/behavior.zig -Itest
# Issues with tests stop them from completing successfully
# https://github.com/ziglang/zig/issues/9738
#%%{__cmake_builddir}/zig build test
%endif
%files
%license LICENSE
%{_bindir}/zig
%if %{without bootstrap}
%{_mandir}/man1/%{name}.1.*
%endif
%files libs
%{_prefix}/lib/%{name}
@ -267,14 +169,80 @@ install -D -pv -m 0644 %{SOURCE2} %{buildroot}%{_rpmmacrodir}/macros.%{name}
%if %{with docs}
%files doc
%doc README.md
%doc zig-out/doc/langref.html
%doc zig-out/doc/std
%doc zig-cache/langref.html
%endif
%if %{with macro}
%files rpm-macros
%{_rpmmacrodir}/macros.%{name}
%{_rpmconfigdir}/macros.d/macros.%{name}
%endif
%changelog
%autochangelog
* 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