Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
server:irc
ergo
ergo.spec
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File ergo.spec of Package ergo
# # spec file for package ergo # # Copyright (c) 2024 SUSE LLC # Copyright (c) 2022-2024 Georg Pfuetzenreuter <mail+rpm@georg-pfuetzenreuter.net> # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed # upon. The license for this file, and modifications and additions to the # file, is the same license as for the pristine package itself (unless the # license for the pristine package is not an Open Source License, in which # case the license is the MIT License). An "Open Source License" is a # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. # Please submit bugfixes or comments via https://bugs.opensuse.org/ # # `osc service ra && awk '/^go/{print $2}' ergo/go.mod` %define minimum_gover 1.21 %if 0%{?mageia} #work around Mageia bug "/usr/lib/rpm/redhat/brp-mangle-shebangs: Permission denied" %undefine __brp_mangle_shebangs %endif %bcond_without systemd %if 0%{?suse_version} %bcond_without sysuser %endif Name: ergo Version: 2.13.1 Release: 0 Summary: IRCv3 Server License: MIT Group: Productivity/Networking/IRC URL: https://ergo.chat/ Source0: %{name}-%{version}.tar.gz Source1: vendor.tar.gz Source2: system-user-ergo.conf Source3: apparmor-%{name} Patch0: default.yaml.patch Patch1: ergo.service.patch # Common dependencies: %if !0%{?mageia} # maybe pkgconfig would work? BuildRequires: systemd-rpm-macros %endif %if ! %{with sysuser} Requires(pre): %{_bindir}/getent Requires(pre): %{_sbindir}/useradd %endif # Include fdupes where possible: %if 0%{?suse_version} || 0%{?fedora} BuildRequires: fdupes %endif # Dependencies for openSUSE and SLES: %if 0%{?suse_version} BuildRequires: go >= %{minimum_gover} BuildRequires: golang-packaging BuildRequires: apparmor-rpm-macros %endif %if %{with sysuser} BuildRequires: sysuser-tools %sysusers_requires %endif # Dependencies shared by Fedora and CentOS: %if 0%{?fedora} || 0%{?centos_version} BuildRequires: go-rpm-macros BuildRequires: golang >= %{minimum_gover} %endif %if 0%{?fedora} || 0%{?centos_version} %gopkg %endif %if 0%{?mageia} %gopkg BuildRequires: golang %endif %if %{with systemd} BuildRequires: pkgconfig(systemd) %systemd_ordering %endif %{go_nostrip} %define commit %(awk '/^commit/{print $2}' %{_sourcedir}/%{name}.obsinfo) %description Ergo is a modern IRC server written in Go. %prep %setup -q -n %{name}-%{version} %autopatch -p1 %setup -q -T -D -a 1 %build go build -mod=vendor -v -p 4 -x -buildmode=pie -ldflags="-w -X main.commit=%{commit} -X main.version=" %if %{with sysuser} %sysusers_generate_pre %{SOURCE2} %{name} system-user-ergo.conf %endif %install install -v -d -m 0755 %{buildroot}%{_bindir} %{buildroot}%{_sbindir} %{buildroot}%{_datadir}/%{name}/languages install -v -d -m 0750 %{buildroot}%{_sysconfdir}/%{name} %{buildroot}%{_sysconfdir}/ssl/%{name} %{buildroot}%{_sharedstatedir}/%{name} %{buildroot}%{_unitdir} %{buildroot}%{_sysusersdir} install -v -m 0755 %{name} %{buildroot}%{_bindir} install -v -m 0660 %{_builddir}/%{name}-%{version}/default.yaml %{buildroot}%{_sysconfdir}/%{name}/ircd.yaml %if %{with systemd} install -v -m 0644 %{_builddir}/%{name}-%{version}/distrib/systemd/%{name}.service %{buildroot}%{_unitdir}/%{name}.service %endif %if %{with sysuser} install -v -m 0644 %{SOURCE2} %{buildroot}%{_sysusersdir} %endif %if 0%{?suse_version} install -v -D -m 0644 %{SOURCE3} %{buildroot}%{_sysconfdir}/apparmor.d/usr.bin.%{name} ln -s %{_sbindir}/service %{buildroot}%{_sbindir}/rc%{name} %endif find %{_builddir}/%{name}-%{version}/languages -maxdepth 1 -type f \( -name '*.json' -o -name '*.yaml' \) \ -execdir install -m 0644 '{}' %{buildroot}%{_datadir}/%{name}/languages \; %if 0%{?suse_version} || 0%{?fedora} %fdupes %{buildroot}/%{_datadir} %endif %check %if 0%{?suse_version} %{gotest} github.com/ergochat/ergo %endif %if 0%{?fedora} || 0%{?centos_version} %gocheck %endif %files %if %{with sysuser} %{_sysusersdir}/system-user-ergo.conf %endif %if 0%{?suse_version} %{_sbindir}/rc%{name} %dir %{_sysconfdir}/apparmor.d %config %attr(644,root,root) %{_sysconfdir}/apparmor.d/usr.bin.%{name} %endif %license LICENSE %doc README.md %attr(755,root,root) %{_bindir}/%{name} %dir %attr (755,root,ergo) %{_sysconfdir}/%{name} %dir %{_sysconfdir}/ssl %dir %attr (750,root,ergo) %{_sysconfdir}/ssl/%{name} %dir %attr (700,ergo,ergo) %{_sharedstatedir}/%{name} %attr (-,root,ergo) %config(noreplace) %{_sysconfdir}/%{name}/ircd.yaml %ghost %attr (640,root,ergo) %{_sysconfdir}/ssl/%{name}/crt %ghost %attr (640,root,ergo) %{_sysconfdir}/ssl/%{name}/key %dir %{_datadir}/%{name} %dir %{_datadir}/%{name}/languages %{_datadir}/%{name}/languages/*.json %{_datadir}/%{name}/languages/*.yaml %if %{with systemd} %{_unitdir}/%{name}.service %endif %if ! %{with sysuser} %pre %{_bindir}/getent group ergo > /dev/null || %{_sbindir}/groupadd -r ergo %{_bindir}/getent passwd ergo > /dev/null || %{_sbindir}/useradd -r -g ergo -d %{_sharedstatedir}/ergo -s /sbin/nologin ergo %endif %if %{with sysuser} %pre -f ergo.pre %if %{with systemd} %if 0%{?suse_version} %service_add_pre ergo.service %endif %endif %endif %if %{with systemd} %preun %if 0%{?suse_version} %service_del_preun ergo.service %endif %if 0%{?fedora} || 0%{?centos_version} %systemd_preun ergo.service %endif %endif %post %if %{with systemd} %if 0%{?suse_version} %apparmor_reload usr.bin.%{name} %service_add_post ergo.service %endif %if 0%{?fedora} || 0%{?centos_version} %systemd_post ergo.service %endif %endif ergo_upgradedb() { su %{name} -s /bin/sh -c '%{_bindir}/%{name} upgradedb --conf %{_sysconfdir}/%{name}/ircd.yaml' } if [ $1 -eq 1 ] then if [ ! -f %{_sysconfdir}/ssl/%{name}/crt -a ! -f %{_sysconfdir}/ssl/%{name}/key ] then if %{_bindir}/%{name} mkcerts --conf %{_sysconfdir}/%{name}/ircd.yaml --quiet then chown root:ergo %{_sysconfdir}/ssl/%{name}/crt chown root:ergo %{_sysconfdir}/ssl/%{name}/key chmod 640 %{_sysconfdir}/ssl/%{name}/key echo "Generated a self signed certificate. Please replace %{_sysconfdir}/ssl/%{name}/crt and %{_sysconfdir}/ssl/%{name}/key for production use." fi fi fi if [ -f %{_sharedstatedir}/%{name}/ircd.db ] then if systemctl -q is-active ergo then if [ $1 -gt 1 ] then # assume default value for systems without /etc/sysconfig/services DISABLE_RESTART_ON_UPDATE=no if [ -f /etc/sysconfig/services ] then . /etc/sysconfig/services fi if [ "$DISABLE_RESTART_ON_UPDATE" == 'no' ] then if [ -f %{_sharedstatedir}/%{name}/ircd.db ] then echo 'Stopping ergo ...' systemctl stop ergo if systemctl -q is-active ergo then echo 'WARNING: Failed to stop Ergo, database will not be upgraded! Investigate this manually.' else ergo_upgradedb echo 'Starting ergo ...' systemctl start ergo if ! systemctl -q is-active ergo then echo 'WARNING: Failed to start Ergo, you need to investigate this.' fi fi fi else echo 'NOTE: DISABLE_RESTART_ON_UPDATE is enabled!' echo 'If you do not have Ergo configured with "autoupgrade: true", you need to manually perform an offline database upgrade!' fi fi else # ergo is not running, an upgradedb call can't hurt ergo_upgradedb fi else if su %{name} -s /bin/sh -c '%{_bindir}/%{name} initdb --conf %{_sysconfdir}/%{name}/ircd.yaml --quiet' then chown ergo:ergo %{_sharedstatedir}/%{name}/ircd.db chmod 600 %{_sharedstatedir}/%{name}/ircd.db fi fi if [ $1 -eq 1 ] then 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 %{_sysconfdir}/ergo/ircd.yaml" fi %if %{with systemd} %postun %if 0%{?suse_version} %service_del_postun ergo.service %endif %if 0%{?fedora} || 0%{?centos_version} %systemd_postun ergo.service %endif %endif %changelog
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor