[PATCH 2/4] Add systemd unit file for kojid
Mike McLean
mikem at redhat.com
Sat Jun 6 21:27:36 UTC 2015
On 06/06/2015 04:05 PM, Dennis Gilmore wrote:
> From: Zbigniew Jędrzejewski-Szmek <zbyszek at in.waw.pl>
>
> Signed-off-by: Dennis Gilmore <dennis at ausil.us>
> ---
> Makefile | 3 ++-
> builder/Makefile | 19 +++++++++++++------
> builder/kojid.service | 14 ++++++++++++++
> koji.spec | 39 +++++++++++++++++++++++++++++++++++++--
> 4 files changed, 66 insertions(+), 9 deletions(-)
> create mode 100644 builder/kojid.service
>
> diff --git a/Makefile b/Makefile
> index b9c23bf..d5e9b77 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -105,6 +105,7 @@ force-tag::
> # @$(MAKE) tag TAG_OPTS="-F $(TAG_OPTS)"
>
> DESTDIR ?= /
> +TYPE = systemd
> install:
> @if [ "$(DESTDIR)" = "" ]; then \
> echo " "; \
> @@ -115,4 +116,4 @@ install:
> mkdir -p $(DESTDIR)
>
> for d in $(SUBDIRS); do make DESTDIR=`cd $(DESTDIR); pwd` \
> - -C $$d install; [ $$? = 0 ] || exit 1; done
> + -C $$d install TYPE=$(TYPE); [ $$? = 0 ] || exit 1; done
> diff --git a/builder/Makefile b/builder/Makefile
> index 02bae11..1de0a9c 100644
> --- a/builder/Makefile
> +++ b/builder/Makefile
> @@ -1,6 +1,7 @@
> -
> BINFILES = kojid
> LIBEXECFILES = mergerepos
> +SYSTEMDSYSTEMUNITDIR = $(shell pkg-config systemd --variable=systemdsystemunitdir)
> +TYPE = systemd
>
> _default:
> @echo "nothing to make. try make install"
> @@ -9,7 +10,7 @@ clean:
> rm -f *.o *.so *.pyc *~
>
>
> -install:
> +_install:
> @if [ "$(DESTDIR)" = "" ]; then \
> echo " "; \
> echo "ERROR: A destdir is required"; \
> @@ -23,13 +24,19 @@ install:
> install -p -m 755 $(LIBEXECFILES) $(DESTDIR)/usr/libexec/kojid
>
> mkdir -p $(DESTDIR)/etc/mock/koji
> +
> + mkdir -p $(DESTDIR)/etc/kojid
> + install -p -m 644 kojid.conf $(DESTDIR)/etc/kojid/kojid.conf
> +
> +install-systemd: _install
> + mkdir -p $(DESTDIR)$(SYSTEMDSYSTEMUNITDIR)
> + install -p -m 644 kojid.service $(DESTDIR)$(SYSTEMDSYSTEMUNITDIR)
> +
> +install-sysv: _install
> mkdir -p $(DESTDIR)/etc/rc.d/init.d
> install -p -m 755 kojid.init $(DESTDIR)/etc/rc.d/init.d/kojid
>
> mkdir -p $(DESTDIR)/etc/sysconfig
> install -p -m 644 kojid.sysconfig $(DESTDIR)/etc/sysconfig/kojid
>
> - mkdir -p $(DESTDIR)/etc/kojid
> - install -p -m 644 kojid.conf $(DESTDIR)/etc/kojid/kojid.conf
> -
> -
> +install: install-$(TYPE)
> diff --git a/builder/kojid.service b/builder/kojid.service
> new file mode 100644
> index 0000000..1886a44
> --- /dev/null
> +++ b/builder/kojid.service
> @@ -0,0 +1,14 @@
> +[Unit]
> +Description=Koji build server
> +Documentation=https://fedoraproject.org/wiki/Koji/ServerHowTo
> +
> +After=network.target
> +
> +[Service]
> +ExecStart=/usr/sbin/kojid \
> + --fg \
> + --force-lock \
> + --verbose
With --fg, kojid will log both to kojid.log and stderr. Maybe we should
add an option to turn off the latter, or just automatically do it in the
--fg case.
This isn't terrible, just inefficient. We should probably adjust this.
Working on a patch...
> +
> +[Install]
> +WantedBy=multi-user.target
> diff --git a/koji.spec b/koji.spec
> index c2b1af4..82df76e 100644
> --- a/koji.spec
> +++ b/koji.spec
> @@ -1,5 +1,12 @@
> %{!?python_sitelib: %define python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")}
>
> +%if 0%{?fedora} >= 21 || 0%{?redhat} >= 7
> +%global use_systemd 1
> +%else
> +%global use_systemd 0
> +%global install_opt TYPE=sysv
> +%endif
> +
> %define baserelease 1
> #build with --define 'testbuild 1' to have a timestamp appended to release
> %if "x%{?testbuild}" == "x1"
> @@ -23,6 +30,10 @@ Requires: rpm-python
> Requires: pyOpenSSL
> Requires: python-urlgrabber
> BuildRequires: python
> +%if %{use_systemd}
> +BuildRequires: systemd
> +BuildRequires: pkgconfig
> +%endif
>
> %description
> Koji is a system for building and tracking RPMS. The base package
> @@ -63,11 +74,17 @@ License: LGPLv2 and GPLv2+
> #mergerepos (from createrepo) is GPLv2+
> Requires: %{name} = %{version}-%{release}
> Requires: mock >= 0.9.14
> +Requires(pre): /usr/sbin/useradd
> +%if %{use_systemd}
> +Requires(post): systemd
> +Requires(preun): systemd
> +Requires(postun): systemd
> +%else
> Requires(post): /sbin/chkconfig
> Requires(post): /sbin/service
> Requires(preun): /sbin/chkconfig
> Requires(preun): /sbin/service
> -Requires(pre): /usr/sbin/useradd
> +%endif
> Requires: /usr/bin/cvs
> Requires: /usr/bin/svn
> Requires: /usr/bin/git
> @@ -135,7 +152,7 @@ koji-web is a web UI to the Koji system.
>
> %install
> rm -rf $RPM_BUILD_ROOT
> -make DESTDIR=$RPM_BUILD_ROOT install
> +make DESTDIR=$RPM_BUILD_ROOT %{?install_opt} install
>
> %clean
> rm -rf $RPM_BUILD_ROOT
> @@ -192,8 +209,12 @@ rm -rf $RPM_BUILD_ROOT
> %{_sbindir}/kojid
> %dir %{_libexecdir}/kojid
> %{_libexecdir}/kojid/mergerepos
> +%if %{use_systemd}
> +%{_unitdir}/kojid.service
> +%else
> %{_initrddir}/kojid
> %config(noreplace) %{_sysconfdir}/sysconfig/kojid
> +%endif
> %dir %{_sysconfdir}/kojid
> %config(noreplace) %{_sysconfdir}/kojid/kojid.conf
> %attr(-,kojibuilder,kojibuilder) %{_sysconfdir}/mock/koji
> @@ -201,6 +222,19 @@ rm -rf $RPM_BUILD_ROOT
> %pre builder
> /usr/sbin/useradd -r -s /bin/bash -G mock -d /builddir -M kojibuilder 2>/dev/null ||:
>
> +%if %{use_systemd}
> +
> +%post builder
> +%systemd_post kojid.service
> +
> +%preun builder
> +%systemd_preun kojid.service
> +
> +%postun builder
> +%systemd_postun kojid.service
> +
> +%else
> +
> %post builder
> /sbin/chkconfig --add kojid
>
> @@ -209,6 +243,7 @@ if [ $1 = 0 ]; then
> /sbin/service kojid stop &> /dev/null
> /sbin/chkconfig --del kojid
> fi
> +%endif
>
> %files vm
> %defattr(-,root,root)
>
More information about the koji-devel
mailing list