pagure/pagure.spec
Neal Gompa 72ad7b0f34 - Update to 5.8
+ Enable the ctrl-enter keys to submit forms on tickets and PRs
  + Fix spelling errors on documentation
  + Fix renewing url on invalid token error message
  + Various fixes to the srcfpo theme
  + disable smooth scrolling on initial highlight & scroll process
  + Accept a with_commits parameter on the branches api to resolve the HEAD commits
  + Various fixes to the PR view
  + Add support for arrow >= 0.15
  + Select full text on git|ssh url input boxes when they get focus
  + Send notification when a branch is created
  + Add revision along with tag/branch creation/deletion
  + Add asciidoc syntax override
  + Fix git blame on unborn HEAD or non-master default branch repos
  + Fix the logic to rebase PRs
  + Fix setting one's default email address
  + Send oldrev as old_commit for git.receive event
  + Add a set-default-branch action to pagure-admin
  + Fix rendering badges on the PR list page
  + Tweak when we show the merge and the rebase buttons
  + Fix the logic around interacting with read-only databases in hooks
  + Fix .diff and .patch generation for empty commits
  + Fix url on the invalid token error message
  + Fix typo on the pull request merge error message
  + Allow cross-project API token to open pull-request
  + Allow updating PRs via the API using cross-project tokens
  + Fix the logic to make the merge button appear on pull-request

OBS-URL: https://build.opensuse.org/package/show/devel:tools:scm/pagure?expand=0&rev=23
2019-11-16 22:57:32 +00:00

655 lines
22 KiB
RPMSpec

