gentoo-ebuilds/app-shells/fish/fish-4.0.1.ebuild
idealseal ba26d86a46
app-shells/fish: fix link failure with gcc
This happens when we rebuild the code with Fish's CMake wrapper (we need
that to install auxilary files and run test), since cargo.eclass and
Fish's build system put the target executables in different output
directories.

First we patch CMake so that it doesn't even try to execute cargo for
it's targets and just retain the target to copy the executables over into
the CMake build directory.

Also we need to set the cargo output directory in the CMake scripts to
point to the target directory of cargo.eclass so it reuses the already
build binaries.

And since Fish sometimes uses a custom cargo build profile which alters
the target directory in a way not handled by cargo.eclass we remove that
as well.

Signed-off-by: idealseal <realidealseal@protonmail.com>
Signed-off-by: Sam James <sam@gentoo.org>
2025-03-28 15:07:54 +00:00

110 lines
2.5 KiB
Bash

# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
CRATES=""
declare -A GIT_CRATES=(
[pcre2-sys]='https://github.com/fish-shell/rust-pcre2;85b7afba1a9d9bd445779800e5bcafeb732e4421;rust-pcre2-%commit%/pcre2-sys'
[pcre2]='https://github.com/fish-shell/rust-pcre2;85b7afba1a9d9bd445779800e5bcafeb732e4421;rust-pcre2-%commit%'
)
inherit cargo cmake readme.gentoo-r1 xdg
DESCRIPTION="Friendly Interactive SHell"
HOMEPAGE="https://fishshell.com/"
MY_PV="${PV/_beta/b}"
MY_P="${PN}-${MY_PV}"
if [[ ${PV} == 9999 ]]; then
inherit git-r3
EGIT_REPO_URI="https://github.com/fish-shell/fish-shell.git"
else
SRC_URI="
https://github.com/fish-shell/fish-shell/releases/download/${MY_PV}/${MY_P}.tar.xz
https://github.com/gentoo-crate-dist/fish-shell/releases/download/${MY_PV}/fish-shell-${MY_PV}-crates.tar.xz
${CARGO_CRATE_URIS}
"
KEYWORDS="~amd64 ~arm64 ~loong ~ppc64 ~riscv ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos"
fi
S="${WORKDIR}/${MY_P}"
LICENSE="GPL-2 BSD BSD-2 CC0-1.0 GPL-2+ ISC LGPL-2+ MIT PSF-2 ZLIB"
# Dependent crate licenses
LICENSE+=" MIT Unicode-DFS-2016 WTFPL-2 ZLIB"
SLOT="0"
IUSE="+doc nls test"
RESTRICT="!test? ( test )"
BDEPEND="
nls? ( sys-devel/gettext )
"
# Release tarballs contain prebuilt documentation.
[[ ${PV} == 9999 ]] && BDEPEND+=" doc? ( dev-python/sphinx )"
PATCHES=(
"${FILESDIR}/${PN}-4.0.1-use-cargo-eclass-for-build.patch"
)
QA_FLAGS_IGNORED="usr/bin/.*"
src_unpack() {
if [[ ${PV} == 9999 ]]; then
git-r3_src_unpack
cargo_live_src_unpack
else
cargo_src_unpack
fi
}
src_configure() {
local mycmakeargs=(
-DCMAKE_INSTALL_SYSCONFDIR="${EPREFIX}/etc"
-DINSTALL_DOCS="$(usex doc)"
)
cargo_src_configure --no-default-features \
--bin fish \
--bin fish_indent \
--bin fish_key_reader
cmake_src_configure
}
src_compile() {
local -x PREFIX="${EPREFIX}/usr"
local -x DOCDIR="${EPREFIX}/usr/share/doc/${PF}"
local -x CMAKE_WITH_GETTEXT="$(usex nls 1 0)"
# Bug: https://bugs.gentoo.org/950699
local -x SYSCONFDIR="${EPREFIX}/etc"
# Release tarballs contain prebuilt documentation.
local -x FISH_BUILD_DOCS
if [[ ${PV} == 9999 ]]; then
FISH_BUILD_DOCS="$(usex doc 1 0)"
else
FISH_BUILD_DOCS=0
fi
cargo_src_compile
}
src_test() {
local -x CARGO_TERM_COLOR=always
local -x TEST_VERBOSE=1
cargo_env cmake_src_test -R cargo-test
}
src_install() {
cmake_src_install
keepdir /usr/share/fish/vendor_{completions,conf,functions}.d
readme.gentoo_create_doc
}
pkg_postinst() {
readme.gentoo_print_elog
xdg_pkg_postinst
}