Blob Blame History Raw
%global tarname OnionBalance
%global pkgname onionbalance
%global sum Load-balancing for Tor onion services

# EL7 has a too old sphinx version
# to support generating of docs
%if 0%{?rhel} == 7
%global for_el7 1
%global with_docs 0
%global main_pkg python2-%{pkgname}
%else
%global with_docs 1
%global for_el7 0
%global main_pkg python3-%{pkgname}
%endif

# test libs are too old for running tests on EL7 & F24
%if 0%{?fedora} >= 25
%global with_test 1
%endif

%{!?_pkgdocdir: %global _pkgdocdir %{_docdir}/%{main_pkg}-%{version}}

%global toruser toranon

Name:           python-%{pkgname}
Version:        0.1.8
Release:        4%{?dist}
Summary:        %{sum}

License:        GPLv3
URL:            http://pypi.python.org/pypi/%{tarname}
Source0:        https://github.com/DonnchaC/%{pkgname}/releases/download/%{version}/%{pkgname}-%{version}.tar.gz
Source1:        onionbalance.service
Source2:        onionbalance.tmpfiles
Source3:        onionbalance.logrotate
Source4:        docs-conf.py
Source5:        onionbalance.torrc.example
Source6:        README.fedora

BuildArch: noarch

BuildRequires: systemd-units

%if 0%{?for_el7}
BuildRequires:  python-setuptools
BuildRequires:  python2-devel
BuildRequires:  python-stem
BuildRequires:  PyYAML
BuildRequires:  python2-crypto
BuildRequires:  python2-future
BuildRequires:  python-setproctitle
%else
BuildRequires:  python3-devel
BuildRequires:  python3-setuptools
BuildRequires:  python3-stem
BuildRequires:  python3-PyYAML
BuildRequires:  python3-crypto
BuildRequires:  python3-future
BuildRequires:  python3-setproctitle
BuildRequires:  python3-sphinxcontrib-autoprogram
BuildRequires:  python3-pytest
BuildRequires:  python3-pytest-mock
BuildRequires:  python3-pexpect
%endif

BuildRequires: systemd


%description
OnionBalance provides load-balancing and redundancy for Tor
onion services by distributing requests to multiple back-end
Tor instances.

%package -n %{main_pkg}
%if 0%{?for_el7}
Summary:   %{sum}
Requires:  python-stem
Requires:  PyYAML
%if 0%{?for_el7}
Requires:  python-setuptools
%else
Requires:  python2-setuptools
%endif
Requires:  python2-crypto
Requires:  python2-future
Requires:  python-setproctitle
%{?python_provide:%python_provide python2-%{pkgname}}
%else
Summary:   %{sum}
Requires:  python3-stem
Requires:  python3-PyYAML
Requires:  python3-setuptools
Requires:  python3-crypto
Requires:  python3-future
Requires:  python3-setproctitle
%{?python_provide:%python_provide python3-%{pkgname}}
%endif
Requires: tor
Requires: logrotate
Requires(pre): shadow-utils
Requires(post): systemd
Requires(preun): systemd
Requires(postun): systemd

%description -n %{main_pkg}
OnionBalance provides load-balancing and redundancy for Tor
onion services by distributing requests to multiple back-end
Tor instances.
This package contains systemd files as well as logrotate rules.

%prep
%autosetup -c -n %{pkgname}-%{version}

%build
find . -name '*.pyc' -delete
%if 0%{?for_el7}
%py2_build
%else
%py3_build
%endif
%if 0%{?with_docs}
# restore conf that is missing in egg
cp %{SOURCE4} docs/conf.py
PYTHONPATH=. sphinx-build -N -v -v -v -v -E -bhtml docs/ docs/_build/html
PYTHONPATH=. sphinx-build -N -E -bman docs docs/_build/man
# Fix hidden-file-or-dir warnings
rm -rf docs/_build/html/.doctrees docs/_build/html/.buildinfo
%endif

%install
%if 0%{?for_el7}
%py2_install
%else
%py3_install
%endif

