diff --git a/.gitignore b/.gitignore index 7e66448..37e069d 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ /fish-2.3.0.tar.gz /fish-2.3.1.tar.gz /fish-2.6.0.tar.gz +/fish-2.7.1.tar.gz diff --git a/fish.spec b/fish.spec index aa147e9..8d203a1 100644 --- a/fish.spec +++ b/fish.spec @@ -1,26 +1,35 @@ -Name: fish -Version: 2.6.0 -Release: 1%{?dist} -Summary: A friendly interactive shell - -Group: System Environment/Shells -License: GPLv2 -URL: https://fishshell.com/ -Source0: https://fishshell.com/files/%{version}/fish-%{version}.tar.gz - -BuildRequires: python%{python3_pkgversion}-devel -%global __python %{expand:%{__python%{python3_pkgversion}}} +Name: fish +Version: 2.7.1 +Release: 1%{?dist} +Summary: Friendly interactive shell + +License: GPLv2 +URL: https://fishshell.com +Source0: https://github.com/fish-shell/fish-shell/releases/download/%{version}/%{name}-%{version}.tar.gz + +BuildRequires: gcc +BuildRequires: gcc-c++ +BuildRequires: gettext +BuildRequires: doxygen +BuildRequires: ncurses-devel +BuildRequires: pcre2-devel +BuildRequires: python%{python3_pkgversion}-devel +%global __python %{__python3} # fish's 'math' command requires bc -Requires: bc - +Requires: bc # tab completion wants man-db -Requires: man-db man-pages - +%if 0%{?rhel} && 0%{?rhel} <= 7 +Requires: man-db +Requires: man-pages +Requires: groff-base +%else +Recommends: man-db +Recommends: man-pages +Recommends: groff-base +%endif # Other misc requirements -Requires: hostname - -BuildRequires: ncurses-devel gettext groff doxygen pcre2-devel +Requires: hostname %description fish is a fully-equipped command line shell (like bash or zsh) that is @@ -28,79 +37,69 @@ smart and user-friendly. fish supports powerful features like syntax highlighting, autosuggestions, and tab completions that just work, with nothing to learn or configure. -# EPEL compatibility -%if 0%{?rhel} -%global _pkgdocdir %{_docdir}/%{name} -%endif - %prep -%setup -q +%autosetup -p1 # Change the bundled scripts to invoke the python binary directly. -for i in share/tools/*.py share/tools/*/*.py; do - sed -i -e "1 s@^#!/usr/bin/env python\$@#!%{__python}@g" "$i" +for f in $(find share/tools -type f -name '*.py'); do + sed -i -e '1{s@^#!.*@#!%{__python3}@}' "$f" done %build -%configure --docdir=%{_pkgdocdir} --without-included-pcre2 -make %{?_smp_mflags} all fish_tests - +%configure --docdir=%{_pkgdocdir} --without-included-pcre2 --disable-silent-rules +%make_build all fish_tests %install %make_install - # Fish has magical manpages (visible from inside fish) that live in # /usr/share/fish/man/man1. Compress them (rpm won't do it automatically). -gzip %{buildroot}%{_datadir}/fish/man/man1/*.1 - -%find_lang %{name} - -# Fish has what appears to be a useless pkgconfig file -rm %{buildroot}/usr/share/pkgconfig/fish.pc +# https://github.com/rpm-software-management/rpm/pull/381 +gzip -9 -n %{buildroot}%{_datadir}/fish/man/man1/*.1 # Install docs from tarball root -cp README.md %{buildroot}%{_pkgdocdir} -cp CONTRIBUTING.md %{buildroot}%{_pkgdocdir} +cp -a README.md %{buildroot}%{_pkgdocdir} +cp -a CONTRIBUTING.md %{buildroot}%{_pkgdocdir} # filesystem will own a couple of config directories so that other packages # can ship fish config snippets without requiring fish: rmdir %{buildroot}%{_datadir}/fish/vendor_completions.d rmdir %{buildroot}%{_datadir}/fish/vendor_conf.d -%check +%find_lang %{name} -# fish_tests is somewhat sensitive to the contents of the filesystem. -# If imake is installed, then fish_tests will fail. This shouldn't be -# a problem under mock, though. -# -# See: https://github.com/fish-shell/fish-shell/issues/2322 +%check ./fish_tests - %post -# Add fish to the list of allowed shells in /etc/shells if [ "$1" = 1 ]; then - if ! [ -f "%{_sysconfdir}/shells" ] || ! grep -q '^%{_bindir}/fish$' "%{_sysconfdir}/shells"; then - echo '%{_bindir}/fish' >>"%{_sysconfdir}/shells" + 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 -# Remove fish from the list of allowed shells in /etc/shells -if [ "$1" = 0 ]; then - sed -i -e '\#^%{_bindir}/fish$#d' "%{_sysconfdir}/shells" +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 -%{_mandir}/man1/*.1* -%{_bindir}/* +%license COPYING +%{_mandir}/man1/fish*.1* +%{_bindir}/fish* %config(noreplace) %{_sysconfdir}/fish/ %{_datadir}/fish/ +%{_datadir}/pkgconfig/fish.pc %{_pkgdocdir} %changelog +* Sun Jan 14 2018 Igor Gnatenko - 2.7.1-1 +- Update to 2.7.1 + * Wed Oct 04 2017 Andy Lutomirski - 2.6.0-1 - Update to 2.6.0 - Stop using bundled pcre2 diff --git a/sources b/sources index 04929b0..7ef26e7 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (fish-2.6.0.tar.gz) = d4ded5ce24600e85673a7bb016e9dc36bce999b27f40e6b1ce0b9ca49a421be2d444d9d2b6f178f6eee963e59daa4a65df4c3de2a8086a610486f758fcfb0ed1 +SHA512 (fish-2.7.1.tar.gz) = 45ee3453404c5d6c56d307b4cd19197de862f9f42d7fa06461acec56dea7146db5675cf6419dd5f72e939b3e4b1955d3761098df1de89a8cebe47645eb6f7a4b