forked from gentoo/gentoo
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Release: - https://ziglang.org/download/0.13.0/release-notes.html - https://github.com/ziglang/zig/releases/tag/0.13.0 Closes: https://bugs.gentoo.org/933854 Co-authored-by: Jean-Baptiste "Jiboo" Lepesme <[email protected]> Signed-off-by: Aliaksei Urbanski <[email protected]> Signed-off-by: Sam James <[email protected]>
- Loading branch information
1 parent
1a17266
commit 2cd85ec
Showing
4 changed files
with
260 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
# Docs contain examples of badly formatted code, | ||
# so they should be excluded for test-fmt to pass. | ||
# In the upstream, the "doc" directory | ||
# was removed from fmt_include_paths in | ||
# https://github.com/ziglang/zig/commit/cb1d1bdf | ||
|
||
--- a/build.zig | ||
+++ b/build.zig | ||
@@ -428,7 +428,7 @@ | ||
} | ||
const optimization_modes = chosen_opt_modes_buf[0..chosen_mode_index]; | ||
|
||
- const fmt_include_paths = &.{ "doc", "lib", "src", "test", "tools", "build.zig" }; | ||
+ const fmt_include_paths = &.{ "lib", "src", "test", "tools", "build.zig" }; | ||
const fmt_exclude_paths = &.{"test/cases"}; | ||
const do_fmt = b.addFmt(.{ | ||
.paths = fmt_include_paths, |
28 changes: 28 additions & 0 deletions
28
dev-lang/zig/files/zig-0.13.0-test-std-kernel-version.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
# https://github.com/ziglang/zig/pull/20001 | ||
# https://github.com/Jiboo/zig/commit/856fe4af | ||
|
||
Author: Jean-Baptiste "Jiboo" Lepesme <[email protected]> | ||
Date: Sun, 19 May 2024 15:02:42 +0200 | ||
|
||
IoUring: fix an issue in tests where InvalidVersion might get thrown by | ||
skipKernelLessThan, due to some kernel versions not being SemVer compliant. | ||
|
||
diff --git a/lib/std/os/linux/IoUring.zig b/lib/std/os/linux/IoUring.zig | ||
index 3bf3c077fc3b..b2a4da486907 100644 | ||
--- a/lib/std/os/linux/IoUring.zig | ||
+++ b/lib/std/os/linux/IoUring.zig | ||
@@ -3883,7 +3883,13 @@ inline fn skipKernelLessThan(required: std.SemanticVersion) !void { | ||
} | ||
|
||
const release = mem.sliceTo(&uts.release, 0); | ||
- var current = try std.SemanticVersion.parse(release); | ||
+ // Strips potential extra, as kernel version might not be semver compliant, example "6.8.9-300.fc40.x86_64" | ||
+ const extra_index = std.mem.indexOfAny(u8, release, "-+"); | ||
+ const stripped = release[0..(extra_index orelse release.len)]; | ||
+ // Make sure the input don't rely on the extra we just stripped | ||
+ try testing.expect(required.pre == null and required.build == null); | ||
+ | ||
+ var current = try std.SemanticVersion.parse(stripped); | ||
current.pre = null; // don't check pre field | ||
if (required.order(current) == .gt) return error.SkipZigTest; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,213 @@ | ||
# Copyright 2019-2024 Gentoo Authors | ||
# Distributed under the terms of the GNU General Public License v2 | ||
|
||
EAPI=8 | ||
|
||
LLVM_MAX_SLOT=18 | ||
inherit edo check-reqs cmake llvm multiprocessing toolchain-funcs | ||
|
||
DESCRIPTION="A robust, optimal, and maintainable programming language" | ||
HOMEPAGE="https://ziglang.org https://github.com/ziglang/zig" | ||
|
||
BDEPEND="test? ( !!<sys-apps/sandbox-2.39 )" | ||
if [[ ${PV} == 9999 ]]; then | ||
EGIT_REPO_URI="https://github.com/ziglang/zig.git" | ||
inherit git-r3 | ||
else | ||
VERIFY_SIG_METHOD=minisig | ||
VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/minisig-keys/zig-software-foundation.pub | ||
inherit verify-sig | ||
|
||
SRC_URI=" | ||
https://ziglang.org/download/${PV}/${P}.tar.xz | ||
verify-sig? ( https://ziglang.org/download/${PV}/${P}.tar.xz.minisig ) | ||
" | ||
KEYWORDS="~amd64 ~arm ~arm64" | ||
|
||
BDEPEND+=" verify-sig? ( sec-keys/minisig-keys-zig-software-foundation )" | ||
fi | ||
|
||
# project itself: MIT | ||
# There are bunch of projects under "lib/" folder that are needed for cross-compilation. | ||
# Files that are unnecessary for cross-compilation are removed by upstream | ||
# and therefore their licenses (if any special) are not included. | ||
# lib/libunwind: Apache-2.0-with-LLVM-exceptions || ( UoI-NCSA MIT ) | ||
# lib/libcxxabi: Apache-2.0-with-LLVM-exceptions || ( UoI-NCSA MIT ) | ||
# lib/libcxx: Apache-2.0-with-LLVM-exceptions || ( UoI-NCSA MIT ) | ||
# lib/libc/wasi: || ( Apache-2.0-with-LLVM-exceptions Apache-2.0 MIT BSD-2 ) public-domain | ||
# lib/libc/musl: MIT BSD-2 | ||
# lib/libc/mingw: ZPL public-domain BSD-2 ISC HPND | ||
# lib/libc/glibc: BSD HPND ISC inner-net LGPL-2.1+ | ||
LICENSE="MIT Apache-2.0-with-LLVM-exceptions || ( UoI-NCSA MIT ) || ( Apache-2.0-with-LLVM-exceptions Apache-2.0 MIT BSD-2 ) public-domain BSD-2 ZPL ISC HPND BSD inner-net LGPL-2.1+" | ||
SLOT="$(ver_cut 1-2)" | ||
IUSE="doc test" | ||
RESTRICT="!test? ( test )" | ||
|
||
BUILD_DIR="${S}/build" | ||
|
||
# Zig requires zstd and zlib compression support in LLVM, if using LLVM backend. | ||
# (non-LLVM backends don't require these) | ||
# They are not required "on their own", so please don't add them here. | ||
# You can check https://github.com/ziglang/zig-bootstrap in future, to see | ||
# options that are passed to LLVM CMake building (excluding "static" ofc). | ||
DEPEND=" | ||
sys-devel/clang:${LLVM_MAX_SLOT}= | ||
sys-devel/lld:${LLVM_MAX_SLOT}= | ||
sys-devel/llvm:${LLVM_MAX_SLOT}=[zstd] | ||
" | ||
|
||
RDEPEND=" | ||
${DEPEND} | ||
" | ||
|
||
IDEPEND="app-eselect/eselect-zig" | ||
|
||
# see https://github.com/ziglang/zig/issues/3382 | ||
# For now, Zig Build System doesn't support enviromental CFLAGS/LDFLAGS/etc. | ||
QA_FLAGS_IGNORED="usr/.*/zig/${PV}/bin/zig" | ||
|
||
# Since commit https://github.com/ziglang/zig/commit/e7d28344fa3ee81d6ad7ca5ce1f83d50d8502118 | ||
# Zig uses self-hosted compiler only | ||
CHECKREQS_MEMORY="4G" | ||
|
||
PATCHES=( | ||
"${FILESDIR}/${P}-test-fmt-no-doc.patch" | ||
"${FILESDIR}/${P}-test-std-kernel-version.patch" | ||
) | ||
|
||
llvm_check_deps() { | ||
has_version "sys-devel/clang:${LLVM_SLOT}" | ||
} | ||
|
||
ctarget_to_zigtarget() { | ||
# Zig's Target Format: arch-os-abi | ||
local CTARGET="${CTARGET:-${CHOST}}" | ||
|
||
local ZIG_ARCH | ||
case "${CTARGET%%-*}" in | ||
i?86) ZIG_ARCH=x86;; | ||
sparcv9) ZIG_ARCH=sparc64;; | ||
*) ZIG_ARCH="${CTARGET%%-*}";; # Same as in CHOST | ||
esac | ||
|
||
local ZIG_OS | ||
case "${CTARGET}" in | ||
*linux*) ZIG_OS=linux;; | ||
*apple*) ZIG_OS=macos;; | ||
esac | ||
|
||
local ZIG_ABI | ||
case "${CTARGET##*-}" in | ||
gnu) ZIG_ABI=gnu;; | ||
solaris*) ZIG_OS=solaris ZIG_ABI=none;; | ||
darwin*) ZIG_ABI=none;; | ||
*) ZIG_ABI="${CTARGET##*-}";; # Same as in CHOST | ||
esac | ||
|
||
echo "${ZIG_ARCH}-${ZIG_OS}-${ZIG_ABI}" | ||
} | ||
|
||
get_zig_mcpu() { | ||
local ZIG_DEFAULT_MCPU=native | ||
tc-is-cross-compiler && ZIG_DEFAULT_MCPU=baseline | ||
echo "${ZIG_MCPU:-${ZIG_DEFAULT_MCPU}}" | ||
} | ||
|
||
get_zig_target() { | ||
local ZIG_DEFAULT_TARGET=native | ||
tc-is-cross-compiler && ZIG_DEFAULT_TARGET="$(ctarget_to_zigtarget)" | ||
echo "${ZIG_TARGET:-${ZIG_DEFAULT_TARGET}}" | ||
} | ||
|
||
pkg_setup() { | ||
llvm_pkg_setup | ||
check-reqs_pkg_setup | ||
} | ||
|
||
src_configure() { | ||
# Useful for debugging and a little bit more deterministic. | ||
export ZIG_LOCAL_CACHE_DIR="${T}/zig-local-cache" | ||
export ZIG_GLOBAL_CACHE_DIR="${T}/zig-global-cache" | ||
|
||
local mycmakeargs=( | ||
-DZIG_SHARED_LLVM=ON | ||
-DZIG_TARGET_TRIPLE="$(get_zig_target)" | ||
-DZIG_TARGET_MCPU="$(get_zig_mcpu)" | ||
-DZIG_USE_LLVM_CONFIG=ON | ||
-DCMAKE_PREFIX_PATH="$(get_llvm_prefix ${LLVM_MAX_SLOT})" | ||
-DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/$(get_libdir)/zig/${PV}" | ||
) | ||
|
||
cmake_src_configure | ||
} | ||
|
||
src_compile() { | ||
cmake_src_compile | ||
|
||
"${BUILD_DIR}/stage3/bin/zig" env || die "Zig compilation failed" | ||
|
||
if use doc; then | ||
cd "${BUILD_DIR}" || die | ||
edo ./stage3/bin/zig build std-docs --prefix "${S}/docgen/" | ||
edo ./stage3/bin/zig build langref --prefix "${S}/docgen/" | ||
fi | ||
} | ||
|
||
src_test() { | ||
cd "${BUILD_DIR}" || die | ||
local ZIG_TEST_ARGS=( | ||
-j$(makeopts_jobs) | ||
--color on | ||
--summary all | ||
--verbose | ||
-Dstatic-llvm=false | ||
-Denable-llvm | ||
-Dskip-non-native | ||
-Doptimize=Debug | ||
-Dtarget="$(get_zig_target)" | ||
-Dcpu="$(get_zig_mcpu)" | ||
) | ||
local ZIG_TEST_STEPS=( | ||
test-asm-link | ||
test-behavior | ||
test-c-abi | ||
test-c-import | ||
test-cases | ||
test-cli | ||
test-compare-output | ||
test-compiler-rt | ||
test-fmt | ||
test-link | ||
test-run-translated-c | ||
test-stack-traces | ||
test-standalone | ||
test-std | ||
test-translate-c | ||
test-universal-libc | ||
) | ||
|
||
local step | ||
for step in "${ZIG_TEST_STEPS[@]}" ; do | ||
# to keep the verbosity, don't use edob here | ||
./stage3/bin/zig build ${step} ${ZIG_TEST_ARGS[@]} || die | ||
done | ||
} | ||
|
||
src_install() { | ||
use doc && local HTML_DOCS=( "docgen/doc/langref.html" "docgen/doc/std" ) | ||
cmake_src_install | ||
|
||
cd "${ED}/usr/$(get_libdir)/zig/${PV}/" || die | ||
mv lib/zig/ lib2/ || die | ||
rm -rf lib/ || die | ||
mv lib2/ lib/ || die | ||
dosym -r "/usr/$(get_libdir)/zig/${PV}/bin/zig" "/usr/bin/zig-${PV}" | ||
} | ||
|
||
pkg_postinst() { | ||
eselect zig update ifunset || die | ||
} | ||
|
||
pkg_postrm() { | ||
eselect zig update ifunset || die | ||
} |