forked from fish-shell/fish-shell
-
Notifications
You must be signed in to change notification settings - Fork 0
/
fish.spec.in
129 lines (104 loc) · 3.33 KB
/
fish.spec.in
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
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
# 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