diff options
author | Eric Joldasov <bratishkaerik@landless-city.net> | 2024-08-04 14:45:21 +0500 |
---|---|---|
committer | Eric Joldasov <bratishkaerik@landless-city.net> | 2024-08-04 14:45:21 +0500 |
commit | a68366316366517a3e9b9409911c00226dccf0dd (patch) | |
tree | bebda3e6fcefe5fd46e95393609b553e99439f73 /gui-wm/river | |
parent | media-gfx/azpainter: drop 3.0.7 (diff) | |
download | guru-a68366316366517a3e9b9409911c00226dccf0dd.tar.gz guru-a68366316366517a3e9b9409911c00226dccf0dd.tar.bz2 guru-a68366316366517a3e9b9409911c00226dccf0dd.zip |
gui-wm/river: fix Zig version detection in 0.3.5
It used zig version selected by user in `eselect-zig` previously,
which is incorrect, as ebuild should use own, detected Zig version.
Seems like this logic is also copy-pasted from
https://github.com/bsd-ac/wayland-desktop/blob/2724ddc7532e81ba553f17e6bd2df861ccb442ee/gui-wm/river/river-0.3.2.ebuild ,
which, in its turn, has old logic from sys-fs/ncdu. Not critical, but
fixed this too.
Signed-off-by: Eric Joldasov <bratishkaerik@landless-city.net>
Diffstat (limited to 'gui-wm/river')
-rw-r--r-- | gui-wm/river/river-0.3.5.ebuild | 76 |
1 files changed, 67 insertions, 9 deletions
diff --git a/gui-wm/river/river-0.3.5.ebuild b/gui-wm/river/river-0.3.5.ebuild index 86665f2cc..068cdf626 100644 --- a/gui-wm/river/river-0.3.5.ebuild +++ b/gui-wm/river/river-0.3.5.ebuild @@ -28,6 +28,7 @@ KEYWORDS="~amd64" IUSE="+llvm +man pie xwayland bash-completion zsh-completion fish-completion" EZIG_MIN="0.12" +EZIG_MAX_EXCLUSIVE="0.13" DEPEND=" || ( dev-lang/zig-bin:${EZIG_MIN} dev-lang/zig:${EZIG_MIN} ) @@ -39,12 +40,69 @@ DEPEND=" " RDEPEND="${DEPEND}" +DOCS=( README.md ) + # https://github.com/ziglang/zig/issues/3382 QA_FLAGS_IGNORED="usr/bin/*" -ezig_build() { - EZIG=zig - edo "${EZIG}" build "${ZIG_BUILD_ARGS[@]}" "${@}" +# Many thanks to Florian Schmaus (Flowdalic)! +# Adapted from https://github.com/gentoo/gentoo/pull/28986 +# Set the EZIG environment variable. +zig-set_EZIG() { + [[ -n ${EZIG} ]] && return + + local candidate selected selected_ver ver + + for candidate in "${BROOT}"/usr/bin/zig-*; do + if [[ ! -L ${candidate} || ${candidate} != */zig?(-bin)-+([0-9.]) ]]; then + continue + fi + + ver=${candidate##*-} + + if [[ -n ${EZIG_EXACT_VER} ]]; then + ver_test "${ver}" -ne "${EZIG_EXACT_VER}" && continue + + selected="${candidate}" + selected_ver="${ver}" + break + fi + + if [[ -n ${EZIG_MIN} ]] \ + && ver_test "${ver}" -lt "${EZIG_MIN}"; then + # Candidate does not satisfy EZIG_MIN condition. + continue + fi + + if [[ -n ${EZIG_MAX_EXCLUSIVE} ]] \ + && ver_test "${ver}" -ge "${EZIG_MAX_EXCLUSIVE}"; then + # Candidate does not satisfy EZIG_MAX_EXCLUSIVE condition. + continue + fi + + if [[ -n ${selected_ver} ]] \ + && ver_test "${selected_ver}" -gt "${ver}"; then + # Candidate is older than the currently selected candidate. + continue + fi + + selected="${candidate}" + selected_ver="${ver}" + done + + if [[ -z ${selected} ]]; then + die "Could not find (suitable) zig installation in ${BROOT}/usr/bin" + fi + + export EZIG="${selected}" + export EZIG_VER="${selected_ver}" +} + +# Invoke zig with the optionally provided arguments. +ezig() { + zig-set_EZIG + + edo "${EZIG}" "${@}" } src_unpack() { @@ -58,7 +116,8 @@ src_unpack() { } src_configure() { - export ZIG_BUILD_ARGS=( + export ZBS_ARGS=( + --prefix usr/ -Doptimize=ReleaseSafe -Dpie=$(usex pie true false) @@ -72,17 +131,16 @@ src_configure() { } src_compile() { - ezig_build + ezig build "${ZBS_ARGS[@]}" } src_test() { - ezig_build test + ezig build test "${ZBS_ARGS[@]}" } src_install() { - ezig_build install --prefix "${ED}/usr" - - dodoc README.md + DESTDIR="${ED}" ezig build install "${ZBS_ARGS[@]}" + einstalldocs insinto /usr/share/wayland-sessions doins contrib/river.desktop |