ssh-chat-rpm/ssh-chat.spec

164 lines
4.7 KiB
RPMSpec

Name: ssh-chat
Version: 1.10
Release: 0.5
Group: Productivity/Networking/SSH
Summary: SSH server providing a chatroom
License: MIT
URL: https://github.com/shazow/ssh-chat
#Original source: https://github.com/shazow/ssh-chat/archive/v1.10.tar.gz
#Custom source, renamed for Go vendor dependencies and including launch script as well as systemd unit file below:
Source0: %{name}-%{version}.tar.gz
Source1: vendor.tar.gz
%if 0%{?suse_version}
BuildRequires: go >= 1.16
BuildRequires: golang-packaging systemd-rpm-macros fdupes rpm
Requires: systemd
%endif
%if 0%{?suse_version} > 1500
BuildRequires: openssh-common
Requires: openssh-common
%endif
%if 0%{?sle_version} == 150300
BuildRequires: openssh-common
Requires: openssh-common
%endif
%if 0%{?sle_version} == 150200
BuildRequires: openssh
Requires: openssh
%endif
%if 0%{?fedora}
BuildRequires: golang go-rpm-macros fdupes openssh
Requires: systemd openssh
%endif
%define __arch_install_post export NO_BRP_STRIP_DEBUG=true
%global provider_prefix github.com/shazow/ssh-chat
%global import_path %{provider_prefix}
%if 0%{?fedora} || 0%{?0%{?centos_version}}
%global goipath github.com/shazow/ssh-chat
%global debug_package %{nil}
%endif
%if 0%{?suse_version}
%{go_nostrip}
%{go_provides}
%endif
%if 0%{?fedora}
%gopkg
%endif
%description
Custom SSH server written in Go. Instead of a shell, you get a chat prompt.
%prep
%setup -q -n %{name}-%{version}
%setup -q -T -D -a 1
%if 0%{?fedora}
%goprep
%endif
%setup -q -T -D -a 1
%pre
%service_add_pre ssh-chat.service
%build
export GOFLAGS="-mod=vendor"
%if 0%{?suse_version}
%goprep %{import_path}
%gobuild cmd/ssh-chat
%endif
#Hacking Fedora's Go packaging implementation to use vendor source files instead of nuking them... Know a better way? PLEASE let me know.
%if 0%{?fedora}
rm -rf "%{_builddir}/%{extractdir0}/_build/src/github.com/shazow/ssh-chat"
ln -s "%{_builddir}/%{name}-%{version}" "%{_builddir}/%{extractdir0}/_build/src/github.com/shazow/ssh-chat"
%gobuild -o %{gobuilddir}/bin/%{name} %{goipath}/cmd/ssh-chat
%endif
%install
export GOFLAGS="-mod=vendor"
%if 0%{?suse_version}
%goinstall
%gosrc
%endif
%if 0%{?suse_version}
%fdupes %{buildroot}%{_datadir}/go
install -d -m 755 %{buildroot}%{_sbindir}
ln -s /usr/sbin/service %{buildroot}%{_sbindir}/rcssh-chat
%endif
%if 0%{?fedora}
install -m 0755 -vd %{buildroot}%{_bindir}
install -m 0755 -vp %{gobuilddir}/bin/* %{buildroot}%{_bindir}/
%endif
%ifarch x86_64
install -D -m 700 %{_builddir}/%{name}-%{version}/rpm/ssh-chat64.sh %{buildroot}%{_sysconfdir}/%{name}/ssh-chat.sh
%else
install -D -m 700 %{_builddir}/%{name}-%{version}/rpm/ssh-chat.sh %{buildroot}%{_sysconfdir}/%{name}/ssh-chat.sh
%endif
install -d -m 700 %{buildroot}%{_libdir}/%{name}
ssh-keygen -f %{buildroot}%{_libdir}/%{name}/host_key -P ''
chmod 400 %{buildroot}%{_libdir}/%{name}/host_key
touch %{buildroot}%{_sysconfdir}/%{name}/admin_keys
chmod 600 %{buildroot}%{_sysconfdir}/%{name}/admin_keys
install -D -m 644 %{_builddir}/%{name}-%{version}/rpm/ssh-chat.service %{buildroot}%{_unitdir}/ssh-chat.service
%check
%if 0%{?suse_version}
export GOFLAGS="-mod=vendor"
# Architecture related testing issues: https://github.com/shazow/ssh-chat/issues/187
%ifarch i568
%gotest %{import_path}/cmd/ssh-chat
%ifarch armv7l
echo "No Go testing possible!"
%else
%gotest %{import_path}
%endif
%endif
%endif
%if 0%{?fedora}
%ifarch armv7l
echo "No Go testing possible!"
%else
%gocheck
%endif
%endif
%if 0%{?suse_version}
%gofilelist
%files -f file.lst
%{_sbindir}/rcssh-chat
%endif
%if 0%{?fedora}
%files
%endif
%{_bindir}/%{name}
%license LICENSE
%doc README.md
%dir %{_sysconfdir}/%{name}
%config(noreplace) %{_sysconfdir}/%{name}/ssh-chat.sh
%config(noreplace) %{_sysconfdir}/%{name}/admin_keys
%dir %{_libdir}/%{name}
%{_libdir}/%{name}/host_key
%{_libdir}/%{name}/host_key.pub
%{_unitdir}/ssh-chat.service
%post
%service_add_post ssh-chat.service
%preun
%service_del_preun ssh-chat.service
%postun
%service_del_postun ssh-chat.service
%changelog
* Fri Jun 04 2021 Georg Pfuetzenreuter <mail@georg-pfuetzenreuter.net> - 1.10-0.5
- Added symlink to 32bit libdir on 64bit platforms to prevent issue with the hostkey
* Wed Mar 10 2021 Georg Pfuetzenreuter <mail@georg-pfuetzenreuter.net> - 1.10-0.4
- Fixed a typo. Added Group. Experimenting with CentOS support.
* Tue Mar 09 2021 Georg Pfuetzenreuter <mail@georg-pfuetzenreuter.net> - 1.10-0.3
- Added support for additional architectures: openSUSE Tumbleweed i586 and openSUSE ARM armv7l
* Tue Mar 09 2021 Georg Pfuetzenreuter <mail@georg-pfuetzenreuter.net> - 1.10-0.2
- Added support for Fedora
* Sun Mar 07 2021 Georg Pfuetzenreuter <mail@georg-pfuetzenreuter.net> - 1.10-0.1
- First ssh-chat package