ergo-rpm/ergo.spec

191 lines
5.5 KiB
RPMSpec
Raw Normal View History

2021-06-04 11:47:59 +02:00
Name: ergo
Version: v2.7.0rc1+2
Release: 0
2021-06-04 11:47:59 +02:00
Group: Productivity/Networking/IRC
Summary: IRCv3 Server
License: MIT
URL: https://oragono.io
#Original source:
#https://github.com/ergochat/ergo/tree/master
#Modified source (custom ircd.yaml configuration and systemd unit file):
Source0: %{name}-%{version}.tar.gz
#Go source:
Source1: vendor.tar.gz
Patch0: default.yaml.patch
Patch1: ergo.service.patch
# Dependencies for openSUSE:
2021-06-04 11:47:59 +02:00
%if 0%{?suse_version}
BuildRequires: go >= 1.16
BuildRequires: golang-packaging systemd-rpm-macros systemd fdupes
Requires(pre): /usr/sbin/useradd, /usr/bin/getent
%endif
# Dependencies for Fedora:
2021-06-04 11:47:59 +02:00
%if 0%{?fedora}
BuildRequires: golang go-rpm-macros systemd systemd-rpm-macros fdupes
Requires(pre): /usr/sbin/useradd, /usr/bin/getent
%endif
%define __arch_install_post export NO_BRP_STRIP_DEBUG=true
%global provider_prefix github.com/ergochat/ergo
%global import_path %{provider_prefix}
# Make go-rpm-macros happy!
%if 0%{?fedora}
%global goipath github.com/ergochat/ergo
%global debug_package %{nil}
%endif
# Okay openSUSE, let's stretch first!
%if 0%{?suse_version}
%{go_nostrip}
%{go_provides}
%endif
# Come on Fedora, you go along!
%if 0%{?fedora}
%gopkg
%endif
%description
Ergo is a modern IRC server written in Go.
2021-06-04 11:47:59 +02:00
#A pretty cool one, that is!
%pre
# Introducing Ms. Oragono!
2021-06-04 11:47:59 +02:00
/usr/bin/getent group ergo || /usr/sbin/groupadd -r ergo
/usr/bin/getent passwd ergo || /usr/sbin/useradd -r -g ergo -d /etc/ergo -s /sbin/nologin ergo
%if 0%{?suse_version}
%service_add_pre ergo.service
%endif
%prep
# Alright openSUSE, here we go!
%setup -q -n %{name}-%{version}
%patch0 -p1
%patch1 -p1
2021-06-04 11:47:59 +02:00
# Oh Fedora, you having bit of an headstart, eh?
%if 0%{?fedora}
%goprep
%endif
%setup -q -T -D -a 1
%build
export GOFLAGS="-mod=vendor"
# "I'm prepping too now!! Don't rush me!", shouts openSUSE
%if 0%{?suse_version}
%goprep %{import_path}
%gobuild .
%endif
# S'ok! I've got some extra work here...
%if 0%{?fedora}
rm -rf "%{_builddir}/%{extractdir0}/_build/src/github.com/ergochat/ergo"
ln -s "%{_builddir}/%{name}-%{version}" "%{_builddir}/%{extractdir0}/_build/src/github.com/ergochat/ergo"
%gobuild -o %{gobuilddir}/bin/%{name} %{goipath}/irc
%endif
%install
# And.. installaction!
%if 0%{?suse_version}
%goinstall
%gosrc
%endif
# "Lame", moans Fedora, "I'm lifting some extra weights, not use some weird macro for my copyjobs!"
%if 0%{?fedora}
install -m 0755 -vd %{buildroot}%{_bindir}
install -m 0755 -vp %{gobuilddir}/bin/* %{buildroot}%{_bindir}/
%endif
# However after a short fight between the two, they continue doing some tasks in common, and achieve great teamwork.
install -d -m 700 %{buildroot}%{_sysconfdir}/%{name}
install -D -m 600 %{_builddir}/%{name}-%{version}/default.yaml %{buildroot}%{_sysconfdir}/%{name}/ircd.yaml
install -D -m 644 %{_builddir}/%{name}-%{version}/distrib/systemd/%{name}.service %{buildroot}%{_unitdir}/%{name}.service
2021-06-04 11:47:59 +02:00
install -d -m 755 %{buildroot}%{_sbindir}
ln -s %{_sbindir}/service %{buildroot}%{_sbindir}/rc%{name}
%check
# Let's see who made their job well...
%if 0%{?suse_version}
%gotest %{import_path}
%endif
%if 0%{?fedora}
%gocheck
%endif
# Alright, time to sum things up!!
# "Hah, I have a nice filelist ready to go!"
%if 0%{?suse_version}
%gofilelist
%files -f file.lst
%endif
# "Says the one WHO NEEDS a filelist!"
%if 0%{?fedora}
%files
%endif
%license LICENSE
%doc README.md
%attr(750,ergo,ergo) %{_bindir}/%{name}
%dir %attr (700,ergo,ergo) %{_sysconfdir}/%{name}
%attr (-,ergo,ergo) %config(noreplace) %{_sysconfdir}/%{name}/ircd.yaml
%{_unitdir}/%{name}.service
%{_sbindir}/rc%{name}
%post
# Some finishing touches, Fedora and openSUSE walk hand in hand, through filesystem's wonderland!
%if 0%{?suse_version}
%service_add_post ergo.service
%endif
%if 0%{?fedora}
%systemd_post ergo.service
%endif
install -d -o ergo -g ergo -m 700 %{_sysconfdir}/%{name}/.sec
%{_bindir}/%{name} mkcerts --conf %{_sysconfdir}/%{name}/ircd.yaml || true
%{_bindir}/%{name} initdb --conf %{_sysconfdir}/%{name}/ircd.yaml || true
chown ergo:ergo %{_sysconfdir}/%{name}/.sec/fullchain.pem
chown ergo:ergo %{_sysconfdir}/%{name}/.sec/privkey.pem
chown ergo:ergo %{_sysconfdir}/%{name}/ircd.db
chmod 600 %{_sysconfdir}/%{name}/ircd.db
# Nice! All the distros cheer in excitement about the newly installed package!
echo "Welcome to Ergo!"
echo "To enable the service (auto-start): sudo systemctl enable ergo"
echo "To start the service now: sudo systemctl start ergo"
echo "The configuration is located in /etc/ergo/ircd.yaml"
%preun
%if 0%{?suse_version}
%service_del_preun ergo.service
%endif
%if 0%{?fedora}
%systemd_preun ergo.service
%endif
%postun
#%if 0%{?suse_version}
#%service_del_postun_without_restart ergo.service
#%endif
%if 0%{?fedora}
%systemd_postun ergo.service
%endif
echo "NOTE - The ergo.service does NOT restart automatically."
# Rants from some h00man
%changelog
* Sun Jun 06 2021 Georg Pfuetzenreuter <mail@georg-pfuetzenreuter.net> - 2.7.0-3
- Removing CentOS blocks due to unresolved incompatibilities.
* Sun Jun 06 2021 Georg Pfuetzenreuter <mail@georg-pfuetzenreuter.net> - 2.7.0-2
- Removing some empty comment lines which looked nice initially, but made the file very long.
- Added debugpackage workaround to (hopefully) solve compatibility with CentOS.
- Changed description from Oragono to Ergo.
2021-06-04 11:47:59 +02:00
* Sun Mar 07 2021 Georg Pfuetzenreuter <mail@georg-pfuetzenreuter.net> - 2.7.0-1
- Initial release of the Ergo v2.7.0 RPM package (deprecating the Oragono package)