Summary: Friendly interactive shell Name: fish Version: @RPMVERSION@ Release: 0.%{?dist} License: GPL-2.0-only AND GPL-2.0-or-later AND BSD-2-Clause AND PSF-2.0 AND ISC AND MIT Group: System/Shells URL: https://fishshell.com/ Source0: %{name}_@VERSION@.orig.tar.xz Source1: %{name}_@VERSION@.orig-cargo-vendor.tar.xz BuildRequires: cargo gettext gcc xz pcre2-devel BuildRequires: rust >= 1.70 # Packaging guidelines say to use a BuildRequires: rust-packaging, but it adds no value for our package BuildRequires: cmake >= 3.19 %if 0%{?suse_version} BuildRequires: update-desktop-files # for tests BuildRequires: groff %else BuildRequires: groff-base %endif # for tests %if 0%{?fedora} # Need the en_US.utf-8 locale at a minimum BuildRequires: glibc-langpack-en %endif BuildRequires: python3 procps Requires: python3 Requires: man Requires: ncurses-base Requires: procps # Although the build scripts mangle the version number to be RPM compatible # for continuous builds (transforming the output of `git describe`), Fedora 32+ # also validates the version inside the pkgconfig file. There's no impetus for this # with fish. %define _wrong_version_format_terminate_build 0 %description fish is a shell geared towards interactive use. Its features are focused on user friendliness and discoverability. The language syntax is simple but incompatible with other shell languages. %prep # Unpack the source tarball and overlay the vendor tarball %setup -q -n %{name}-@VERSION@ -a 1 # Should use cargo_prep here, it overrides our vendor config changes though %build export CARGO_NET_OFFLINE=true # CMake macros define the wrong sysconfdir arguments EXTRA_CMAKE_FLAGS="$EXTRA_CMAKE_FLAGS -DCMAKE_INSTALL_SYSCONFDIR=%{_sysconfdir} -DCMAKE_INSTALL_DOCDIR=%{_docdir}/fish" %cmake $EXTRA_CMAKE_FLAGS %if 0%{?cmake_build:1} %cmake_build %else make %{?_smp_mflags} %endif %install %if 0%{?cmake_install:1} %cmake_install %else %make_install %endif %find_lang %{name} # OpenSUSE has strong opinions about categories which do not apply to other systems %if 0%{?suse_version} %suse_update_desktop_file fish "System;TerminalEmulator" %endif %check # OpenSUSE does out-of-tree builds and defines __builddir %if 0%{?__builddir:1} cd %__builddir %endif # Fedora uses __cmake_builddir %if 0%{?__cmake_builddir:1} cd %__cmake_builddir %endif make fish_run_tests %clean rm -rf $RPM_BUILD_ROOT %post # Add fish to the list of allowed shells in /etc/shells if ! grep %{_bindir}/fish %{_sysconfdir}/shells >/dev/null; then echo %{_bindir}/fish >>%{_sysconfdir}/shells fi %postun # Remove fish from the list of allowed shells in /etc/shells if [ "$1" = 0 ]; then grep -v %{_bindir}/fish %{_sysconfdir}/shells >%{_sysconfdir}/fish.tmp mv %{_sysconfdir}/fish.tmp %{_sysconfdir}/shells fi %files -f %{name}.lang %defattr(-,root,root,-) # The documentation directory %doc %{_docdir}/fish %doc CONTRIBUTING.rst README.rst # man files %{_mandir}/man1/* # The program binaries %attr(0755,root,root) %{_bindir}/* # Configuration files %dir %{_sysconfdir}/fish/ %config(noreplace) %{_sysconfdir}/fish/config.fish # Support files %{_datadir}/fish/ # pkgconfig %{_datadir}/pkgconfig/fish.pc # FreeDesktop entry %{_datadir}/applications/fish.desktop %{_datadir}/pixmaps/fish.png