commit: d7389b63c47c153c1024f0cae47b342095ba80ed Author: idealseal <realidealseal <AT> protonmail <DOT> com> AuthorDate: Thu Mar 13 14:24:22 2025 +0000 Commit: Sam James <sam <AT> gentoo <DOT> org> CommitDate: Thu Mar 13 17:06:59 2025 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=d7389b63
app-shells/fish: sync live ebuild Enable nearly all of tests again. Signed-off-by: idealseal <realidealseal <AT> protonmail.com> Closes: https://github.com/gentoo/gentoo/pull/41060 Signed-off-by: Sam James <sam <AT> gentoo.org> app-shells/fish/fish-9999.ebuild | 106 +++++++++++++++++---------------------- 1 file changed, 46 insertions(+), 60 deletions(-) diff --git a/app-shells/fish/fish-9999.ebuild b/app-shells/fish/fish-9999.ebuild index 443624f2a4d8..6912899db052 100644 --- a/app-shells/fish/fish-9999.ebuild +++ b/app-shells/fish/fish-9999.ebuild @@ -5,7 +5,10 @@ EAPI=8 PYTHON_COMPAT=( python3_{11..13} ) -inherit cargo cmake python-any-r1 readme.gentoo-r1 xdg +# Tests fail when build directory is not inside source directory. +BUILD_DIR="${S}/build" + +inherit cargo cmake multiprocessing python-any-r1 readme.gentoo-r1 xdg DESCRIPTION="Friendly Interactive SHell" HOMEPAGE="https://fishshell.com/" @@ -19,9 +22,10 @@ if [[ ${PV} == 9999 ]]; then 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="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos" + KEYWORDS="~amd64 ~arm64 ~loong ~ppc64 ~riscv ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos" fi S="${WORKDIR}/${MY_P}" @@ -30,7 +34,7 @@ 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 split-usr test" +IUSE="+doc nls test" RESTRICT="!test? ( test )" @@ -38,16 +42,15 @@ BDEPEND=" nls? ( sys-devel/gettext ) test? ( ${PYTHON_DEPS} - dev-tcltk/expect $(python_gen_any_dep ' dev-python/pexpect[${PYTHON_USEDEP}] ') ) " -# we don't need shpinx dep for release tarballs +# Release tarballs contain prebuilt documentation. [[ ${PV} == 9999 ]] && BDEPEND+=" doc? ( dev-python/sphinx )" -QA_FLAGS_IGNORED="**bin/fish*" +QA_FLAGS_IGNORED="usr/bin/.*" python_check_deps() { use test || return 0 @@ -68,89 +71,72 @@ src_unpack() { fi } -src_prepare() { - # workaround for https://github.com/fish-shell/fish-shell/issues/4883 - if use split-usr; then - sed -i 's#${TEST_INSTALL_DIR}/${CMAKE_INSTALL_PREFIX}#${TEST_INSTALL_DIR}#' \ - cmake/Tests.cmake || die - fi - - # remove the build targets from the default build set so they are not wanted - # if cmake_src_install is called - sed -i \ - -e ' - /function(CREATE_TARGET target)/,/endfunction(CREATE_TARGET)/ { - s/${target} ALL/${target}/ - }' CMakeLists.txt || die - - cmake_src_prepare -} - src_configure() { local mycmakeargs=( - # installing into /bin breaks tests on merged usr systems. - # sbin -> bin symlink confuses tests. - # so on split-usr we install to /bin. - # on merge-usr we set sbindir to bin. - $(usex split-usr "-DCMAKE_INSTALL_BINDIR=${EPREFIX}/bin" \ - "-DCMAKE_INSTALL_SBINDIR=${EPREFIX}/usr/bin") -DCMAKE_INSTALL_SYSCONFDIR="${EPREFIX}/etc" + -DCTEST_PARALLEL_LEVEL=$(makeopts_jobs) -DINSTALL_DOCS="$(usex doc)" - -DWITH_GETTEXT="$(usex nls)" ) - # release tarballs ship pre-built docs // -DHAVE_PREBUILT_DOCS=TRUE - if [[ ${PV} == 9999 ]]; then - mycmakeargs+=( -DBUILD_DOCS="$(usex doc)" ) - else - mycmakeargs+=( -DBUILD_DOCS=OFF ) - fi - cargo_src_configure --no-default-features --bin fish --bin fish_indent --bin fish_key_reader + 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" - local -x CMAKE_WITH_GETTEXT - CMAKE_WITH_GETTEXT="$(usex nls 1 0)" + + # 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 - # copy files built with cargo_src_compile into the cmake build directory, - # so when we run cmake_src_install they are not rebuild + # Copy built binaries into the cmake build directory to mark the targets + # up-to-date in cmake. for target in fish fish_indent fish_key_reader; do cp "$(cargo_target_dir)/${target}" "${BUILD_DIR}" || die done - cmake_src_compile -} -src_install() { - cmake_src_install - keepdir /usr/share/fish/vendor_{completions,conf,functions}.d - readme.gentoo_create_doc + cmake_src_compile } src_test() { - # tests will create temporary files + # Tests will create temporary directories. local -x TMPDIR="${T}" - # some tests are fragile, sanitize environment + # Otherwise the dimension will be 0x0 local -x COLUMNS=80 local -x LINES=24 - # very fragile, depends on terminal, size, tmux, screen and timing - # no die is intentional, for repeated test runs - if [[ ${PV} != 9999 ]]; then - rm -v tests/pexpects/terminal.py || : - fi + # Both depend in locale variables which might not be available. + # No die to allow repeated test runs. + rm -v tests/checks/{basic,locale}.fish || : + + # Gets skipped when tmux is missing, but we want consistency across different systems. + # No die to allow repeated test runs. + rm -v tests/checks/tmux-*.fish || : - # TODO: fix tests & submit upstream - # tests are confused by usr/sbin -> bin symlink, no die is intentional for repeated test runs - use split-usr || rm -v tests/checks/{redirect,type}.fish || : + # Enable colored output for building tests. + local -x CARGO_TERM_COLOR=always + # TODO: Figure out why we link again. + cargo_env cmake_build fish_run_tests +} - # cmake_src_test will invoke ctest but required files are missing - cargo_env cmake_build test +src_install() { + cmake_src_install + keepdir /usr/share/fish/vendor_{completions,conf,functions}.d + readme.gentoo_create_doc } pkg_postinst() {
