Name: fish Version: 4.0.8 Release: 1%{?dist} Summary: Friendly interactive shell License: Apache-2.0 OR MIT and GPL-2.0-only AND LGPL-2.0-or-later AND MIT AND PSF-2.0 and Unlicense OR MIT and WTFPL and Zlib URL: https://fishshell.com Source0: https://github.com/fish-shell/fish-shell/releases/download/%{version}/%{name}-%{version}.tar.xz #Source1: https://github.com/fish-shell/fish-shell/releases/download/%{version}/%{name}-%{version}.tar.xz.asc #Source2: gpgkey-003837986104878835FA516D7A67D962D88A709A.gpg # Forked rust-pcre2 crate used by fish %global rust_pcre2_fish_tag 0.2.9-utf32 Source10: https://github.com/fish-shell/rust-pcre2/archive/%{rust_pcre2_fish_tag}/rust-pcre2-%{rust_pcre2_fish_tag}.tar.gz # Patches from EPEL spec Patch0001: 0001-Remove-fish.desktop-file-as-it-was-only-needed-for-A.patch Patch0002: 0002-Remove-fish.desktop-harder.patch Patch0502: 0502-Update-lru-to-0.13.0.patch Patch1001: 1001-cargo-Use-internal-copy-of-rust-pcre2-instead-of-fet.patch Patch1002: 1002-cmake-Use-rpm-profile-for-RelWithDebInfo.patch Patch1003: 1003-cargo-Bump-serial_test-to-v3.patch Patch10001: 10001-rust-pcre2-cargo-Drop-workspace-definition.patch BuildRequires: cargo BuildRequires: cmake >= 3.5 BuildRequires: ninja-build BuildRequires: gcc BuildRequires: gettext BuildRequires: git-core BuildRequires: ncurses-devel BuildRequires: pcre2-devel BuildRequires: gnupg2 BuildRequires: python3-devel BuildRequires: python3-pexpect BuildRequires: procps-ng BuildRequires: rust BuildRequires: glibc-langpack-en %global __python %{__python3} BuildRequires: /usr/bin/sphinx-build Requires: ncurses-term Recommends: man-db Recommends: man-pages Recommends: groff-base Provides: bundled(js-alpine) Provides: bundled(crate(pcre2)) = %{rust_pcre2_fish_tag} ExcludeArch: %{ix86} %{arm32} %global debug_package %{nil} %description fish is a fully-equipped command line shell (like bash or zsh) that is smart and user-friendly. fish supports powerful features like syntax highlighting, autosuggestions, and tab completions that just work. %prep %autosetup -N echo '[profile.rpm]' >> Cargo.toml echo 'inherits = "release"' >> Cargo.toml # vendor forked pcre2 crate mkdir -p ./third-party-forks/rust-pcre2 tar -C ./third-party-forks/rust-pcre2 --strip-components=1 -xf %{SOURCE10} %autopatch -p1 # fix python shebangs for f in $(find share/tools -type f -name '*.py'); do sed -i -e '1{s@^#!.*@#!%{__python3}@}' "$f" done # fetch Rust crates for offline build cargo fetch --target "$(rustc -vV | sed -n 's|host: ||p')" %build export CARGO_NET_OFFLINE=true mkdir -p %{_vpath_builddir} %cmake -GNinja -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DBUILD_DOCS=ON \ -DCMAKE_INSTALL_SYSCONFDIR=%{_sysconfdir} \ -Dextra_completionsdir=%{_datadir}/%{name}/vendor_completions.d \ -Dextra_functionsdir=%{_datadir}/%{name}/vendor_functions.d \ -Dextra_confdir=%{_datadir}/%{name}/vendor_conf.d %cmake_build -t all doc # clean up pkgconfig sed -i 's^/usr/local/^/usr/^g' %{_vpath_builddir}/*.pc # substitute for cargo license summary echo "Rust crate licenses are covered by upstream; see Cargo.lock" > LICENSE.dependencies %install %cmake_install %py_byte_compile %{python3} %{buildroot}%{_datadir}/%{name}/tools/ cp -a README.rst %{buildroot}%{_pkgdocdir} cp -a CONTRIBUTING.rst %{buildroot}%{_pkgdocdir} %find_lang %{name} %check %cmake_build --target fish_run_tests %post if [ "$1" = 1 ]; then if [ ! -f %{_sysconfdir}/shells ] ; then echo "%{_bindir}/fish" > %{_sysconfdir}/shells echo "/bin/fish" >> %{_sysconfdir}/shells else grep -q "^%{_bindir}/fish$" %{_sysconfdir}/shells || echo "%{_bindir}/fish" >> %{_sysconfdir}/shells grep -q "^/bin/fish$" %{_sysconfdir}/shells || echo "/bin/fish" >> %{_sysconfdir}/shells fi fi %postun if [ "$1" = 0 ] && [ -f %{_sysconfdir}/shells ] ; then sed -i '\!^%{_bindir}/fish$!d' %{_sysconfdir}/shells sed -i '\!^/bin/fish$!d' %{_sysconfdir}/shells fi %files -f %{name}.lang %license COPYING %license LICENSE.dependencies %{_mandir}/man1/fish*.1* %{_bindir}/fish* %config(noreplace) %{_sysconfdir}/fish/ %{_datadir}/fish/ %{_datadir}/pkgconfig/fish.pc %{_pkgdocdir}