%bcond_without tests
%global upstreamrel 1
Name: koschei
Version: 1.6
Release: 1%{?dist}
Summary: Continuous integration for Fedora packages
License: GPLv2+
URL: https://github.com/msimacek/%{name}
Source0: https://github.com/msimacek/%{name}/archive/%{name}-%{version}-%{upstreamrel}.tar.gz
BuildArch: noarch
BuildRequires: python2-devel
BuildRequires: python-setuptools
BuildRequires: systemd
%if %{with tests}
BuildRequires: python-nose
BuildRequires: python-mock
BuildRequires: python-sqlalchemy
BuildRequires: koji
BuildRequires: python-hawkey
BuildRequires: python-librepo
BuildRequires: rpm-python
BuildRequires: fedmsg
BuildRequires: python-psycopg2
BuildRequires: postgresql-server
BuildRequires: python-flask
BuildRequires: python-flask-sqlalchemy
BuildRequires: python-flask-openid
BuildRequires: python-flask-wtf
BuildRequires: python-jinja2
BuildRequires: python-dogpile-cache
%endif
%description
Service tracking dependency changes in Fedora and rebuilding packages whose
dependencies change too much. It uses Koji scratch builds to do the rebuilds and
provides a web interface to the results.
%package common
Summary: Acutual python code for koschei backend and frontend
Requires: python-sqlalchemy
Requires: python-psycopg2
Requires: rpm-python
Requires(pre): shadow-utils
Obsoletes: %{name} < 1.5.1
%description common
%{summary}.
%package admin
Summary: Administration script and DB migrations for koschei
Requires: %{name}-common = %{version}-%{release}
Requires: python-alembic
Requires: postgresql
%description admin
%{summary}.
%package frontend
Summary: Web frontend for koschei using mod_wsgi
Requires: %{name}-common = %{version}-%{release}
Requires: python-flask
Requires: python-flask-sqlalchemy
Requires: python-flask-openid
Requires: python-flask-wtf
Requires: python-jinja2
Requires: mod_wsgi
Requires: httpd
%description frontend
%{summary}.
%package backend
Summary: Koschei backend services
Requires: %{name}-common = %{version}-%{release}
Requires: koji
Requires: python-hawkey
Requires: python-librepo
Requires(post): systemd
Requires(preun): systemd
Requires(postun): systemd
%description backend
%{summary}.
%package frontend-fedora
Summary: Fedora-specific Koschei frontend plugins
Requires: %{name}-frontend = %{version}-%{release}
Requires: python-dogpile-cache
%description frontend-fedora
%{summary}.
%package backend-fedora
Summary: Fedora-specific Koschei backend plugins
Requires: %{name}-backend = %{version}-%{release}
Requires: fedmsg
Requires: python-dogpile-cache
Requires: python-fedmsg-meta-fedora-infrastructure
Requires(post): systemd
Requires(preun): systemd
Requires(postun): systemd
%description backend-fedora
%{summary}.
%prep
%setup -q -n %{name}-%{name}-%{version}-%{upstreamrel}
sed 's|@CACHEDIR@|%{_localstatedir}/cache/%{name}|g
s|@DATADIR@|%{_datadir}/%{name}|g
s|@STATEDIR@|%{_sharedstatedir}/%{name}|g' config.cfg.template > config.cfg
%build
%{__python2} setup.py build
%install
%{__python2} setup.py install --skip-build --root %{buildroot}
mkdir -p %{buildroot}%{_bindir}
mkdir -p %{buildroot}%{_datadir}/%{name}
mkdir -p %{buildroot}%{_sysconfdir}/%{name}
mkdir -p %{buildroot}%{_sysconfdir}/httpd/conf.d
cp -p config-backend.cfg %{buildroot}%{_sysconfdir}/%{name}/config-backend.cfg
cp -p config-frontend.cfg %{buildroot}%{_sysconfdir}/%{name}/config-frontend.cfg
cp -p config-admin.cfg %{buildroot}%{_sysconfdir}/%{name}/config-admin.cfg
cp -p config.cfg %{buildroot}%{_datadir}/koschei/
install -dm 755 %{buildroot}%{_unitdir}
for unit in systemd/*; do
install -pm 644 $unit %{buildroot}%{_unitdir}/
done
install -pm 755 admin.py %{buildroot}%{_bindir}/%{name}-admin
install -dm 755 %{buildroot}%{_localstatedir}/cache/%{name}/repodata
install -dm 755 %{buildroot}%{_sharedstatedir}/%{name}
cp -pr templates %{buildroot}%{_datadir}/%{name}/
cp -pr alembic/ alembic.ini %{buildroot}%{_datadir}/%{name}/
cp -pr static %{buildroot}%{_datadir}/%{name}/
cp -p %{name}.wsgi %{buildroot}%{_datadir}/%{name}/
cp -p httpd.conf %{buildroot}%{_sysconfdir}/httpd/conf.d/%{name}.conf
install -dm 755 %{buildroot}%{_libexecdir}/%{name}
ln -s %{_bindir}/python %{buildroot}%{_libexecdir}/%{name}/koschei-scheduler
ln -s %{_bindir}/python %{buildroot}%{_libexecdir}/%{name}/koschei-watcher
ln -s %{_bindir}/python %{buildroot}%{_libexecdir}/%{name}/koschei-polling
ln -s %{_bindir}/python %{buildroot}%{_libexecdir}/%{name}/koschei-resolver
%if %{with tests}
%check
export PGDATA=$PWD/test/db
export PGHOST=$PGDATA
pg_ctl -s -w init -o "-A trust"
pg_ctl -s -w start -o "-F -h '' -k $PGDATA"
trap 'pg_ctl -s -w stop -m immediate' 0
%{__python2} setup.py test
%endif
%pre common
getent group %{name} >/dev/null || groupadd -r %{name}
# services and koschei-admin script is supposed to be run as this user
getent passwd %{name} >/dev/null || \
useradd -r -g %{name} -d %{_localstatedir}/cache/%{name} -s /bin/sh \
-c "Runs %{name} services" %{name}
exit 0
# Workaround for RPM bug #646523 - can't change symlink to directory
%pretrans frontend -p <lua>
dir = "%{_datadir}/%{name}/static"
dummy = posix.readlink(dir) and os.remove(dir)
%post backend
%systemd_post %{name}-scheduler.service
%systemd_post %{name}-polling.service
%systemd_post %{name}-resolver.service
%preun backend
%systemd_preun %{name}-scheduler.service
%systemd_preun %{name}-polling.service
%systemd_preun %{name}-resolver.service
%postun backend
%systemd_postun %{name}-scheduler.service
%systemd_postun %{name}-polling.service
%systemd_postun %{name}-resolver.service
%post backend-fedora
%systemd_post %{name}-watcher.service
%preun backend-fedora
%systemd_preun %{name}-watcher.service
%postun backend-fedora
%systemd_postun %{name}-watcher.service
%files common
%license LICENSE.txt
%{python2_sitelib}/*
%exclude %{python2_sitelib}/*/frontend
%exclude %{python2_sitelib}/*/backend
%dir %{_datadir}/%{name}
%{_datadir}/%{name}/config.cfg
%attr(755, %{name}, %{name}) %{_localstatedir}/cache/%{name}
%dir %{_sysconfdir}/%{name}
%attr(755, %{name}, %{name}) %dir %{_sharedstatedir}/%{name}
%files admin
%{_bindir}/%{name}-admin
%{_datadir}/%{name}/alembic/
%{_datadir}/%{name}/alembic.ini
%config(noreplace) %{_sysconfdir}/%{name}/config-admin.cfg
%files frontend
%config(noreplace) %{_sysconfdir}/httpd/conf.d/%{name}.conf
%config(noreplace) %{_sysconfdir}/%{name}/config-frontend.cfg
%{_datadir}/%{name}/static
%{_datadir}/%{name}/templates
%{_datadir}/%{name}/%{name}.wsgi
%{python2_sitelib}/*/frontend
%exclude %{python2_sitelib}/*/frontend/plugins/pkgdb.py*
%files backend
%config(noreplace) %{_sysconfdir}/%{name}/config-backend.cfg
%{_libexecdir}/%{name}
%{_unitdir}/*
%exclude %{_libexecdir}/%{name}/*watcher*
%exclude %{_unitdir}/*watcher*
%{python2_sitelib}/*/backend
%exclude %{python2_sitelib}/*/backend/plugins/fedmsg_publisher.py*
%exclude %{python2_sitelib}/*/backend/plugins/pkgdb.py*
%exclude %{python2_sitelib}/*/backend/services/watcher.py*
%files frontend-fedora
%{python2_sitelib}/*/frontend/plugins/pkgdb.py*
%files backend-fedora
%{_libexecdir}/%{name}/*watcher*
%{_unitdir}/*watcher*
%{python2_sitelib}/*/backend/plugins/fedmsg_publisher.py*
%{python2_sitelib}/*/backend/plugins/pkgdb.py*
%{python2_sitelib}/*/backend/services/watcher.py*
%changelog
* Thu Apr 21 2016 Michael Simacek <msimacek@redhat.com> 1.6-1
- Update to upstream release 1.6
* Fri Apr 08 2016 Michael Simacek <msimacek@redhat.com> 1.5-2
- Build with tito
* Thu Apr 07 2016 Michael Simacek <msimacek@redhat.com> - 1.5-1
- Update to upstream version 1.5
* Fri Mar 11 2016 Mikolaj Izdebski <mizdebsk@redhat.com> - 1.4.3-1
- Update to upstream version 1.4.3
* Mon Mar 7 2016 Mikolaj Izdebski <mizdebsk@redhat.com> - 1.4.2-1
- Update to upstream version 1.4.2
* Wed Mar 02 2016 Michael Simacek <msimacek@redhat.com> - 1.4.1-1
- Update to upstream release 1.4.1
* Fri Feb 26 2016 Mikolaj Izdebski <mizdebsk@redhat.com> - 1.4-1
- Update to upstream version 1.4
* Thu Feb 04 2016 Fedora Release Engineering <releng@fedoraproject.org> - 1.3-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
* Fri Oct 2 2015 Mikolaj Izdebski <mizdebsk@redhat.com> - 1.3-1
- Update to upstream version 1.3
* Wed Sep 23 2015 Michael Simacek <msimacek@redhat.com> - 1.2-2
- Backport fix for group editing permissions
* Tue Sep 22 2015 Mikolaj Izdebski <mizdebsk@redhat.com> - 1.2-1
- Update to upstream version 1.2
* Wed Jun 17 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.1-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
* Tue Jun 02 2015 Michael Simacek <msimacek@redhat.com> - 1.1-1
- Update to version 1.1
* Wed May 20 2015 Mikolaj Izdebski <mizdebsk@redhat.com> - 1.0-1
- Update to upstream version 1.0
* Fri Mar 27 2015 Mikolaj Izdebski <mizdebsk@redhat.com> - 0.2-2
- Add workaround for RPM bug #646523
* Thu Mar 12 2015 Michael Simacek <msimacek@redhat.com> - 0.2-1
- Update to version 0.2
* Mon Sep 01 2014 Michael Simacek <msimacek@redhat.com> - 0.1-2
- Fixed BR python-devel -> python2-devel
- Fixed changelog format
- Added noreplace to httpd config
- Replaced name occurences with macro
* Fri Jun 13 2014 Michael Simacek <msimacek@redhat.com> - 0.1-1
- Initial version