diff --git a/quassel.conf b/quassel.conf new file mode 100644 index 0000000..3472bec --- /dev/null +++ b/quassel.conf @@ -0,0 +1,2 @@ +LISTEN=127.0.0.1 +PORT=4242 \ No newline at end of file diff --git a/quassel.spec b/quassel.spec index 344e5e0..b84d293 100755 --- a/quassel.spec +++ b/quassel.spec @@ -1,7 +1,10 @@ +%global quassel_user quassel +%global quassel_data_dir %{_var}/lib/quassel + Name: quassel Summary: A modern distributed IRC system Version: 0.12.3 -Release: 1%{?dist} +Release: 2%{?dist} License: GPLv2 or GPLv3 Group: Applications/Internet @@ -17,12 +20,20 @@ BuildRequires: openssl-devel BuildRequires: qt4-devel BuildRequires: qt4-webkit-devel +BuildRequires: systemd + Requires: oxygen-icon-theme +Requires(pre): shadow-utils + Provides: %{name}-gui = %{version}-%{release} Requires: %{name}-common = %{version}-%{release} +# Systemd service file and configuration script. +Source1: quasselcore.service +Source2: quassel.conf + %description Quassel IRC is a modern, distributed IRC client, meaning that one (or multiple) client(s) can attach @@ -79,6 +90,17 @@ make install/fast DESTDIR=${RPM_BUILD_ROOT} -C build # unpackaged files rm -f $RPM_BUILD_ROOT%{_datadir}/pixmaps/quassel.png +# Install quassel.conf for systemd file +mkdir -p $RPM_BUILD_ROOT%{_sysconfdir} +install -m 0644 %{SOURCE2} $RPM_BUILD_ROOT%{_sysconfdir}/ + +# Install systemd service file +install -d -m 0755 $RPM_BUILD_ROOT%{_unitdir} +install -p -m 0644 %{SOURCE1} $RPM_BUILD_ROOT%{_unitdir}/ + +# Home directory for quassel user +install -d -m 0750 $RPM_BUILD_ROOT%{quassel_data_dir} + %clean rm -rf $RPM_BUILD_ROOT @@ -94,6 +116,26 @@ fi %posttrans common gtk-update-icon-cache %{_kde4_iconsdir}/hicolor &> /dev/null || : +# Core pre/post macros. + +%pre core +getent group %{quassel_user} >/dev/null || groupadd -r %{quassel_user} +getent passwd %{quassel_user} >/dev/null || \ + useradd -r -g %{quassel_user} -d %{quassel_data_dir} -s /sbin/nologin \ + -c "Account to own and run the quasselcore daemon from." %{quassel_user} +exit 0 + +%post core +# Install quassel service; also give quassel user ACLs on /var/lib/quassel. +chown %{quassel_user}:%{quassel_user} %{quassel_data_dir} +%systemd_post quasselcore.service + +%preun core +%systemd_preun quasselcore.service + +%postun core +%systemd_postun_with_restart quasselcore.service + %files %defattr(-,root,root,-) %{_kde4_bindir}/quassel @@ -111,6 +153,9 @@ gtk-update-icon-cache %{_kde4_iconsdir}/hicolor &> /dev/null || : %doc COPYING README %doc gpl-2.0.txt gpl-3.0.txt %{_kde4_bindir}/quasselcore +%{quassel_data_dir} +%{_unitdir}/quasselcore.service +%config(noreplace) %{_sysconfdir}/quassel.conf %files client %defattr(-,root,root,-) @@ -119,6 +164,11 @@ gtk-update-icon-cache %{_kde4_iconsdir}/hicolor &> /dev/null || : %changelog +* Wed Feb 24 2016 Ben Rosser 0.12.3-1 +- Merged patch from John Villalovos to add a service file +- Added quassel user/group to -core subpackage +- Added configuration file and startup script to -core subpackage + * Tue Feb 09 2016 Ben Rosser 0.12.3-1 - Update to latest upstream quassel release - The CVE patch is not necessary for 0.12.3 or greater diff --git a/quasselcore.service b/quasselcore.service new file mode 100644 index 0000000..6b79f41 --- /dev/null +++ b/quasselcore.service @@ -0,0 +1,12 @@ +[Unit] +Description=Quassel core service +After=network.target + +[Service] +Type=simple +EnvironmentFile=-/etc/quassel.conf +User=quassel +ExecStart=/usr/bin/quasselcore --configdir=/var/lib/quassel --listen=${LISTEN} --port=${PORT} + +[Install] +WantedBy=multi-user.target