diff options
Diffstat (limited to 'gui-wm/river/river-0.3.5.ebuild')
-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 |