%{!?python_sitelib: %global python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")} %{!?pyver: %global pyver %(%{__python} -c "import sys ; print sys.version[:3]")} %global debug_package %{nil} Name: odcs Version: 0.2.19 Release: 1545239843%{?dist} Summary: The On Demand Compose Service Group: Development/Tools License: MIT URL: https://pagure.io/odcs Source0: https://files.pythonhosted.org/packages/source/o/%{name}/%{name}-%{version}.tar.gz Source1: odcs-backend.service # In Fedora, "pyldap" is only for python3, not for python2. Therefore we # have to patch the requirements.txt to use python-ldap instead of pyldap. # Both ldap bindings are compatible on Python code level. Patch0: odcs-pythonldap.patch # Fedora related configuration for ODCS. Patch1: odcs-fedora-conf.patch %if 0%{?rhel} && 0%{?rhel} <= 7 # In EL7 we need flask which needs python-itsdangerous which comes from # rhel7-extras which is only available on x86_64 for now. ExclusiveArch: %{ix86} x86_64 %else BuildArch: noarch %endif BuildRequires: python2-devel BuildRequires: help2man BuildRequires: python2-pdc-client BuildRequires: python-fedora BuildRequires: python-flask-script BuildRequires: python-flask-login BuildRequires: python-httplib2 BuildRequires: python-m2ext BuildRequires: python-munch BuildRequires: python-productmd BuildRequires: python2-funcsigs BuildRequires: python2-modulemd >= 1.1.0 BuildRequires: python-qpid BuildRequires: python2-openidc-client BuildRequires: python-ldap BuildRequires: libmodulemd BuildRequires: gobject-introspection BuildRequires: python-gobject-base BuildRequires: fedmsg-hub %if 0%{?rhel} && 0%{?rhel} <= 7 BuildRequires: python-setuptools BuildRequires: python-flask-sqlalchemy BuildRequires: python-flask-migrate BuildRequires: python-nose BuildRequires: python-mock BuildRequires: python-six BuildRequires: pyOpenSSL BuildRequires: python-sqlalchemy BuildRequires: python-futures BuildRequires: python-flask BuildRequires: systemd-python BuildRequires: python-defusedxml BuildRequires: koji BuildRequires: python-flufl-lock %else BuildRequires: python2-setuptools BuildRequires: python2-flask-sqlalchemy BuildRequires: python2-flask-migrate BuildRequires: python2-nose BuildRequires: python2-mock BuildRequires: python2-tabulate BuildRequires: python2-six BuildRequires: python2-futures BuildRequires: python2-flask BuildRequires: python2-systemd BuildRequires: python2-defusedxml BuildRequires: python-koji BuildRequires: python2-flufl-lock %if (0%{?fedora} && 0%{?fedora} <= 25) || (0%{?rhel} && 0%{?rhel} <= 7) BuildRequires: pyOpenSSL BuildRequires: python-sqlalchemy %else BuildRequires: python2-pyOpenSSL BuildRequires: python2-sqlalchemy %endif %endif BuildRequires: systemd %{?systemd_requires} Requires(pre): shadow-utils Requires: systemd Requires: pungi Requires: python2-pdc-client Requires: python-fedora Requires: python-flask-script Requires: python-flask-login Requires: python-httplib2 Requires: python-m2ext Requires: python-munch Requires: python2-funcsigs Requires: python2-modulemd >= 1.1.0 Requires: python-qpid Requires: python2-openidc-client Requires: python-ldap Requires: python-productmd Requires: hardlink Requires: libmodulemd Requires: gobject-introspection Requires: python-gobject-base Requires: fedmsg-hub %if 0%{?rhel} && 0%{?rhel} <= 7 Requires: python-flask-sqlalchemy Requires: python-flask-migrate Requires: python-mock Requires: python-six Requires: pyOpenSSL Requires: python-sqlalchemy Requires: python-futures Requires: python-flask Requires: python-defusedxml Requires: python-flufl-lock Requires: koji Requires: systemd-python %else Requires: python2-flask-sqlalchemy Requires: python2-flask-migrate Requires: python2-mock Requires: python2-systemd Requires: python2-six Requires: python2-futures Requires: python2-flask Requires: python2-defusedxml Requires: python2-flufl-lock Requires: python-koji %if (0%{?fedora} && 0%{?fedora} <= 25) || (0%{?rhel} && 0%{?rhel} <= 7) Requires: pyOpenSSL Requires: python-sqlalchemy %else Requires: python2-pyOpenSSL Requires: python2-sqlalchemy %endif %endif Requires: python2-odcs-common = %{version}-%{release} %description The On Demand Compose Service (ODCS) creates temporary composes using Pungi tool and manages their lifetime. The composes can be requested by external services or users using the REST API provided by Flask frontend. %package -n python2-odcs-common Summary: ODCS subpackage providing code shared between server and client. %{?python_provide:%python_provide python2-odcs-client} Requires: python-six %description -n python2-odcs-common ODCS subpackage providing code shared between server and client. %package -n python2-odcs-client Summary: ODCS client module %{?python_provide:%python_provide python2-odcs-client} Requires: python-six Requires: python-requests Requires: m2crypto Requires: python-m2ext Requires: python2-odcs-common = %{version}-%{release} %description -n python2-odcs-client Client library for sending requests to On Demand Compose Service (ODCS). %package -n odcs-client Summary: ODCS command line client Requires: python2-openidc-client Requires: python2-odcs-client = %{version}-%{release} %description -n odcs-client Command line client for sending requests to ODCS. %prep %setup -q %patch0 -p1 -b .pyldap %patch1 -p1 %build %py2_build %install %py2_install export PYTHONPATH=%{buildroot}%{python2_sitelib} mkdir -p %{buildroot}%{_mandir}/man1 for command in odcs-manager odcs-frontend odcs-gencert odcs-upgradedb ; do export ODCS_CONFIG_FILE=server/conf/config.py help2man -N \ --version-string=%{version} %{buildroot}%{_bindir}/$command > \ %{buildroot}%{_mandir}/man1/$command.1 || \ %{buildroot}%{_bindir}/$command --help done install -d -m 0755 %{buildroot}%{_unitdir} install -p -m 0644 %{SOURCE1} %{buildroot}%{_unitdir}/ install -d -m 0755 %{buildroot}%{_datadir}/odcs install -p -m 0644 server/contrib/odcs.wsgi %{buildroot}%{_datadir}/odcs %pre getent group odcs >/dev/null || groupadd -r odcs getent passwd odcs >/dev/null || \ useradd -r -g odcs -s /sbin/nologin \ -c "On Demand Compose Service user" odcs exit 0 %post %systemd_post odcs-backend.service %preun %systemd_preun odcs-backend.service %postun %systemd_postun_with_restart odcs-backend.service %check # Test fails currently, reported here: https://pagure.io/odcs/issue/25 # Should be fixed in next release #nosetests-2.7 -v %files -n odcs-client %doc README.md %license LICENSE %{_bindir}/odcs %files -n python2-odcs-common %doc README.md %license LICENSE %dir %{python2_sitelib}/odcs/ %{python2_sitelib}/odcs/__init__.py* %{python2_sitelib}/odcs/common/ %{python2_sitelib}/odcs-%{version}-py%{pyver}.egg-info/ %exclude %{python2_sitelib}/odcs/__pycache__ %files -n python2-odcs-client %doc README.md %license LICENSE %dir %{python2_sitelib}/odcs/ %{python2_sitelib}/odcs/client/ %exclude %{python2_sitelib}/odcs/__pycache__ %files %doc README.md %license LICENSE %{_unitdir}/odcs-backend.service %{python2_sitelib}/odcs/server %{_bindir}/odcs-* %{_mandir}/man1/odcs-*.1* %{_datadir}/odcs %dir %{_sysconfdir}/odcs %config(noreplace) %{_sysconfdir}/odcs/config.py %config(noreplace) %{_sysconfdir}/odcs/pungi.conf %config(noreplace) %{_sysconfdir}/odcs/raw_config_wrapper.conf %config(noreplace) %{_sysconfdir}/odcs/runroot_koji.conf %{_sysconfdir}/fedmsg.d/* %exclude %{_sysconfdir}/odcs/*.py[co] %exclude %{python2_sitelib}/odcs/__pycache__ %changelog