%if 0%{?for_el7}
# EL7 isn't yet that new, but given it's only a little change btw. 3.11 & 3.10
# it's fine to downgrade that requirement
sed -i 's/PyYAML>=3.11/PyYAML>=3.10/' %{buildroot}/%{python2_sitelib}/*.egg-info/requires.txt
%endif

install -d        %{buildroot}/etc/logrotate.d
install -d        %{buildroot}/%{_sysconfdir}/%{pkgname}
install -d        %{buildroot}/%{_localstatedir}/log/%{pkgname}
install -d        %{buildroot}/%{_localstatedir}/lib/%{pkgname}
install -d -m 755 %{buildroot}/%{_unitdir}
install -d -m 755 %{buildroot}/%{_tmpfilesdir}

install -p -m 644 %{SOURCE1} %{buildroot}/%{_unitdir}/%{pkgname}.service
install -p -m 644 %{SOURCE2} %{buildroot}/%{_tmpfilesdir}/%{pkgname}.conf
install -p -m 644 %{SOURCE3} %{buildroot}/%{_sysconfdir}/logrotate.d/%{pkgname}.conf
%if 0%{?with_docs}
install -d -m 755 %{buildroot}/%{_mandir}/man1
cp docs/_build/man/%{pkgname}* %{buildroot}/%{_mandir}/man1/
%endif

install -p -m 644 %{SOURCE5} .
install -p -m 644 %{SOURCE6} .

%check
# on some versions test libs are too old to run
%if 0%{?with_test}
py.test-3 --ignore=test/functional
%endif

%pre -n %{main_pkg}
getent passwd %{pkgname} >/dev/null || \
    useradd -r -g %{toruser} -d %{_localstatedir}/lib/%{pkgname} -s /sbin/nologin \
    -c "%{pkgname} daemon user" %{pkgname}
exit 0

%post -n %{main_pkg}
%systemd_post onionbalance.service

%preun -n %{main_pkg}
%systemd_preun onionbalance.service

%postun -n %{main_pkg}
%systemd_postun_with_restart onionbalance.service

%files -n %{main_pkg}
%doc README.rst
%doc README.fedora
%doc onionbalance.torrc.example
%license COPYING
%if 0%{?with_docs}
%doc docs/_build/html
%doc %attr(0644,root,root) %{_mandir}/man1/%{pkgname}*
%endif
%if 0%{?for_el7}
%{python2_sitelib}/*
%else
%{python3_sitelib}/*
%endif
%{_bindir}/%{pkgname}
%{_bindir}/%{pkgname}-config
%{_unitdir}/%{pkgname}.service
%{_tmpfilesdir}/%{pkgname}.conf
%dir %attr(0750,root,%{toruser}) %{_sysconfdir}/%{pkgname}
%dir %attr(0750,%{pkgname},%{toruser}) %{_localstatedir}/log/%{pkgname}
%dir %attr(0750,%{pkgname},%{toruser}) %{_localstatedir}/lib/%{pkgname}
%config(noreplace) %{_sysconfdir}/logrotate.d/%{pkgname}.conf

%changelog
* Tue Jun 19 2018 Miro HronĨok <mhroncok@redhat.com> - 0.1.8-4
- Rebuilt for Python 3.7

* Fri Feb 09 2018 Fedora Release Engineering <releng@fedoraproject.org> - 0.1.8-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild

* Thu Jul 27 2017 Fedora Release Engineering <releng@fedoraproject.org> - 0.1.8-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild

* Thu May 04 2017 Marcel Haerry <mh+fedora@scrit.ch> - 0.1.8-1
- latest upstream release (#1447661)

* Thu Feb 23 2017 Marcel Haerry <mh+fedora@scrit.ch> - 0.1.7-1
- latest upstream release

* Sat Feb 11 2017 Fedora Release Engineering <releng@fedoraproject.org> - 0.1.6-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild

* Fri Jan 20 2017 Marcel Haerry <mh+fedora@scrit.ch> - 0.1.6-1
  initial release