commit:     01544741387899e4c040e1db58022d14c8edf1fb
Author:     idealseal <realidealseal <AT> protonmail <DOT> com>
AuthorDate: Mon Mar  2 15:50:05 2026 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Tue Mar  3 21:45:11 2026 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=01544741

app-shells/fish: make build work with cmake

This will now use cmake to build fish itself. This makes it possible to
run tests (yay!). And we don't need to maintain downstream patches for
cargo.eclass compatibility.

Closes: https://bugs.gentoo.org/952080
Closes: https://bugs.gentoo.org/970077
Signed-off-by: idealseal <realidealseal <AT> protonmail.com>
Part-of: https://codeberg.org/gentoo/gentoo/pulls/196
Signed-off-by: Sam James <sam <AT> gentoo.org>

 app-shells/fish/fish-4.5.0-r2.ebuild | 141 +++++++++++++++++++++++++++++++++++
 1 file changed, 141 insertions(+)

diff --git a/app-shells/fish/fish-4.5.0-r2.ebuild 
b/app-shells/fish/fish-4.5.0-r2.ebuild
new file mode 100644
index 000000000000..c84c837afd48
--- /dev/null
+++ b/app-shells/fish/fish-4.5.0-r2.ebuild
@@ -0,0 +1,141 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+CRATES=""
+
+if [[ ${PV} != 9999 ]]; then
+       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%'
+       )
+fi
+
+RUST_MIN_VER="1.85.0"
+
+PYTHON_COMPAT=( python3_{11..14} )
+
+inherit cargo cmake python-any-r1 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 ~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+=" Apache-2.0 MIT MPL-2.0 Unicode-3.0 ZLIB"
+SLOT="0"
+IUSE="+doc nls test"
+
+RESTRICT="!test? ( test )"
+
+BDEPEND="
+       virtual/pkgconfig
+       ${PYTHON_USEDEP}
+       doc? ( $(python_gen_any_dep 'dev-python/sphinx[${PYTHON_USEDEP}]') )
+       nls? ( sys-devel/gettext )
+       test? (
+               app-misc/tmux
+               dev-vcs/git
+               sys-apps/less
+               $(python_gen_any_dep 'dev-python/pexpect[${PYTHON_USEDEP}]')
+       )
+"
+DEPEND="dev-libs/libpcre2[pcre32]"
+RDEPEND="${DEPEND}"
+
+QA_FLAGS_IGNORED="usr/bin/.*"
+
+python_check_deps() {
+       if use doc; then
+               python_has_version "dev-python/sphinx[${PYTHON_USEDEP}]" || 
return 1
+       fi
+       if use test; then
+               python_has_version "dev-python/pexpect[${PYTHON_USEDEP}]" || 
return 1
+       fi
+}
+
+pkg_setup() {
+       if use doc || use test; then
+               python-any-r1_pkg_setup
+       fi
+       rust_pkg_setup
+
+       export PKG_CONFIG_ALLOW_CROSS=1
+}
+
+src_prepare() {
+       # Bug: https://bugs.gentoo.org/952080
+       sed -e '/^lto = /d' -i Cargo.toml || die "Failed to remove LTO from 
cargo package"
+
+       cmake_src_prepare
+}
+
+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"
+               -DCMAKE_INSTALL_DATADIR="${EPREFIX}/usr/share"
+               -DWITH_DOCS="$(usex doc ON OFF)"
+               -DWITH_MESSAGE_LOCALIZATION="$(usex nls ON OFF)"
+               -DRust_CARGO="${CARGO}"
+               -DRust_COMPILER="${RUSTC}"
+       )
+       local -x CMAKE_BUILD_TYPE="$(usex debug Debug Release)"
+       cargo_env cmake_src_configure
+}
+
+src_compile() {
+       local -x CARGO_TERM_COLOR=always
+       cargo_env cmake_src_compile
+}
+
+src_test() {
+       # Very fragile tests, don't seem to work in sandboxed environment.
+       # No die to allow repeating tests.
+       rm -v \
+               tests/checks/tmux-pager.fish \
+               tests/checks/tmux-wrapping.fish \
+               tests/checks/tmux-commandline.fish \
+               tests/checks/tmux-prompt.fish \
+               tests/pexpects/terminal.py \
+               || :
+
+       cargo_env cmake_build fish_run_tests
+}
+
+src_install() {
+       cargo_env 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
+}

Reply via email to