Files
fish-shell/fish.spec.in
Daniel Rainer 3736636d99 msrv: update to Rust 1.85
Update our MSRV to Rust 1.85.

Includes fixes for lints which were previously suppressed due to them
relying on features added after Rust 1.70.

Rust 1.85 prints a warning when using `#[cfg(target_os = "cygwin")]`, so
we work around the one instance where this is a problem for now. This
workaround can be reverted when we update to Rust 1.86 or newer.

Certain old versions of macOS are no longer supported by Rust starting
with Rust 1.74, so this commit raises our macOS version requirement to
10.12.
https://blog.rust-lang.org/2023/09/25/Increasing-Apple-Version-Requirements/
https://github.com/fish-shell/fish-shell/pull/11961#discussion_r2442415411

Closes #11961
2025-10-19 14:08:10 +02:00

126 lines
3.1 KiB
RPMSpec

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.85
# Packaging guidelines say to use a BuildRequires: rust-packaging, but it adds no value for our package
BuildRequires: cmake >= 3.15
%if 0%{?suse_version}
# 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
%if 0%{?suse_version}
Requires: terminfo-base groff
%else
Requires: ncurses-base groff-base
%endif
Requires: file
Requires: python3
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
%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
%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