# # spec file for package fish # # Copyright (c) 2025 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed # upon. The license for this file, and modifications and additions to the # file, is the same license as for the pristine package itself (unless the # license for the pristine package is not an Open Source License, in which # case the license is the MIT License). An "Open Source License" is a # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. # Please submit bugfixes or comments via https://bugs.opensuse.org/ # Name: fish Summary: Friendly interactive shell Version: 4.3.3+git20260107.7a05ea0f9 Release: 0 License: GPL-2.0 Group: System/Shells URL: https://fishshell.com/ Source0: %{name}-%{version}.tar.gz Source1: vendor.tar.zst Source100: README.md BuildRequires: cargo BuildRequires: cargo-packaging BuildRequires: cmake BuildRequires: fdupes BuildRequires: gcc-c++ BuildRequires: gettext BuildRequires: ncurses-devel BuildRequires: pcre2-devel BuildRequires: procps BuildRequires: python3 BuildRequires: python3-Sphinx BuildRequires: rust BuildRequires: xz Requires: man Requires: procps Requires: python3 # 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. ### smb %package devel Summary: Devel files for the fish shell Group: Development/Libraries/C and C++ BuildArch: noarch %description devel This package contains development files for the fish shell. ##### %prep %setup -q -n %{name}-%{version} -a 1 ### 20250522: Needed to add an exclude for unicode.py otherwise the build gives a ### 'error: the listed checksum of ... has changed' #printf "Current working directory: %s\n" $(pwd) #find . -type f -name 'unicode.py' find . \! -wholename './vendor/unicode-width-0.2.2/scripts/unicode.py' -type f -exec sed -i 's@#!%{_bindir}/env python3$@#!%{_bindir}/python3@' {} + ##### ### I'm not sure what "_wrong_version_format_terminate_build 0" would ### do here, but I don't want that version check, so removing file. rm -v tests/checks/version.fish ####### ### This seems to fail in CI type environments, works fine locally - but when ### committed to OBS, it fails rm -v tests/checks/fish_config.fish ##### %build export CARGO_NET_OFFLINE=true ### smb echo %{version} > %{_builddir}/%{name}-%{version}/version ####### # CMake macros define -DBUILD_SHARED_LIBS:BOOL=ON, which breaks the # bundled PCRE2 static library. EXTRA_CMAKE_FLAGS="$EXTRA_CMAKE_FLAGS -DBUILD_SHARED_LIBS:BOOL=OFF" # CMake macros define the wrong sysconfdir arguments EXTRA_CMAKE_FLAGS="$EXTRA_CMAKE_FLAGS -DCMAKE_INSTALL_SYSCONFDIR=%{_sysconfdir}" ### smb EXTRA_CMAKE_FLAGS="$EXTRA_CMAKE_FLAGS -DWITH_DOCS=ON -DINSTALL_DOCS=ON" ####### %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 %if 0%{?suse_version} >= 1600 || 0%{?sle_version} == 150600 rm -v %{buildroot}%{_docdir}/%{name}/.buildinfo %endif %if 0%{?sle_version} == 150500 rm -v %{buildroot}/%{_datadir}/doc/%{name}/.buildinfo %endif %fdupes -s %{buildroot} ### 20250927: between v4.0.8 and v4.1.0, this "broke" #%%find_lang %%{name} ##### %if 0%{?suse_version} >= 1600 || 0%{?sle_version} == 150600 cp -a README.rst %{buildroot}%{_datadir}/doc/packages/%{name}/ cp -a CONTRIBUTING.rst %{buildroot}%{_datadir}/doc/packages/%{name}/ %else cp -a README.rst %{buildroot}%{_datadir}/doc/%{name}/ cp -a CONTRIBUTING.rst %{buildroot}%{_datadir}/doc/%{name}/ %endif %check # OpenSUSE does out-of-tree builds and defines __builddir %if 0%{?__builddir:1} cd %__builddir %endif #make test SHOW_INTERACTIVE_LOG=1 make fish_run_tests %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 ### 20250927: between v4.0.8 and v4.1.0, this "broke" #%%files -f %%{name}.lang %files ##### %defattr(-,root,root,-) # The documentation directory # Tumbleweed & Leap 15.6/16.0 %if 0%{?suse_version} >= 1600 || 0%{?sle_version} == 150600 %doc %{_datadir}/doc/packages/%{name} %else # Leap 15.5 %doc %{_datadir}/doc/%{name} %endif # man files %{_mandir}/man1/* # The program binaries %attr(0755,root,root) %{_bindir}/fish %attr(0755,root,root) %{_bindir}/fish_indent %attr(0755,root,root) %{_bindir}/fish_key_reader # Configuration files %dir %{_sysconfdir}/fish/ %config(noreplace) %{_sysconfdir}/fish/config.fish # Support files %{_datadir}/fish/ # FreeDesktop entry #%%{_datadir}/applications/fish.desktop #%%{_datadir}/pixmaps/fish.png ### smb %files devel # pkgconfig %{_datadir}/pkgconfig/fish.pc #######