diff --git a/.gitignore b/.gitignore index 6e740f3..d017d44 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,17 @@ -/dns-lexicon-*.tar.gz -/lexicon-*.tar.gz - +/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 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/create-local-tld-cache.py b/create-local-tld-cache.py deleted file mode 100644 index c57a6c6..0000000 --- a/create-local-tld-cache.py +++ /dev/null @@ -1,38 +0,0 @@ -#!/usr/bin/python3 - -from pathlib import Path -import json -import os -import subprocess -import sys - -if len(sys.argv) != 2: - sys.stderr.write('usage: %s \n' % sys.argv[0]) - -buildroot_sitelib_dir = sys.argv[1] -sys.path.insert(0, buildroot_sitelib_dir) - -from tldextract.cache import get_cache_dir, DiskCache - -if 'TLDEXTRACT_CACHE' not in os.environ: - raise ValueError('must set "TLDEXTRACT_CACHE" environment variable') - -local_cache = Path('/usr/share/publicsuffix/public_suffix_list.dat') -if not local_cache.exists(): - raise FileNotFoundError(local_cache) - -url_local_cache = f'file://{local_cache}' -subprocess.run(['/usr/bin/tldextract', '--update', f'--suffix_list_url={url_local_cache}'], check=True) - -cache = DiskCache(cache_dir=get_cache_dir()) -namespace = 'publicsuffix.org-tlds' -cache_with_local_data = cache._key_to_cachefile_path(namespace, {'urls': (url_local_cache,), 'fallback_to_snapshot': True}) -func = lambda **kwargs: json.loads(Path(cache_with_local_data).read_text()) - -kwargs = { - 'cache': cache, - 'urls': ('https://publicsuffix.org/list/public_suffix_list.dat', 'https://raw.githubusercontent.com/publicsuffix/list/master/public_suffix_list.dat'), - 'fallback_to_snapshot': True, -} -cache.run_and_cache(func, namespace=namespace, kwargs=kwargs, hashed_argnames=('urls', 'fallback_to_snapshot')) - diff --git a/disable-poetry-light.patch b/disable-poetry-light.patch deleted file mode 100644 index 1b71fb8..0000000 --- a/disable-poetry-light.patch +++ /dev/null @@ -1,85 +0,0 @@ -diff -uNr lexicon-3.17.0/pyproject.toml lexicon-3.17.0.mod/pyproject.toml ---- lexicon-3.17.0/pyproject.toml 2023-11-06 16:21:46.000000000 -0600 -+++ lexicon-3.17.0.mod/pyproject.toml 2024-02-01 04:28:53.861285119 -0600 -@@ -61,32 +61,6 @@ - # Extra "full" list must contain all other extras - full = ["boto3", "localzone", "softlayer", "zeep", "oci"] - --[tool.poetry.group.dev.dependencies] --esbonio = "*" --packaging = "*" --pytest = "*" --pytest-cov = "*" --pytest-xdist = "*" --vcrpy = "*" --# We add flake8 conditionally to recent Python version to get modern versions --# of flake8 cleaned of several issues. It just means that linting cannot be done --# on the initial release of Python 3.8 (version 3.8.0). This is a decent constraint. --flake8 = { version = "*", python = ">=3.8.1" } --isort = "*" --tox = ">=4" --black = "*" --mypy = "*" --toml = "*" --types-PyYAML = "*" --types-pytz = "*" --types-requests = "*" --types-toml = "*" -- --[tool.poetry.group.docs.dependencies] --sphinx = "*" --sphinx_rtd_theme = "*" --toml = "*" -- - [tool.poetry.scripts] - lexicon = "lexicon._private.cli:main" - -diff -uNr lexicon-3.17.0/setup.cfg lexicon-3.17.0.mod/setup.cfg ---- lexicon-3.17.0/setup.cfg 2023-11-06 16:21:46.000000000 -0600 -+++ lexicon-3.17.0.mod/setup.cfg 2024-02-01 04:05:39.191101574 -0600 -@@ -5,45 +5,3 @@ - [tox:tox] - envlist = cover,lint,mypy - isolated_build = true -- --# Standard env will run all test available for all providers. --[testenv] --allowlist_externals = poetry --extras = -- full --setenv = -- PYTEST_ADDOPTS = {env:PYTEST_ADDOPTS:--numprocesses auto} -- PYTHONHASHSEED = 0 --commands_pre = -- poetry install --extras full --no-root --sync --commands = -- poetry run pytest tests/ \ -- --junitxml=junit/test-results.xml --dist=loadfile -- --# Cover env will run all test available for all providers with coverage enabled. --[testenv:cover] --commands = -- poetry run pytest tests/ \ -- --junitxml=junit/test-results.xml --dist=loadfile \ -- --cov=lexicon --cov-report=term-missing --cov-report=xml -- --# Light env will run all tests except for providers with optional dependencies. --[testenv:light] --extras = --commands_pre = -- poetry install --no-root --sync --commands = -- poetry run pytest tests/ \ -- --junitxml=junit/test-results.xml --dist=loadfile \ -- --xfail-providers-with-missing-deps -- --# Lint env will check for code quality and errors, and fails if it does not match the minimal requirements. --[testenv:lint] --commands = -- poetry run flake8 src tests -- -- --# Mypy env will check for types in the Lexicon codebase. --[testenv:mypy] --commands = -- poetry run mypy src tests diff --git a/python-dns-lexicon-tox-config.patch b/python-dns-lexicon-tox-config.patch deleted file mode 100644 index 039c798..0000000 --- a/python-dns-lexicon-tox-config.patch +++ /dev/null @@ -1,14 +0,0 @@ -diff --git a/pyproject.toml b/pyproject.toml -index 4122ff9..936bbdc 100644 ---- a/pyproject.toml -+++ b/pyproject.toml -@@ -126,8 +126,7 @@ extend-ignore = [ "E203", "E501" ] - envlist = [ "cover", "lint" , "mypy" ] - - [tool.tox.env_run_base] --runner = "uv-venv-lock-runner" --with_dev = true -+with_dev = false - extras = [ "full" ] - setenv.PYTEST_ADDOPTS = "--numprocesses auto" - setenv.PYTHONHASHSEED = "0" diff --git a/python-dns-lexicon.spec b/python-dns-lexicon.spec index de3d1f0..8ba51a8 100644 --- a/python-dns-lexicon.spec +++ b/python-dns-lexicon.spec @@ -1,406 +1,441 @@ - -%global forgeurl https://github.com/dns-lexicon/dns-lexicon -%global forgeversion 3.21.1 -Version: %{forgeversion} -%forgemeta - %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 -# EPEL is currently missing dependencies used by the extras metapackages -# EPEL is currently missing dependencies used by the tests -%bcond_with tests +# EPEL8 is currently missing dependencies used by the extras metapackages %bcond_with extras %else -%bcond_without tests %bcond_without extras %endif -# disable tests for now -%bcond_without tests - Name: python-%{pypi_name} -Release: 5%{?dist} +Version: 3.3.17 +Release: 1%{?dist} Summary: Manipulate DNS records on various DNS providers in a standardized/agnostic way License: MIT -URL: %{forgeurl} -# pypi releases don't contain necessary data to run the tests -Source0: %{forgesource} -Source1: create-local-tld-cache.py -Patch: python-dns-lexicon-tox-config.patch +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 - -# epel is missing full poetry and light packages needed for tests -%if 0%{?rhel >= 8} -#Patch: disable-poetry-light.patch -%endif - -# required to run the test suite -%if %{with tests} -BuildRequires: python3-pytest -BuildRequires: python3-pytest-vcr -BuildRequires: python3-pytest-xdist -BuildRequires: publicsuffix-list +BuildRequires: python3-setuptools +BuildRequires: python3-cryptography +BuildRequires: python3-future +BuildRequires: python3-pyOpenSSL BuildRequires: python3-tldextract -%endif +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 -# These "extras" were previously present in upstream lexicon but are not there -# anymore. -# {{{ -%if %{with extras} -Obsoletes: python3-%{pypi_name}+easyname < 3.4 -Provides: python3dist(%{pypi_name}[easyname]) = %{version} -Provides: python%{python3_version}dist(%{pypi_name}[easyname]) = %{version} - -Obsoletes: python3-%{pypi_name}+gratisdns < 3.4 -Provides: python3dist(%{pypi_name}[gratisdns]) = %{version} -Provides: python%{python3_version}dist(%{pypi_name}[gratisdns]) = %{version} - -Obsoletes: python3-%{pypi_name}+henet < 3.4 -Provides: python3dist(%{pypi_name}[henet]) = %{version} -Provides: python%{python3_version}dist(%{pypi_name}[henet]) = %{version} - -Obsoletes: python3-%{pypi_name}+hetzner < 3.4 -Provides: python3dist(%{pypi_name}[hetzner]) = %{version} -Provides: python%{python3_version}dist(%{pypi_name}[hetzner]) = %{version} - -# lexicon 3.6.0 removed the xmltodict dependency (and the "plesk" extra) -Obsoletes: python3-%{pypi_name}+plesk < 3.6 -Provides: python3dist(%{pypi_name}[plesk]) = %{version} -Provides: python%{python3_version}dist(%{pypi_name}[plesk]) = %{version} -%endif -# }}} - %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. - - - -%package -n python3-%{pypi_name}+gransy -Summary: Meta-package for python3-%{pypi_name} and gransy provider -%{?python_provide:%python_provide python3-%{pypi_name}+gransy} -Requires: python3-%{pypi_name} = %{version}-%{release} - -%description -n python3-%{pypi_name}+gransy -This package installs no files. It requires python3-%{pypi_name} and all -dependencies necessary to use the gransy provider. - - - -%package -n python3-%{pypi_name}+localzone -Summary: Meta-package for python3-%{pypi_name} and localzone provider -%{?python_provide:%python_provide python3-%{pypi_name}+localzone} -Requires: python3-%{pypi_name} = %{version}-%{release} - -%description -n python3-%{pypi_name}+localzone -This package installs no files. It requires python3-%{pypi_name} and all -dependencies necessary to use the localzone provider. - - - -%package -n python3-%{pypi_name}+oci -Summary: Meta-package for python3-%{pypi_name} and oci provider -%{?python_provide:%python_provide python3-%{pypi_name}+oci} -Requires: python3-%{pypi_name} = %{version}-%{release} - -%description -n python3-%{pypi_name}+oci -This package installs no files. It requires python3-%{pypi_name} and all -dependencies necessary to use the oci provider. - - - -%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} - -%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. - - - -%prep -%autosetup -n %{pypi_name}-%{version} -p1 -# Remove bundled egg-info -rm -rf %{pypi_name}.egg-info -rm -f uv.lock - -%generate_buildrequires -%if %{with extras} -%pyproject_buildrequires -r -t -e light -x gransy,localzone,oci,route53 -%else -%pyproject_buildrequires -r %endif - -%build -# remove shebang -sed -i '1d' src/lexicon/_private/cli.py -%pyproject_wheel - -%if %{with tests} -%check -export TLDEXTRACT_CACHE=%{_builddir}/tldextract-cache - -# tldextract tries to fetch "public_suffix_list.dat" from the internet on first -# invocation. -# (see https://github.com/john-kurkowski/tldextract/tree/master#note-about-caching) -# The "publicsuffix-list" package provides that data however we need to use -# that to populate a local cache directory.Most of the work is done via: -# $ tldextract --update --suffix_list_url "file:///usr/share/publicsuffix/public_suffix_list.dat" -# -# However tldextract uses the "file://" url as cache key while the tests use -# "https://publicsuffix.org/list/public_suffix_list.dat". I did not find a way -# get tldextract to use the https url so a small Python script will handle that. -/usr/bin/python3 %{SOURCE1} %{buildroot}%{python3_sitelib} - -# lexicon providers which do not work in Fedora due to missing dependencies: -# - SoftLayerProviderTests -TEST_SELECTOR="not SoftLayerProviderTests" - -%if %{without extras} -TEST_SELECTOR+=" and not GransyProviderTests and not LocalzoneProviderTests and not OciProviderTests and not OciInstancePrincipalProviderTests and not Route53ProviderTests" -%endif - -# We do not use "--xfail-providers-with-missing-deps" because we want to detect -# missing dependencies unless we already know that a certain provider will not -# work. -%pytest -v -k "${TEST_SELECTOR}" -n auto --dist=loadfile tests/ -%endif - -%install -%pyproject_install -install -pm 0755 %{buildroot}/%{_bindir}/lexicon %{buildroot}/%{_bindir}/lexicon-%{python3_version} -cd %{buildroot}/%{_bindir} -ln -s lexicon-%{python3_version} lexicon-3 - - -%files -n python3-%{pypi_name} -%license LICENSE -%doc README.rst -%{_bindir}/lexicon -%{_bindir}/lexicon-3 -%{_bindir}/lexicon-%{python3_version} -%{python3_sitelib}/lexicon -%{python3_sitelib}/dns_lexicon-%{version}.dist-info - # Extras meta-packages # {{{ %if %{with extras} -%files -n python3-%{pypi_name}+gransy -%{?python_extras_subpkg:%ghost %{python3_sitelib}/dns_lexicon-%{version}.dist-info} +%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} -%files -n python3-%{pypi_name}+localzone -%{?python_extras_subpkg:%ghost %{python3_sitelib}/dns_lexicon-%{version}.dist-info} +Requires: python2-%{pypi_name} = %{version}-%{release} -%files -n python3-%{pypi_name}+oci -%{?python_extras_subpkg:%ghost %{python3_sitelib}/dns_lexicon-%{version}.dist-info} +%if 0%{?rhel7} +# EL7 has an unversioned name for this package +Requires: python-beautifulsoup4 +%else +Requires: python2-beautifulsoup4 +%endif -%files -n python3-%{pypi_name}+route53 -%{?python_extras_subpkg:%ghost %{python3_sitelib}/dns_lexicon-%{version}.dist-info} +%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 -* Fri Sep 19 2025 Python Maint - 3.21.1-5 -- Rebuilt for Python 3.14.0rc3 bytecode - -* Fri Aug 15 2025 Python Maint - 3.21.1-4 -- Rebuilt for Python 3.14.0rc2 bytecode - -* Fri Jul 25 2025 Fedora Release Engineering - 3.21.1-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild - -* Fri Jun 06 2025 Python Maint - 3.21.1-2 -- Rebuilt for Python 3.14 - -* Mon Apr 28 2025 Felix Schwarz - 3.21.1-1 -- update to 3.21.1 - -* Sat Apr 19 2025 Felix Schwarz - 3.21.0-1 -- update to 3.21.0 - -* Thu Jan 23 2025 Felix Schwarz - 3.20.1-1 -- update to 3.20.1 - -* Sat Jan 18 2025 Fedora Release Engineering - 3.18.0-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild - -* Sat Nov 23 2024 Ben Maconi - 3.18.0-1 -- Updated to 3.18.0 - -* Fri Jul 19 2024 Fedora Release Engineering - 3.17.0-6 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild - -* Thu Jun 27 2024 Python Maint - 3.17.0-5 -- Rebuilt for Python 3.13 - -* Thu Feb 29 2024 Jonathan Wright - 3.17.0-4 -- Update spec for building on epel9 - -* Fri Jan 26 2024 Fedora Release Engineering - 3.17.0-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Mon Jan 22 2024 Fedora Release Engineering - 3.17.0-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Thu Nov 16 2023 Nick Bebout - 3.17.0-1 -- Update to 3.17.0 - -* Fri Oct 13 2023 Jonathan Wright - 3.15.1-1 -- Update to 3.15.1 rhbz#2232054 - -* Tue Aug 8 2023 Christian Schuermann 3.13.0-1 -- Update to 3.13.0 - -* Fri Jul 21 2023 Fedora Release Engineering - 3.12.0-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild - -* Tue Jul 04 2023 Python Maint - 3.12.0-2 -- Rebuilt for Python 3.12 - -* Sun Jun 11 2023 Christian Schuermann 3.12.0-1 -- Update to 3.12.0 -- Add new duckdns extra package -- Add localzone and oci extra packages since dependancies are now available on Fedora - -* Fri Jan 20 2023 Fedora Release Engineering - 3.11.7-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild - -* Thu Oct 27 2022 Christian Schuermann 3.11.7-1 -- Update to 3.11.7 - -* Wed Oct 12 2022 Christian Schuermann 3.11.6-1 -- Update to 3.11.6 - -* Fri Jul 22 2022 Fedora Release Engineering - 3.11.4-1 -- Update to 3.11.4 -- rhbz#2117798 - -* Fri Jul 22 2022 Fedora Release Engineering - 3.11.3-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild - -* Thu Jun 23 2022 Christian Schuermann 3.11.3-1 -- Update to 3.11.3 - -* Wed Jun 15 2022 Python Maint - 3.11.2-2 -- Rebuilt for Python 3.11 - -* Wed May 18 2022 Christian Schuermann 3.11.2-1 -- Update to 3.11.2 -- Disable OciInstancePrincipalProviderTests - -* Mon May 9 2022 Christian Schuermann 3.11.0-2 -- Disable tests that use tldextract until "suffix_list_url" cli flag is available - -* Mon May 9 2022 Christian Schuermann 3.11.0-1 -- Update to 3.11.0 - -* Sun May 1 2022 Christian Schuermann 3.10.0-1 -- Update to 3.10.0 - -* Thu Apr 28 2022 Christian Schuermann 3.9.5-3 -- Add "tests" conditional to make tests optional on EPEL -- Ensure that BuildRequires resolve correctly and only relevant tests run when building without extras - -* Tue Apr 26 2022 Christian Schuermann 3.9.5-2 -- Reenable tests for GoDady, Transip, Namecheap and NamecheapManaged providers -- Add gransy and ddns extra packages -- Remove explicit BuildRequires (handled by the pyproject_buildrequires macro) -- Remove explicit extra package Requires (handled by automatic dependency generator) -- Remove unused rhel7 macro - -* Tue Apr 19 2022 Christian Schuermann 3.9.5-1 -- update to 3.9.5 - -* Tue Feb 15 2022 Christian Schuermann 3.9.4-1 -- update to 3.9.4 - -* Fri Jan 21 2022 Fedora Release Engineering - 3.9.2-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild - -* Mon Jan 17 2022 Christian Schuermann 3.9.2-1 -- update to 3.9.2 - -* Mon Jan 17 2022 Christian Schuermann 3.9.1-1 -- update to 3.9.1 - -* Thu Jan 6 2022 Christian Schuermann 3.9.0-1 -- update to 3.9.0 - -* Wed Dec 29 2021 Christian Schuermann 3.8.5-1 -- update to 3.8.5 - -* Tue Dec 28 2021 Christian Schuermann 3.8.4-1 -- update to 3.8.4 - -* Sat Nov 13 2021 Felix Schwarz - 3.8.3-1 -- update to 3.8.3 (#2020433) - -* Sat Oct 16 2021 Felix Schwarz - 3.8.1-1 -- update to 3.8.1 (#2014726) - -* Mon Oct 04 2021 Felix Schwarz - 3.8.0-1 -- update to 3.8.0 - -* Thu Aug 19 2021 Felix Schwarz - 3.7.0-1 -- update to 3.7.0 - -* Fri Jul 23 2021 Fedora Release Engineering - 3.5.3-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild - -* Fri Jun 04 2021 Python Maint - 3.5.3-3 -- Rebuilt for Python 3.10 - -* Wed Jan 27 2021 Fedora Release Engineering - 3.5.3-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild - -* Tue Jan 5 2021 Felix Schwarz - 3.5.3-1 -- update to 3.5.3 - -* Tue Nov 24 2020 Felix Schwarz - 3.5.2-1 -- update to 3.5.2 - -* Mon Nov 16 2020 Felix Schwarz - 3.5.1-1 -- update to 3.5.1 - -* Wed Jul 29 2020 Fedora Release Engineering - 3.3.17-5 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild - -* Fri Jul 10 2020 Miro Hrončok - 3.3.17-4 -- Add metadata for Python extras subpackages - -* Tue May 26 2020 Miro Hrončok - 3.3.17-3 -- Rebuilt for Python 3.9 - -* 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) diff --git a/sources b/sources index 490f57d..6927388 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (dns-lexicon-3.21.1.tar.gz) = 0f53001edf2425afe7b7c4315e974ee47c956b659964998b942943788711c57634eea2d7974e21005be7f0edf16800e6577c49c8789e34f2133c4f5be8ac7ac1 +SHA512 (dns-lexicon-3.3.4.tar.gz) = 274a1a4ffd1d767623723b6e9aee1e9f07022f3985cbc15f75cc410f477e1dcb7a674fa847119bdccab7332d058f77ef85771bd7bcdadbe2dd9483415a365a6d