#
# spec file for package pagure
#
# Copyright (c) 2019 Neal Gompa <ngompa13@gmail.com>.
#
# 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 http://bugs.opensuse.org/
#
# Prevent dep generators from trying to process static stuff and stall out
# We only need to read the python metadata anyway
%global __provides_exclude_from ^%{python3_sitelib}/pagure/.*$
%global __requires_exclude_from ^%{python3_sitelib}/pagure/.*$
Name: pagure
Version: 5.8
Release: 0
Summary: A git-centered forge
Group: Development/Tools/Version Control
# Pagure itself is GPL-2.0-or-later; flask_fas_openid.py is LGPL-2.1-or-later
License: GPL-2.0-or-later AND LGPL-2.1-or-later
URL: https://pagure.io/pagure
Source0: https://pagure.io/releases/pagure/%{name}-%{version}.tar.gz
# Vendor in the single file from python-fedora that's needed
# This way, we avoid having to pull in all of python-fedora
# This file is licensed LGPL-2.1-or-later, per https://github.com/fedora-infra/python-fedora/blob/develop/README.rst#license
Source1: https://raw.githubusercontent.com/fedora-infra/python-fedora/4719f10b3af1cf068e969387eab7df7e935003cd/flask_fas_openid.py
# SUSE-specific README providing a quickstart guide
Source10: pagure-README.SUSE
# Backports from upstream
# Not yet upstreamable patches
## Allow Pagure to use SQLAlchemy >= 1.3.0
Patch0501: 0501-Revert-Add-a-upper-limit-to-sqlalchemy.patch
# SUSE-specific fixes
## Change the defaults in the example config to match packaging
Patch1000: pagure-5.0-default-example-cfg.patch
BuildArch: noarch
BuildRequires: apache2
BuildRequires: fdupes
BuildRequires: systemd-rpm-macros
BuildRequires: python3-devel
BuildRequires: python3-setuptools
BuildRequires: python3-alembic
BuildRequires: python3-arrow
BuildRequires: python3-bcrypt
BuildRequires: python3-binaryornot
BuildRequires: python3-bleach
BuildRequires: python3-blinker
BuildRequires: python3-chardet
BuildRequires: python3-cryptography
BuildRequires: python3-docutils
BuildRequires: python3-Flask
BuildRequires: python3-Flask-WTF
BuildRequires: python3-Markdown
BuildRequires: python3-nose
BuildRequires: python3-Pillow
BuildRequires: python3-psutil
BuildRequires: python3-pygit2 >= 0.26.0
#BuildRequires: python3-fedora-flask
BuildRequires: python3-python3-openid
BuildRequires: python3-python-openid-cla
BuildRequires: python3-python-openid-teams
BuildRequires: python3-SQLAlchemy >= 0.8
BuildRequires: python3-straight-plugin
BuildRequires: python3-WTForms
BuildRequires: python3-munch
BuildRequires: python3-redis
# We require OpenSSH 7.4+ for SHA256 support
Requires: openssh >= 7.4
Requires: python3-alembic
Requires: python3-arrow
Requires: python3-bcrypt
Requires: python3-binaryornot
Requires: python3-bleach
Requires: python3-blinker
Requires: python3-celery
Requires: python3-chardet
Requires: python3-cryptography
Requires: python3-docutils
Requires: python3-Flask
Requires: python3-Flask-WTF
Requires: python3-Markdown
Requires: python3-Pillow
Requires: python3-psutil
Requires: python3-pygit2 >= 0.26.0
#Requires: python3-fedora-flask
Requires: python3-python3-openid
Requires: python3-python-openid-cla
Requires: python3-python-openid-teams
Requires: python3-SQLAlchemy > 0.8
Requires: python3-straight-plugin
Requires: python3-WTForms
Requires: python3-munch
Requires: python3-redis
Requires: apache2-mod_wsgi-python3
# Required for celery
Requires: python3-pytz
# Required for database setup/migrations
Requires: python3-dbm
Requires: python3-kitchen
Requires: python3-requests
# If using PostgreSQL, the correct driver should be installed
Recommends: (python3-psycopg2 if postgresql-server)
# If using MariaDB/MySQL, the correct driver should be installed
Recommends: (python3-PyMySQL if mysql-server)
# The default theme is required
Requires: %{name}-theme-default
%{?systemd_requires}
# We use the git tools for some actions due to deficiencies in libgit2 and pygit2
Requires: git-core
# No dependency of the app per se, but required to make it working.
OrderWithRequires: gitolite >= 3.0
Requires(pre): gitolite >= 3.0
Requires: gitolite >= 3.0
Requires(post): user(wwwrun)
%description
Pagure is a git-centered forge based on pygit2.
Currently, Pagure offers a web-interface for git repositories, a ticket
system and possibilities to create new projects, fork existing ones and
create/merge pull-requests across or within projects.
For steps on how to set up the system after installing this package,
please read %{_docdir}/%{name}/README.SUSE.
%package theme-upstream
Summary: Base theme for the Pagure web interface
Requires: %{name} = %{version}-%{release}
%description theme-upstream
This package provides the web interface assets for styling
a Pagure server with the base upstream look and feel.
%package theme-pagureio
Summary: Pagure web interface theme used on Pagure.io
Requires: %{name} = %{version}-%{release}
%description theme-pagureio
This package provides the web interface assets for styling
a Pagure server with the same look and feel as Pagure.io.
%package theme-srcfpo
Summary: Pagure web interface theme used on src.fedoraproject.org
Requires: %{name} = %{version}-%{release}
%description theme-srcfpo
This package provides the web interface assets for styling
a Pagure server with the same look and feel as src.fedoraproject.org.
%package theme-chameleon
Summary: Pagure web interface theme based on openSUSE's chameleon theme
Requires: %{name} = %{version}-%{release}
%description theme-chameleon
This package provides the web interface assets for styling
a Pagure server with the same look and feel as openSUSE Infrastructure.
%package theme-default-upstream
Summary: Configuration for pagure to default to the upstream web interface theme
Conflicts: %{name}-theme-default
Provides: %{name}-theme-default
Requires: %{name}-theme-upstream = %{version}-%{release}
%description theme-default-upstream
This package sets the default web interface assets used for
a Pagure server running as shipped by upstream.
%package theme-default-openSUSE
Summary: Configuration for pagure to default to the openSUSE web interface theme
Conflicts: %{name}-theme-default
Provides: %{name}-theme-default
Requires: %{name}-theme-chameleon = %{version}-%{release}
Enhances: (%{name} and branding-openSUSE)
RemovePathPostfixes: .openSUSE
%description theme-default-openSUSE
This package sets the default web interface assets used for
a Pagure server running on openSUSE.
%package milters
Summary: Milter to integrate pagure with emails
BuildRequires: systemd-rpm-macros
Requires: %{name} = %{version}-%{release}
Requires: python3-pymilter
%{?systemd_requires}
# It would work with sendmail but we configure things (like the tempfile)
# to work with postfix
Requires: postfix
%description milters
Milters (Mail filters) allowing the integration of pagure and emails.
This is useful for example to allow commenting on a ticket by email.
%package ev
Summary: EventSource server for pagure
BuildRequires: systemd-rpm-macros
Requires: %{name} = %{version}-%{release}
Requires: python3-Trololio
%{?systemd_requires}
%description ev
Pagure comes with an eventsource server allowing live update of the pages
supporting it. This package provides it.
%package webhook
Summary: Web-Hook server for pagure
BuildRequires: systemd-rpm-macros
Requires: %{name} = %{version}-%{release}
%{?systemd_requires}
%description webhook
Pagure comes with an webhook server allowing http callbacks for any action
done on a project. This package provides it.
%package ci
Summary: A CI service for pagure
BuildRequires: systemd-rpm-macros
Requires: %{name} = %{version}-%{release}
Requires: python3-python-jenkins
%{?systemd_requires}
%description ci
Pagure comes with a continuous integration service, currently supporting
only jenkins but extendable to others.
With this service, your CI server will be able to report the results of the
build on the pull-requests opened to your project.
%package logcom
Summary: The logcom service for pagure
BuildRequires: systemd-rpm-macros
Requires: %{name} = %{version}-%{release}
%{?systemd_requires}
%description logcom
pagure-logcom contains the service that logs commits into the database so that
the activity calendar heatmap is filled.
%package loadjson
Summary: The loadjson service for pagure
BuildRequires: systemd-rpm-macros
Requires: %{name} = %{version}-%{release}
%{?systemd_requires}
%description loadjson
pagure-loadjson is the service allowing to update the database with the
information provided in the JSON blobs that are stored in the tickets (and
in the future pull-requests) git repo.
%package mirror
Summary: The mirroring service for pagure
BuildRequires: systemd-rpm-macros
Requires: %{name} = %{version}-%{release}
%{?systemd_requires}
%description mirror
pagure-mirror is the service mirroring projects that asked for it outside
of this pagure instance.
%prep
%autosetup -p1
# Vendor in the file needed from python-fedora
install -pm 0644 %{SOURCE1} pagure/ui
sed -e "s/import flask_fas_openid/from pagure.ui import flask_fas_openid as flask_fas_openid/" -i pagure/ui/fas_login.py
# Install README.SUSE file
install -pm 0644 %{SOURCE10} README.SUSE
%build
%py3_build
%install
%py3_install
# Install apache configuration file
mkdir -p %{buildroot}/%{_sysconfdir}/apache2/vhosts.d
install -p -m 644 files/pagure.conf %{buildroot}/%{_sysconfdir}/apache2/vhosts.d/pagure.conf
# Install configuration file
mkdir -p %{buildroot}/%{_sysconfdir}/pagure
install -p -m 644 files/pagure.cfg.sample %{buildroot}/%{_sysconfdir}/pagure/pagure.cfg
# Install WSGI file
mkdir -p %{buildroot}/%{_datadir}/pagure
install -p -m 644 files/pagure.wsgi %{buildroot}/%{_datadir}/pagure/pagure.wsgi
install -p -m 644 files/doc_pagure.wsgi %{buildroot}/%{_datadir}/pagure/doc_pagure.wsgi
# Install the createdb script
install -p -m 644 createdb.py %{buildroot}/%{_datadir}/pagure/pagure_createdb.py
# Install the api_key_expire_mail.py script
install -p -m 644 files/api_key_expire_mail.py %{buildroot}/%{_datadir}/pagure/api_key_expire_mail.py
# Install the mirror_project_in.py script
install -p -m 644 files/mirror_project_in.py %{buildroot}/%{_datadir}/pagure/mirror_project_in.py
# Install the keyhelper and aclcheck scripts
mkdir -p %{buildroot}/%{_libexecdir}/pagure
install -p -m 755 files/aclchecker.py %{buildroot}/%{_libexecdir}/pagure/aclchecker.py
install -p -m 755 files/keyhelper.py %{buildroot}/%{_libexecdir}/pagure/keyhelper.py
# Install the alembic configuration file
install -p -m 644 files/alembic.ini %{buildroot}/%{_sysconfdir}/pagure/alembic.ini
# Install the alembic revisions
cp -r alembic %{buildroot}/%{_datadir}/pagure
# Install the systemd file for the worker
mkdir -p %{buildroot}/%{_unitdir}
install -p -m 644 files/pagure_worker.service \
%{buildroot}/%{_unitdir}/pagure_worker.service
# Install the systemd file for the gitolite worker
install -p -m 644 files/pagure_gitolite_worker.service \
%{buildroot}/%{_unitdir}/pagure_gitolite_worker.service
# Install the systemd file for the web-hook
install -p -m 644 files/pagure_webhook.service \
%{buildroot}/%{_unitdir}/pagure_webhook.service
# Install the systemd file for the ci service
install -p -m 644 files/pagure_ci.service \
%{buildroot}/%{_unitdir}/pagure_ci.service
# Install the systemd file for the logcom service
install -p -m 644 files/pagure_logcom.service \
%{buildroot}/%{_unitdir}/pagure_logcom.service
# Install the systemd file for the loadjson service
install -p -m 644 files/pagure_loadjson.service \
%{buildroot}/%{_unitdir}/pagure_loadjson.service
# Install the systemd file for the mirror service
install -p -m 644 files/pagure_mirror.service \
%{buildroot}/%{_unitdir}/pagure_mirror.service
# Install the systemd file for the script sending reminder about API key
# expiration
install -p -m 644 files/pagure_api_key_expire_mail.service \
%{buildroot}/%{_unitdir}/pagure_api_key_expire_mail.service
install -p -m 644 files/pagure_api_key_expire_mail.timer \
%{buildroot}/%{_unitdir}/pagure_api_key_expire_mail.timer
# Install the systemd file for the script updating mirrored project
install -p -m 644 files/pagure_mirror_project_in.service \
%{buildroot}/%{_unitdir}/pagure_mirror_project_in.service
install -p -m 644 files/pagure_mirror_project_in.timer \
%{buildroot}/%{_unitdir}/pagure_mirror_project_in.timer
# Install the milter files
mkdir -p %{buildroot}/%{_tmpfilesdir}
install -p -m 0644 pagure-milters/milter_tempfile.conf \
%{buildroot}/%{_tmpfilesdir}/%{name}-milter.conf
install -p -m 644 pagure-milters/pagure_milter.service \
%{buildroot}/%{_unitdir}/pagure_milter.service
install -p -m 644 pagure-milters/comment_email_milter.py \
%{buildroot}/%{_datadir}/pagure/comment_email_milter.py
# Install the eventsource
mkdir -p %{buildroot}/%{_libexecdir}/pagure-ev
install -p -m 755 pagure-ev/pagure_stream_server.py \
%{buildroot}/%{_libexecdir}/pagure-ev/pagure_stream_server.py
install -p -m 644 pagure-ev/pagure_ev.service \
%{buildroot}/%{_unitdir}/pagure_ev.service
# Switch all systemd units to use the correct libexecdir
sed -e "s|/usr/libexec|%{_libexecdir}|g" -i %{buildroot}/%{_unitdir}/*.service
# Change default_config.py to use the correct libexecdir
sed -e "s|/usr/libexec|%{_libexecdir}|g" -i %{buildroot}/%{python3_sitelib}/pagure/default_config.py
# Fix the shebang for various scripts
sed -e "s|#!/usr/bin/env python|#!%{__python3}|" -i \
%{buildroot}/%{_libexecdir}/pagure-ev/*.py \
%{buildroot}/%{_libexecdir}/pagure/*.py \
%{buildroot}/%{_datadir}/pagure/*.py \
%{buildroot}/%{python3_sitelib}/pagure/hooks/files/*.py \
%{buildroot}/%{python3_sitelib}/pagure/hooks/files/hookrunner \
%{buildroot}/%{python3_sitelib}/pagure/hooks/files/post-receive \
%{buildroot}/%{python3_sitelib}/pagure/hooks/files/pre-receive \
%{buildroot}/%{python3_sitelib}/pagure/hooks/files/repospannerhook
# Switch interpreter for systemd units to correct Python interpreter
sed -e "s|/usr/bin/python|%{__python3}|g" -i %{buildroot}/%{_unitdir}/*.service
# Change to correct static file path for apache httpd
sed -e "s/pythonX.Y/python%{python3_version}/g" -i %{buildroot}/%{_sysconfdir}/apache2/vhosts.d/pagure.conf
# Make symlinks for default theme packages
mv %{buildroot}/%{python3_sitelib}/pagure/themes/default %{buildroot}/%{python3_sitelib}/pagure/themes/upstream
ln -sr %{buildroot}/%{python3_sitelib}/pagure/themes/upstream %{buildroot}/%{python3_sitelib}/pagure/themes/default
ln -sr %{buildroot}/%{python3_sitelib}/pagure/themes/chameleon %{buildroot}/%{python3_sitelib}/pagure/themes/default.openSUSE
# Run fdupes
%fdupes %{buildroot}/%{python3_sitelib}
%fdupes doc/
# Regenerate clobbered symlinks (Cf. https://pagure.io/pagure/issue/3782)
runnerhooks="post-receive pre-receive"
for runnerhook in $runnerhooks; do
rm -rf %{buildroot}/%{python3_sitelib}/pagure/hooks/files/$runnerhook
ln -sf hookrunner %{buildroot}/%{python3_sitelib}/pagure/hooks/files/$runnerhook
done
# Make the rcFOO symlinks for systemd services
mkdir -p %{buildroot}/%{_sbindir}
paguresvcs="api_key_expire_mail ci ev gitolite_worker loadjson logcom milter mirror webhook worker mirror_project_in"
for paguresvc in $paguresvcs; do
ln -sf %{_sbindir}/service %{buildroot}/%{_sbindir}/rcpagure_$paguresvc
done
# Install the basic directory structure
mkdir -p %{buildroot}/srv/www/pagure-releases
mkdir -p %{buildroot}/srv/gitolite/pseudo
mkdir -p %{buildroot}/srv/gitolite/repositories/{,docs,forks,requests,tickets}
mkdir -p %{buildroot}/srv/gitolite/remotes
mkdir -p %{buildroot}/srv/gitolite/.gitolite/{conf,keydir,logs}
# Add empty gitolite config file
touch %{buildroot}/srv/gitolite/.gitolite/conf/gitolite.conf
# Install gitolite rc file
install -p -m 644 files/gitolite3.rc %{buildroot}/srv/gitolite/.gitolite.rc
%pre
# Do nothing, but ensure dependency is evaluated...
%post
echo "Create wsgi rundir if it doesn't exist..."
mkdir -p /srv/www/run || :
echo "Setting up facls..."
setfacl -m user:wwwrun:rx --default /srv/gitolite || :
setfacl -Rdm user:wwwrun:rx /srv/gitolite || :
setfacl -Rm user:wwwrun:rx /srv/gitolite || :
echo "See %{_docdir}/%{name}/README.SUSE to continue"
%systemd_post pagure_worker.service
%systemd_post pagure_gitolite_worker.service
%systemd_post pagure_api_key_expire_mail.timer
%systemd_post pagure_mirror_project_in.timer
%post milters
%tmpfiles_create %{_tmpfilesdir}/%{name}-milter.conf
%systemd_post pagure_milter.service
%post ev
%systemd_post pagure_ev.service
%post webhook
%systemd_post pagure_webhook.service
%post ci
%systemd_post pagure_ci.service
%post logcom
%systemd_post pagure_logcom.service
%post loadjson
%systemd_post pagure_loadjson.service
%post mirror
%systemd_post pagure_mirror.service
%preun
%systemd_preun pagure_worker.service
%systemd_preun pagure_gitolite_worker.service
%systemd_preun pagure_api_key_expire_mail.timer
%systemd_preun pagure_mirror_project_in.timer
%preun milters
%systemd_preun pagure_milter.service
%preun ev
%systemd_preun pagure_ev.service
%preun webhook
%systemd_preun pagure_webhook.service
%preun ci
%systemd_preun pagure_ci.service
%preun logcom
%systemd_preun pagure_logcom.service
%preun loadjson
%systemd_preun pagure_loadjson.service
%preun mirror
%systemd_preun pagure_mirror.service
%postun
%systemd_postun_with_restart pagure_worker.service
%systemd_postun_with_restart pagure_gitolite_worker.service
%systemd_postun pagure_api_key_expire_mail.timer
%systemd_postun pagure_mirror_project_in.timer
%postun milters
%systemd_postun_with_restart pagure_milter.service
%postun ev
%systemd_postun_with_restart pagure_ev.service
%postun webhook
%systemd_postun_with_restart pagure_webhook.service
%postun ci
%systemd_postun_with_restart pagure_ci.service
%postun logcom
%systemd_postun_with_restart pagure_logcom.service
%postun loadjson
%systemd_postun_with_restart pagure_loadjson.service
%postun mirror
%systemd_postun_with_restart pagure_mirror.service
%files
%doc README.SUSE README.rst UPGRADING.rst doc/ files/gitolite3.rc files/pagure.conf files/pagure.cfg.sample
%license LICENSE
%config(noreplace) %{_sysconfdir}/apache2/vhosts.d/pagure.conf
%config(noreplace) %{_sysconfdir}/pagure/pagure.cfg
%config(noreplace) %{_sysconfdir}/pagure/alembic.ini
%dir %{_sysconfdir}/pagure/
%dir %{_datadir}/pagure/
%config(noreplace) %{_datadir}/pagure/*.wsgi
%{_datadir}/pagure/*.py*
%exclude %{_datadir}/pagure/comment_email_milter.py*
%{_datadir}/pagure/alembic/
%{_libexecdir}/pagure/
%{python3_sitelib}/pagure/
%exclude %{python3_sitelib}/pagure/themes/default
%exclude %{python3_sitelib}/pagure/themes/default.openSUSE
%exclude %{python3_sitelib}/pagure/themes/upstream
%exclude %{python3_sitelib}/pagure/themes/pagureio
%exclude %{python3_sitelib}/pagure/themes/srcfpo
%exclude %{python3_sitelib}/pagure/themes/chameleon
%{python3_sitelib}/pagure*.egg-info
%{_bindir}/pagure-admin
%{_unitdir}/pagure_worker.service
%{_unitdir}/pagure_gitolite_worker.service
%{_unitdir}/pagure_api_key_expire_mail.service
%{_unitdir}/pagure_api_key_expire_mail.timer
%{_unitdir}/pagure_mirror_project_in.service
%{_unitdir}/pagure_mirror_project_in.timer
%{_sbindir}/rcpagure_api_key_expire_mail
%{_sbindir}/rcpagure_worker
%{_sbindir}/rcpagure_gitolite_worker
%{_sbindir}/rcpagure_mirror_project_in
# Pagure data content
%attr(-,git,git) %dir /srv/gitolite/pseudo
%attr(-,git,git) %dir /srv/gitolite/remotes
%attr(-,git,git) %dir /srv/gitolite/repositories/{,docs,forks,requests,tickets}
%attr(-,git,git) %dir /srv/gitolite/.gitolite/{,conf,keydir,logs}
%attr(-,git,git) %config(noreplace) /srv/gitolite/.gitolite/conf/gitolite.conf
%attr(-,git,git) %config(noreplace) /srv/gitolite/.gitolite.rc
%attr(-,git,git) %dir /srv/www/pagure-releases
%files theme-upstream
%license LICENSE
%{python3_sitelib}/pagure/themes/upstream/
%files theme-pagureio
%license LICENSE
%{python3_sitelib}/pagure/themes/pagureio/
%files theme-srcfpo
%license LICENSE
%{python3_sitelib}/pagure/themes/srcfpo/
%files theme-chameleon
%license LICENSE
%{python3_sitelib}/pagure/themes/chameleon/
%files theme-default-upstream
%license LICENSE
%{python3_sitelib}/pagure/themes/default
%files theme-default-openSUSE
%license LICENSE
%{python3_sitelib}/pagure/themes/default.openSUSE
%files milters
%license LICENSE
%dir %{_datadir}/pagure/
%{_tmpfilesdir}/%{name}-milter.conf
%{_unitdir}/pagure_milter.service
%{_datadir}/pagure/comment_email_milter.py*
%{_sbindir}/rcpagure_milter
%files ev
%license LICENSE
%{_libexecdir}/pagure-ev/
%{_unitdir}/pagure_ev.service
%{_sbindir}/rcpagure_ev
%files webhook
%license LICENSE
%{_unitdir}/pagure_webhook.service
%{_sbindir}/rcpagure_webhook
%files ci
%license LICENSE
%{_unitdir}/pagure_ci.service
%{_sbindir}/rcpagure_ci
%files logcom
%license LICENSE
%{_unitdir}/pagure_logcom.service
%{_sbindir}/rcpagure_logcom
%files loadjson
%license LICENSE
%{_unitdir}/pagure_loadjson.service
%{_sbindir}/rcpagure_loadjson
%files mirror
%license LICENSE
%{_unitdir}/pagure_mirror.service
%{_sbindir}/rcpagure_mirror
%changelog