diff --git a/.gitignore b/.gitignore index f1e9e44..335ec95 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1 @@ -/*-build -/zig-*.tar.xz -/zig-*.tar.xz.minisig +*.tar.gz diff --git a/0001-ignore-target-lib-dirs-when-invoked-with-feach-lib-r.patch b/0001-ignore-target-lib-dirs-when-invoked-with-feach-lib-r.patch new file mode 100644 index 0000000..80fab5d --- /dev/null +++ b/0001-ignore-target-lib-dirs-when-invoked-with-feach-lib-r.patch @@ -0,0 +1,28 @@ +From d505ddbb7f46ba974b5d8458fd7134901930f033 Mon Sep 17 00:00:00 2001 +From: Jan200101 +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 +--- + 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 + diff --git a/0001-remove-native-lib-directories-from-rpath.patch b/0001-remove-native-lib-directories-from-rpath.patch deleted file mode 100644 index 24db582..0000000 --- a/0001-remove-native-lib-directories-from-rpath.patch +++ /dev/null @@ -1,33 +0,0 @@ -From a865b3569ace118cc1c1cd8d5d130ec316b0307d Mon Sep 17 00:00:00 2001 -From: Jan200101 -Date: Tue, 14 Apr 2026 19:04:40 +0200 -Subject: [PATCH 1/2] remove native lib directories from rpath - -Signed-off-by: Jan200101 ---- - 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 - diff --git a/0002-Remove-unsupported-LLVM-targets-for-EPEL.patch b/0002-Remove-unsupported-LLVM-targets-for-EPEL.patch deleted file mode 100644 index a8b942f..0000000 --- a/0002-Remove-unsupported-LLVM-targets-for-EPEL.patch +++ /dev/null @@ -1,254 +0,0 @@ -From 803935baf6a4730426afbb746adfd00c0ffc0f39 Mon Sep 17 00:00:00 2001 -From: Jan200101 -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 ---- - 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 - diff --git a/changelog b/changelog deleted file mode 100644 index cc53a32..0000000 --- a/changelog +++ /dev/null @@ -1,154 +0,0 @@ -* Fri Jul 17 2026 Fedora Release Engineering - 0.16.0-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_45_Mass_Rebuild - -* Wed Apr 15 2026 Jan200101 - 0.16.0-1 -- Update to 0.16.0 - -* Sat Jan 17 2026 Fedora Release Engineering - 0.15.2-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild - -* Sun Jan 04 2026 Jan200101 - 0.15.2-2 -- Rebuilt for EPEL - -* Sun Oct 12 2025 Jan200101 - 0.15.2-1 -- Update to 0.15.2 - -* Fri Jul 25 2025 Fedora Release Engineering - 0.14.1-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild - -* Mon Jun 09 2025 Jan200101 - 0.14.1-1 -- Update to 0.14.1 - -* Tue May 27 2025 Jan200101 - 0.14.0-4 -- add patch to add library directories - -* Fri May 09 2025 Jan200101 - 0.14.0-3 -- add gcc to runtime dependencies - -* Thu Apr 24 2025 Jan200101 - 0.14.0-2 -- fix and re-enable documentation - -* Thu Mar 06 2025 Jan200101 - 0.14.0-1 -- Update to 0.14.0 - -* Mon Jan 27 2025 Jan200101 - 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 - 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 - 0.13.0-6 -- rebuild against fixed llvm - -* Sun Jan 19 2025 Fedora Release Engineering - 0.13.0-5 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild - -* Sun Dec 29 2024 Jan200101 - 0.13.0-4 -- correct macro variables -- set llvm_compat for F41 -- update callaway licenses to follow SPDX - -* Wed Sep 04 2024 Miroslav Suchý - 0.13.0-3 -- convert license to SPDX - -* Sat Jul 20 2024 Fedora Release Engineering - 0.13.0-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild - -* Tue Jun 11 2024 Jan200101 - 0.13.0-1 -- Update to 0.13.0 - -* Sat Jun 08 2024 Jan200101 - 0.12.1-1 -- Update to 0.12.1 - -* Sat May 25 2024 Jan200101 - 0.12.0-1 -- Update to 0.12.0 - -* Wed Feb 21 2024 Jan Drögehoff - 0.11.0-2 -- Rebuilt for bootstrapping - -* Sat Jan 27 2024 Aleksei Bavshin - 0.11.0-1 -- Update to 0.11.0 - -* Sat Jan 27 2024 Aleksei Bavshin - 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 - 0.9.1-6 -- Verify source signature - -* Sat Jan 27 2024 Fedora Release Engineering - 0.9.1-5 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Sat Jul 22 2023 Fedora Release Engineering - 0.9.1-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild - -* Sat Jan 21 2023 Fedora Release Engineering - 0.9.1-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild - -* Sat Jul 23 2022 Fedora Release Engineering - 0.9.1-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild - -* Fri Feb 18 2022 Jan Drögehoff - 0.9.1-1 -- Update to 0.9.1 - -* Thu Jan 27 2022 Jan Drögehoff - 0.9.0-3 -- Jan: add rpath patch -- Aleksei Bavshin: rpm macros: set default build flags - -* Sat Jan 22 2022 Fedora Release Engineering - 0.9.0-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild - -* Mon Dec 20 2021 Jan Drögehoff - 0.9.0-1 -- Update to 0.9.0 - -* Wed Nov 17 2021 Jan Drögehoff - 0.8.1-5 -- Enable documentation on Fedora 35 - -* Tue Nov 09 2021 Tom Stellard - 0.8.1-4 -- Rebuild for llvm-13.0.0 - -* Sat Oct 30 2021 Jan Drögehoff - 0.8.1-3 -- Update LLVM13 Patch - -* Thu Oct 07 2021 Tom Stellard - 0.8.1-2 -- Rebuild for llvm-13.0.0 - -* Sun Sep 12 2021 Jan Drögehoff - 0.8.1-1 -- Update to Zig 0.8.1, add LLVM 13 patch - -* Wed Aug 18 2021 Jan Drögehoff - 0.8.0-8 -- Rebuilt for lld soname bump - -* Fri Jul 23 2021 Fedora Release Engineering - 0.8.0-7 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild - -* Mon Jul 19 2021 Jan Drögehoff - 0.8.0-6 -- add native libc detection patch - -* Sun Jul 04 2021 Jan Drögehoff - 0.8.0-5 -- correct newline in macro that caused DESTDIR to be ignored - -* Mon Jun 28 2021 Jan Drögehoff - 0.8.0-4 -- correct macro once again to allow for proper packaging - -* Thu Jun 24 2021 Jan Drögehoff - 0.8.0-3 -- improve macro for using the zig binary - -* Thu Jun 24 2021 Jan Drögehoff - 0.8.0-2 -- Update patches, correct rpm macro - -* Sat Jun 05 2021 Jan Drögehoff - 0.8.0-1 -- Update to Zig 0.8.0 - -* Sun Dec 13 23:18:24 CET 2020 Jan Drögehoff - 0.7.1-1 -- Update to Zig 0.7.1 - -* Wed Nov 11 17:18:27 CET 2020 Jan Drögehoff - 0.7.0-1 -- Update to Zig 0.7.0 - -* Tue Aug 18 2020 Jan Drögehoff - 0.6.0-1 -- Initial zig spec diff --git a/macros.zig b/macros.zig index 990eddc..4aacbc5 100644 --- a/macros.zig +++ b/macros.zig @@ -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 diff --git a/sources b/sources index d07a209..fb7f511 100644 --- a/sources +++ b/sources @@ -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 diff --git a/zig.spec b/zig.spec index 6aea38e..befc83b 100644 --- a/zig.spec +++ b/zig.spec @@ -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: 2%{?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,77 @@ 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 Jul 23 2022 Fedora Release Engineering - 0.9.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Fri Feb 18 2022 Jan Drögehoff - 0.9.1-1 +- Update to 0.9.1 + +* Thu Jan 27 2022 Jan Drögehoff - 0.9.0-3 +- Jan: add rpath patch +- Aleksei Bavshin: rpm macros: set default build flags + +* Sat Jan 22 2022 Fedora Release Engineering - 0.9.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + + +* Mon Dec 20 2021 Jan Drögehoff - 0.9.0-1 +- Update to 0.9.0 + +* Wed Nov 17 2021 Jan Drögehoff - 0.8.1-5 +- Enable documentation on Fedora 35 + +* Tue Nov 09 2021 Tom Stellard - 0.8.1-4 +- Rebuild for llvm-13.0.0 + +* Sat Oct 30 2021 Jan Drögehoff - 0.8.1-3 +- Update LLVM13 Patch + +* Thu Oct 07 2021 Tom Stellard - 0.8.1-2 +- Rebuild for llvm-13.0.0 + +* Sun Sep 12 2021 Jan Drögehoff - 0.8.1-1 +- Update to Zig 0.8.1, add LLVM 13 patch + +* Wed Aug 18 2021 Jan Drögehoff - 0.8.0-8 +- Rebuilt for lld soname bump + +* Fri Jul 23 2021 Fedora Release Engineering - 0.8.0-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Mon Jul 19 2021 Jan Drögehoff - 0.8.0-6 +- add native libc detection patch + +* Sun Jul 04 2021 Jan Drögehoff - 0.8.0-5 +- correct newline in macro that caused DESTDIR to be ignored + +* Mon Jun 28 2021 Jan Drögehoff - 0.8.0-4 +- correct macro once again to allow for proper packaging + +* Thu Jun 24 2021 Jan Drögehoff - 0.8.0-3 +- improve macro for using the zig binary + +* Thu Jun 24 2021 Jan Drögehoff - 0.8.0-2 +- Update patches, correct rpm macro + +* Sat Jun 05 2021 Jan Drögehoff - 0.8.0-1 +- Update to Zig 0.8.0 + +* Sun Dec 13 23:18:24 CET 2020 Jan Drögehoff - 0.7.1-1 +- Update to Zig 0.7.1 + +* Wed Nov 11 17:18:27 CET 2020 Jan Drögehoff - 0.7.0-1 +- Update to Zig 0.7.0 + +* Tue Aug 18 2020 Jan Drögehoff - 0.6.0-1 +- Initial zig spec +