diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..647f8d6 --- /dev/null +++ b/.gitignore @@ -0,0 +1,18 @@ +/dns-lexicon-2.1.19.tar.gz +/dns-lexicon-2.2.1.tar.gz +/dns-lexicon-2.2.2.tar.gz +/dns-lexicon-2.2.3.tar.gz +/dns-lexicon-2.3.0.tar.gz +/dns-lexicon-2.4.0.tar.gz +/dns-lexicon-2.4.3.tar.gz +/dns-lexicon-2.4.4.tar.gz +/dns-lexicon-2.4.5.tar.gz +/dns-lexicon-2.7.0.tar.gz +/dns-lexicon-2.7.9.tar.gz +/dns-lexicon-3.0.2.tar.gz +/dns-lexicon-3.0.6.tar.gz +/dns-lexicon-3.1.5.tar.gz +/dns-lexicon-3.2.6.tar.gz +/dns-lexicon-3.2.8.tar.gz +/dns-lexicon-3.3.4.tar.gz +/dns-lexicon-3.3.17.tar.gz diff --git a/0000-remove-shebang.patch b/0000-remove-shebang.patch new file mode 100644 index 0000000..dd0a7d5 --- /dev/null +++ b/0000-remove-shebang.patch @@ -0,0 +1,9 @@ +diff --git a/lexicon/cli.py b/lexicon/cli.py +index dbef1ae..32a0f6f 100644 +--- a/lexicon/cli.py ++++ b/lexicon/cli.py +@@ -1,4 +1,3 @@ +-#!/usr/bin/env python + """Module for Lexicon command-line interface""" + from __future__ import absolute_import, print_function + import json diff --git a/0001-fix-requirements.patch b/0001-fix-requirements.patch new file mode 100644 index 0000000..c99135d --- /dev/null +++ b/0001-fix-requirements.patch @@ -0,0 +1,13 @@ +diff --git a/setup.py b/setup.py +index b4b3865..6eda18d 100644 +--- a/setup.py ++++ b/setup.py +@@ -82,7 +82,7 @@ setup( + # requirements files see: + # https://packaging.python.org/en/latest/requirements.html + install_requires=[ +- 'requests[security]', ++ 'requests', + 'tldextract', + 'future', + 'cryptography', diff --git a/package.cfg b/package.cfg index 66ea79d..3f45895 100644 --- a/package.cfg +++ b/package.cfg @@ -1,2 +1,2 @@ [koji] -targets = epel8 epel8-playground \ No newline at end of file +targets = diff --git a/python-dns-lexicon.spec b/python-dns-lexicon.spec new file mode 100644 index 0000000..ffee38e --- /dev/null +++ b/python-dns-lexicon.spec @@ -0,0 +1,535 @@ +%global pypi_name dns-lexicon + +%if 0%{?rhel} && 0%{?rhel} <= 7 +%global rhel7 1 +%bcond_with python3 +%else +%bcond_without python3 +%endif + +%if 0%{?fedora} >= 30 || 0%{?rhel} >= 8 +%bcond_with python2 +%else +%bcond_without python2 +%endif + +%if 0%{?rhel} >= 8 +# EPEL8 is currently missing dependencies used by the extras metapackages +%bcond_with extras +%else +%bcond_without extras +%endif + +Name: python-%{pypi_name} +Version: 3.3.17 +Release: 2%{?dist} +Summary: Manipulate DNS records on various DNS providers in a standardized/agnostic way + +License: MIT +URL: https://github.com/AnalogJ/lexicon +Source0: %{pypi_source} +BuildArch: noarch + +Patch0: 0000-remove-shebang.patch + +%if 0%{?rhel7} +Patch1: 0001-fix-requirements.patch +%endif + +%if %{with python2} +BuildRequires: python2-devel +BuildRequires: python2-setuptools +BuildRequires: python2-cryptography +BuildRequires: python2-future +BuildRequires: python2-pyyaml +BuildRequires: python2-tldextract + +%if 0%{?rhel7} +# EL7 has an unversioned name for this package +BuildRequires: pyOpenSSL +%else +BuildRequires: python2-pyOpenSSL +%endif + +# Extras requirements +# {{{ +%if %{with extras} +%if 0%{?rhel7} +# EL7 has unversioned names for these packages +BuildRequires: python-beautifulsoup4 +BuildRequires: python-boto3 +BuildRequires: python-xmltodict +%else +BuildRequires: python2-beautifulsoup4 +BuildRequires: python2-boto3 +BuildRequires: python2-xmltodict + +# EL7 doesn't have a current enough version of this package +BuildRequires: python2-dns +%endif +%endif +# }}} +%endif + +%if %{with python3} +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-cryptography +BuildRequires: python3-future +BuildRequires: python3-pyOpenSSL +BuildRequires: python3-tldextract +BuildRequires: python3-pyyaml + +# Extras requirements +# {{{ +%if %{with extras} +BuildRequires: python3-beautifulsoup4 +BuildRequires: python3-boto3 +BuildRequires: python3-dns +BuildRequires: python3-xmltodict +%endif +# }}} + +%endif + +%description +Lexicon provides a way to manipulate DNS records on multiple DNS providers in a +standardized way. Lexicon has a CLI but it can also be used as a python +library. + +%if %{with python2} +%package -n python2-%{pypi_name} +Summary: %{summary} +%{?python_provide:%python_provide python2-%{pypi_name}} + +Requires: python2-cryptography +Requires: python2-future +Requires: python2-requests +Requires: python2-setuptools +Requires: python2-pyyaml +Requires: python2-tldextract + +%if 0%{?rhel7} +# EL7 has an unversioned name for this package +Requires: pyOpenSSL +%else +Requires: python2-pyOpenSSL +%endif + +# Both packages install a Python module named lexicon +# TODO: Remove this once resolved upstream (see upstream #222) +%if 0%{?rhel7} +Conflicts: python-lexicon +%else +Conflicts: python2-lexicon +%endif + +%description -n python2-%{pypi_name} +Lexicon provides a way to manipulate DNS records on multiple DNS providers in a +standardized way. Lexicon has a CLI but it can also be used as a python +library. + +This is the Python 2 version of the package. +%endif + +%if %{with python3} +%package -n python3-%{pypi_name} +Summary: %{summary} +%{?python_provide:%python_provide python3-%{pypi_name}} + +Requires: python3-cryptography +Requires: python3-future +Requires: python3-requests +Requires: python3-setuptools +Requires: python3-pyOpenSSL +Requires: python3-tldextract +Requires: python3-pyyaml + +# Both packages install a Python module named lexicon +# TODO: Remove this once resolved upstream (see upstream #222) +Conflicts: python3-lexicon + +%description -n python3-%{pypi_name} +Lexicon provides a way to manipulate DNS records on multiple DNS providers in a +standardized way. Lexicon has a CLI but it can also be used as a python +library. + +This is the Python 3 version of the package. +%endif + +# Extras meta-packages +# {{{ +%if %{with extras} + +%if %{with python2} +%package -n python2-%{pypi_name}+easyname +Summary: Meta-package for python2-%{pypi_name} and easyname provider +%{?python_provide:%python_provide python2-%{pypi_name}+easyname} + +Requires: python2-%{pypi_name} = %{version}-%{release} + +%if 0%{?rhel7} +# EL7 has an unversioned name for this package +Requires: python-beautifulsoup4 +%else +Requires: python2-beautifulsoup4 +%endif + +%description -n python2-%{pypi_name}+easyname +This package installs no files. It requires python2-%{pypi_name} and all +dependencies necessary to use the easyname provider. +%endif + +%if %{with python3} +%package -n python3-%{pypi_name}+easyname +Summary: Meta-package for python3-%{pypi_name} and easyname provider +%{?python_provide:%python_provide python3-%{pypi_name}+easyname} + +Requires: python3-%{pypi_name} = %{version}-%{release} +Requires: python3-beautifulsoup4 + +%description -n python3-%{pypi_name}+easyname +This package installs no files. It requires python3-%{pypi_name} and all +dependencies necessary to use the easyname provider. +%endif + +%if %{with python2} +%package -n python2-%{pypi_name}+gratisdns +Summary: Meta-package for python2-%{pypi_name} and gratisdns provider +%{?python_provide:%python_provide python2-%{pypi_name}+gratisdns} + +Requires: python2-%{pypi_name} = %{version}-%{release} + +%if 0%{?rhel7} +# EL7 has an unversioned name for this package +Requires: python-beautifulsoup4 +%else +Requires: python2-beautifulsoup4 +%endif + +%description -n python2-%{pypi_name}+gratisdns +This package installs no files. It requires python2-%{pypi_name} and all +dependencies necessary to use the gratisdns provider. +%endif + +%if %{with python3} +%package -n python3-%{pypi_name}+gratisdns +Summary: Meta-package for python3-%{pypi_name} and gratisdns provider +%{?python_provide:%python_provide python3-%{pypi_name}+gratisdns} + +Requires: python3-%{pypi_name} = %{version}-%{release} +Requires: python3-beautifulsoup4 + +%description -n python3-%{pypi_name}+gratisdns +This package installs no files. It requires python3-%{pypi_name} and all +dependencies necessary to use the gratisdns provider. +%endif + +%if %{with python2} +%package -n python2-%{pypi_name}+henet +Summary: Meta-package for python2-%{pypi_name} and Hurricane Electric provider +%{?python_provide:%python_provide python2-%{pypi_name}+henet} + +Requires: python2-%{pypi_name} = %{version}-%{release} + +%if 0%{?rhel7} +# EL7 has an unversioned name for this package +Requires: python-beautifulsoup4 +%else +Requires: python2-beautifulsoup4 +%endif + +%description -n python2-%{pypi_name}+henet +This package installs no files. It requires python2-%{pypi_name} and all +dependencies necessary to use the Hurricane Electric provider. +%endif + +%if %{with python3} +%package -n python3-%{pypi_name}+henet +Summary: Meta-package for python3-%{pypi_name} and Hurricane Electric provider +%{?python_provide:%python_provide python3-%{pypi_name}+henet} + +Requires: python3-%{pypi_name} = %{version}-%{release} +Requires: python3-beautifulsoup4 + +%description -n python3-%{pypi_name}+henet +This package installs no files. It requires python3-%{pypi_name} and all +dependencies necessary to use the Hurricane Electric provider. +%endif + +%if %{with python2} +%package -n python2-%{pypi_name}+plesk +Summary: Meta-package for python2-%{pypi_name} and Plesk provider +%{?python_provide:%python_provide python2-%{pypi_name}+plesk} + +Requires: python2-%{pypi_name} = %{version}-%{release} + +%if 0%{?rhel7} +# EL7 has an unversioned name for this package +Requires: python-xmltodict +%else +Requires: python2-xmltodict +%endif + +%description -n python2-%{pypi_name}+plesk +This package installs no files. It requires python2-%{pypi_name} and all +dependencies necessary to use the Plesk provider. +%endif + +%if %{with python3} +%package -n python3-%{pypi_name}+plesk +Summary: Meta-package for python3-%{pypi_name} and Plesk provider +%{?python_provide:%python_provide python3-%{pypi_name}+plesk} + +Requires: python3-%{pypi_name} = %{version}-%{release} +Requires: python3-xmltodict + +%description -n python3-%{pypi_name}+plesk +This package installs no files. It requires python3-%{pypi_name} and all +dependencies necessary to use the Plesk provider. +%endif + +%if %{with python2} +%package -n python2-%{pypi_name}+route53 +Summary: Meta-package for python2-%{pypi_name} and Route 53 provider +%{?python_provide:%python_provide python2-%{pypi_name}+route53} + +Requires: python2-%{pypi_name} = %{version}-%{release} + +%if 0%{?rhel7} +# EL7 has an unversioned name for this package +Requires: python-boto3 +%else +Requires: python2-boto3 +%endif + +%description -n python2-%{pypi_name}+route53 +This package installs no files. It requires python2-%{pypi_name} and all +dependencies necessary to use the Route 53 provider. +%endif + +%if %{with python3} +%package -n python3-%{pypi_name}+route53 +Summary: Meta-package for python3-%{pypi_name} and Route 53 provider +%{?python_provide:%python_provide python3-%{pypi_name}+route53} + +Requires: python3-%{pypi_name} = %{version}-%{release} +Requires: python3-boto3 + +%description -n python3-%{pypi_name}+route53 +This package installs no files. It requires python3-%{pypi_name} and all +dependencies necessary to use the Route 53 provider. +%endif + +%if ! 0%{?rhel7} +# EL7 does not have the dependencies necessary for this meta-package +# {{{ + +%if %{with python2} +%package -n python2-%{pypi_name}+hetzner +Summary: Meta-package for python2-%{pypi_name} and Hetzner provider +%{?python_provide:%python_provide python2-%{pypi_name}+hetzner} + +Requires: python2-%{pypi_name} = %{version}-%{release} +Requires: python2-beautifulsoup4 +Requires: python2-dns + +%description -n python2-%{pypi_name}+hetzner +This package installs no files. It requires python2-%{pypi_name} and all +dependencies necessary to use the Hetzner provider. +%endif + +%if %{with python3} +%package -n python3-%{pypi_name}+hetzner +Summary: Meta-package for python3-%{pypi_name} and Hetzner provider +%{?python_provide:%python_provide python3-%{pypi_name}+hetzner} + +Requires: python3-%{pypi_name} = %{version}-%{release} +Requires: python3-beautifulsoup4 +Requires: python3-dns + +%description -n python3-%{pypi_name}+hetzner +This package installs no files. It requires python3-%{pypi_name} and all +dependencies necessary to use the Hetzner provider. +%endif +# }}} +%endif + +%endif +# }}} + +%prep +%autosetup -p1 -n %{pypi_name}-%{version} +# Remove bundled egg-info +rm -rf %{pypi_name}.egg-info + +%build +%if %{with python2} +%py2_build +%endif + +%if %{with python3} +%py3_build +%endif + +%install +%if %{with python2} +%py2_install +install -pm 0755 %{buildroot}/%{_bindir}/lexicon %{buildroot}/%{_bindir}/lexicon-%{python2_version} +ln -s %{_bindir}/lexicon-%{python2_version} %{buildroot}/%{_bindir}/lexicon-2 +%endif + +%if %{with python3} +%py3_install +install -pm 0755 %{buildroot}/%{_bindir}/lexicon %{buildroot}/%{_bindir}/lexicon-%{python3_version} +ln -s %{_bindir}/lexicon-%{python3_version} %{buildroot}/%{_bindir}/lexicon-3 +%endif + +%if %{with python2} +%files -n python2-%{pypi_name} +%license LICENSE +%doc README.md +%if ! %{with python3} +%{_bindir}/lexicon +%endif +%{_bindir}/lexicon-2 +%{_bindir}/lexicon-%{python2_version} +%{python2_sitelib}/lexicon +%{python2_sitelib}/dns_lexicon-%{version}-py?.?.egg-info + +# Extras meta-packages +# {{{ +%files -n python2-%{pypi_name}+easyname +%files -n python2-%{pypi_name}+gratisdns +%files -n python2-%{pypi_name}+henet +%files -n python2-%{pypi_name}+plesk +%files -n python2-%{pypi_name}+route53 + +%if ! 0%{?rhel7} +# EL7 does not have the necessary dependencies for this meta-package +%files -n python2-%{pypi_name}+hetzner +%endif +# }}} +%endif + +%if %{with python3} +%files -n python3-%{pypi_name} +%license LICENSE +%doc README.md +%{_bindir}/lexicon +%{_bindir}/lexicon-3 +%{_bindir}/lexicon-%{python3_version} +%{python3_sitelib}/lexicon +%{python3_sitelib}/dns_lexicon-%{version}-py?.?.egg-info + +# Extras meta-packages +# {{{ +%if %{with extras} +%files -n python3-%{pypi_name}+easyname +%files -n python3-%{pypi_name}+gratisdns +%files -n python3-%{pypi_name}+henet +%files -n python3-%{pypi_name}+hetzner +%files -n python3-%{pypi_name}+plesk +%files -n python3-%{pypi_name}+route53 +%endif +# }}} +%endif + +%changelog +* Wed Mar 04 2020 Felix Schwarz - 3.3.17-2 +- add missing sources + +* Tue Mar 03 2020 Felix Schwarz - 3.3.17-1 +- Update to 3.3.17 (#1764339) + +* Thu Jan 30 2020 Fedora Release Engineering - 3.3.4-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Tue Oct 08 2019 Eli Young - 3.3.4-2 +- Rebuild due to Koji issues + +* Mon Oct 07 2019 Eli Young - 3.3.4-1 +- Update to 3.3.4 (#1725208) +- Support EPEL8 builds + +* Thu Oct 03 2019 Miro Hrončok - 3.2.8-4 +- Rebuilt for Python 3.8.0rc1 (#1748018) + +* Mon Aug 19 2019 Miro Hrončok - 3.2.8-3 +- Rebuilt for Python 3.8 + +* Fri Jul 26 2019 Fedora Release Engineering - 3.2.8-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Thu Jun 27 2019 Eli Young - 3.2.8-1 +- Update to 3.2.8 (#1722190) + +* Tue May 28 2019 Eli Young - 3.2.6-1 +- Update to 3.2.6 (#1685778) + +* Fri Feb 15 2019 Eli Young - 3.1.5-1 +- Update to 3.1.5 (#1671162) +- Add meta-subpackages for specific providers + +* Sat Feb 02 2019 Fedora Release Engineering - 3.0.6-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Fri Dec 14 2018 Eli Young - 3.0.6-1 +- Update to 3.0.6 +- Declare conflict with python-lexicon +- Remove Python 2 package in Fedora 30+ + +* Wed Nov 14 2018 Eli Young - 3.0.2-2 +- Fix dependencies on Fedora 28 + +* Wed Nov 14 2018 Eli Young - 3.0.2-1 +- Update to 3.0.2 + +* Mon Oct 08 2018 Eli Young - 2.7.9-1 +- Update to 2.7.9 (#1637142) + +* Mon Aug 27 2018 Eli Young - 2.7.0-2 +- Add dependency on python-cryptography (#1622418) + +* Mon Jul 23 2018 Nick Bebout - 2.7.0-1 +- Update to 2.7.0 + +* Sat Jul 14 2018 Fedora Release Engineering - 2.4.5-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Tue Jul 10 2018 Eli Young - 2.4.5-1 +- Update to 2.4.5 (#1599479) + +* Mon Jul 02 2018 Miro Hrončok - 2.4.4-3 +- Rebuilt for Python 3.7 + +* Tue Jun 26 2018 Eli Young - 2.4.4-2 +- Remove unnecessary shebang + +* Tue Jun 26 2018 Eli Young - 2.4.4-1 +- Update to 2.4.4 (#1594777) + +* Tue Jun 19 2018 Eli Young - 2.4.3-1 +- Update to 2.4.3 (#1592158) + +* Tue Jun 19 2018 Miro Hrončok - 2.4.0-2 +- Rebuilt for Python 3.7 + +* Mon Jun 11 2018 Eli Young - 2.4.0-1 +- Update to 2.4.0 (#1589596) + +* Tue May 29 2018 Eli Young - 2.3.0-1 +- Update to 2.3.0 (#1582799) + +* Mon May 07 2018 Eli Young - 2.2.3-1 +- Update to 2.2.3 (#1575598) + +* Thu May 03 2018 Eli Young - 2.2.2-1 +- Update to 2.2.2 (#1574265) + +* Sat Mar 24 2018 Eli Young - 2.2.1-1 +- Update to 2.2.1 +- Use Python 3 by default when available + +* Mon Feb 19 2018 Nick Bebout - 2.1.19-1 +- Initial package. diff --git a/sources b/sources new file mode 100644 index 0000000..000178d --- /dev/null +++ b/sources @@ -0,0 +1 @@ +SHA512 (dns-lexicon-3.3.17.tar.gz) = cfaff78df6c98809fd9c6ac9941bb62c3b8f4849b66bf26fddfffb4802a4ef00a9261ae03685131e428450fea399d911ff80e2dbd7feb9256be3b2ff2e4189f4