%global oldpkg letsencrypt # On fedora use python3 for certbot %if 0%{?fedora} %bcond_without python3 %else %bcond_with python3 %endif Name: certbot Version: 0.21.0 Release: 1%{?dist} Summary: A free, automated certificate authority client License: ASL 2.0 URL: https://pypi.python.org/pypi/certbot Source0: https://files.pythonhosted.org/packages/source/c/%{name}/%{name}-%{version}.tar.gz Source10: certbot-renew-systemd.service Source11: certbot-renew-systemd.timer Source12: certbot-sysconfig-certbot Source13: certbot-README.fedora %if 0%{?rhel} Patch0: allow-old-setuptools.patch %endif BuildArch: noarch %if %{with python3} BuildRequires: python3-devel BuildRequires: python3-future %endif BuildRequires: python2-devel BuildRequires: python2-future # For the systemd macros %{?systemd_requires} BuildRequires: systemd # Need to label the httpd rw stuff correctly until base selinux policy updated Requires(post): %{_sbindir}/semanage Requires(postun): %{_sbindir}/semanage # On F26+ use python3 %if 0%{?fedora} >= 26 Requires: python3-certbot = %{version}-%{release} %else Requires: python2-certbot = %{version}-%{release} %endif Obsoletes: %{oldpkg} < 0.6.0 Provides: %{oldpkg} = %{version}-%{release} # Required for documentation BuildRequires: python2-sphinx BuildRequires: python2-sphinx_rtd_theme BuildRequires: python2-repoze-sphinx-autointerface #Require for testing BuildRequires: python-nose-xcover BuildRequires: python-pep8 BuildRequires: python2-tox BuildRequires: python2-mock BuildRequires: python2-configargparse >= 0.10.0 BuildRequires: python2-zope-interface BuildRequires: python2-zope-component BuildRequires: python2-requests BuildRequires: python2-dialog >= 3.3.0 BuildRequires: python2-psutil >= 2.1.0 BuildRequires: python-parsedatetime BuildRequires: python2-configobj BuildRequires: python2-configargparse >= 0.10.0 BuildRequires: python2-acme >= 0.20.0 %if %{with python3} #Require for testing BuildRequires: python3-nose-xcover BuildRequires: python3-pep8 BuildRequires: python3-tox BuildRequires: python3-mock BuildRequires: python3-configargparse >= 0.10.0 BuildRequires: python3-zope-interface BuildRequires: python3-zope-component BuildRequires: python3-requests BuildRequires: python3-dialog >= 3.3.0 BuildRequires: python3-psutil >= 2.1.0 BuildRequires: python3-parsedatetime BuildRequires: python3-configobj BuildRequires: python3-configargparse >= 0.10.0 BuildRequires: python3-acme >= 0.20.0 %endif %description certbot is a free, automated certificate authority that aims to lower the barriers to entry for encrypting all HTTP traffic on the internet. %package -n python2-certbot Requires: python2-configargparse >= 0.10.0 Requires: python2-dialog >= 3.3.0 Requires: python-parsedatetime Requires: python2-mock Requires: python2-zope-interface Requires: python2-zope-component Requires: python2-psutil >= 2.1.0 Requires: python2-configobj Requires: python2-future Requires: python2-acme >= 0.20.0 Obsoletes: python2-%{oldpkg} < 0.6.0 Provides: python2-%{oldpkg} = %{version}-%{release} Obsoletes: python-%{oldpkg} < 0.6.0 Provides: python-%{oldpkg} = %{version}-%{release} #Recommends: certbot-doc Summary: Python 2 libraries used by certbot %{?python_provide:%python_provide python2-certbot} %description -n python2-certbot The python2 libraries to interface with certbot %if %{with python3} %package -n python3-certbot Requires: python3-configargparse >= 0.10.0 Requires: python3-dialog >= 3.3.0 Requires: python3-parsedatetime Requires: python3-mock Requires: python3-zope-interface Requires: python3-zope-component Requires: python3-psutil >= 2.1.0 Requires: python3-future Requires: python3-configobj Requires: python3-acme >= 0.20.0 Summary: Python 3 libraries used by certbot %{?python_provide:%python_provide python3-certbot} %description -n python3-certbot The python3 libraries to interface with certbot %endif %prep %autosetup -n %{name}-%{version} -p1 %build %py2_build %if %{with python3} %py3_build %endif # build documentation # %{__python2} setup.py install --user # make -C docs man PATH=${HOME}/.local/bin:$PATH %install %py2_install mv %{buildroot}%{_bindir}/certbot{,-2} %if %{with python3} %py3_install mv %{buildroot}%{_bindir}/certbot{,-3} %endif # Add compatibility symlink as requested by upstream conference call ln -sf /usr/bin/certbot %{buildroot}/usr/bin/%{oldpkg} # Put the man pages in place # install -pD -t %{buildroot}%{_mandir}/man1 docs/_build/man/*1* # On F26+ use python3 %if 0%{?fedora} >= 26 ln -s %{_bindir}/certbot-3 %{buildroot}%{_bindir}/certbot %else ln -s %{_bindir}/certbot-2 %{buildroot}%{_bindir}/certbot %endif install -Dm 0644 %{SOURCE10} %{buildroot}%{_unitdir}/certbot-renew.service install -Dm 0644 %{SOURCE11} %{buildroot}%{_unitdir}/certbot-renew.timer install -Dm 0644 %{SOURCE12} %{buildroot}%{_sysconfdir}/sysconfig/certbot cp %{SOURCE13} README.fedora %check %{__python2} setup.py test %if %{with python3} %{__python3} setup.py test %endif # Make sure the scripts use the expected python versions grep -q %{__python2} %{buildroot}%{_bindir}/certbot-2 %if %{with python3} grep -q %{__python3} %{buildroot}%{_bindir}/certbot-3 %endif # The base selinux policies don't handle the certbot directories yet so set them up manually %post semanage fcontext -a -t cert_t '%{_sysconfdir}/(letsencrypt|certbot)/(live|archive)(/.*)?' restorecon -R %{_sysconfdir}/letsencrypt || : %files %license LICENSE.txt %doc README.rst CHANGES.rst CONTRIBUTING.md README.fedora %{_bindir}/certbot %{_bindir}/%{oldpkg} # %doc %attr(0644,root,root) %{_mandir}/man1/%{name}* # project uses old letsencrypt dir for compatibility %ghost %dir %{_sysconfdir}/%{oldpkg} %ghost %dir %{_sharedstatedir}/%{oldpkg} %config %{_sysconfdir}/sysconfig/certbot %{_unitdir}/certbot-renew.service %{_unitdir}/certbot-renew.timer %files -n python2-certbot %license LICENSE.txt %{python2_sitelib}/%{name} %{python2_sitelib}/%{name}-%{version}*.egg-info %{_bindir}/certbot-2 %if %{with python3} %files -n python3-certbot %license LICENSE.txt %{python3_sitelib}/%{name} %{python3_sitelib}/%{name}-%{version}*.egg-info %{_bindir}/certbot-3 %endif %changelog * Sun Jan 21 2018 Daniel Steiner - 0.21.0-1 - Initial build for Fedora 27