import UBI python-dns-2.6.1-3.el9

This commit is contained in:
eabdullin 2024-11-12 11:00:32 +00:00
parent 0773870412
commit ec60251ba0
10 changed files with 268 additions and 260 deletions

2
.gitignore vendored
View File

@ -1 +1 @@
SOURCES/dnspython-2.3.0.tar.gz
SOURCES/dnspython-2.6.1.tar.gz

View File

@ -1 +1 @@
698b6e84cf9d0ce2a0157b3bdaf7c4a852adf3dc SOURCES/dnspython-2.3.0.tar.gz
a37abc80fd50ab72dc10623b0e67e7cef6a68014 SOURCES/dnspython-2.6.1.tar.gz

View File

@ -1,27 +0,0 @@
From 76e10ef549aed9f1438d97b116495c312a450a34 Mon Sep 17 00:00:00 2001
From: Bob Halley <halley@dnspython.org>
Date: Wed, 18 Jan 2023 04:50:29 -0800
Subject: [PATCH 1/4] Add missing quic files to setup.py cythonize [#887].
(cherry picked from commit 211419bb0df840bab4696be3f6d9544d57df6603)
---
setup.py | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/setup.py b/setup.py
index c91c719..2ccaf8b 100755
--- a/setup.py
+++ b/setup.py
@@ -30,7 +30,8 @@ else:
from Cython.Build import cythonize
ext_modules = cythonize(
- ["dns/*.py", "dns/rdtypes/*.py", "dns/rdtypes/*/*.py"], language_level="3"
+ ["dns/*.py", "dns/quic/*.py", "dns/rdtypes/*.py", "dns/rdtypes/*/*.py"],
+ language_level="3",
)
kwargs = {
--
2.40.1

View File

@ -1,112 +0,0 @@
From ecf2b229bd23229928599751950eda1639cd7e05 Mon Sep 17 00:00:00 2001
From: Rafael Guterres Jeffman <rjeffman@redhat.com>
Date: Wed, 14 Jun 2023 15:17:57 -0300
Subject: [PATCH 2/4] Disable SHA1 tests.
Disable SHA1 dependent tests, as SHA1 is not available on c9s/RHEL 9.
---
tests/test_dnssec.py | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/tests/test_dnssec.py b/tests/test_dnssec.py
index 098af69..920c955 100644
--- a/tests/test_dnssec.py
+++ b/tests/test_dnssec.py
@@ -603,25 +603,30 @@ class DNSSECValidatorTestCase(unittest.TestCase):
self.assertEqual(dns.dnssec.key_id(rsamd5_keys[abs_example][0]), 30239)
self.assertEqual(dns.dnssec.key_id(rsamd5_keys[abs_example][1]), 62992)
+ @unittest.skip(reason="SHA1 is not supported.")
def testAbsoluteRSAGood(self): # type: () -> None
dns.dnssec.validate(abs_soa, abs_soa_rrsig, abs_keys, None, when)
+ @unittest.skip(reason="SHA1 is not supported.")
def testDuplicateKeytag(self): # type: () -> None
dns.dnssec.validate(
abs_soa, abs_soa_rrsig, abs_keys_duplicate_keytag, None, when
)
+ @unittest.skip(reason="SHA1 is not supported.")
def testAbsoluteRSABad(self): # type: () -> None
def bad(): # type: () -> None
dns.dnssec.validate(abs_other_soa, abs_soa_rrsig, abs_keys, None, when)
self.assertRaises(dns.dnssec.ValidationFailure, bad)
+ @unittest.skip(reason="SHA1 is not supported.")
def testRelativeRSAGood(self): # type: () -> None
dns.dnssec.validate(rel_soa, rel_soa_rrsig, rel_keys, abs_dnspython_org, when)
# test the text conversion for origin too
dns.dnssec.validate(rel_soa, rel_soa_rrsig, rel_keys, "dnspython.org", when)
+ @unittest.skip(reason="SHA1 is not supported.")
def testRelativeRSABad(self): # type: () -> None
def bad(): # type: () -> None
dns.dnssec.validate(
@@ -630,6 +635,7 @@ class DNSSECValidatorTestCase(unittest.TestCase):
self.assertRaises(dns.dnssec.ValidationFailure, bad)
+ @unittest.skip(reason="SHA1 is not supported.")
def testAbsoluteDSAGood(self): # type: () -> None
dns.dnssec.validate(
abs_dsa_soa,
@@ -742,6 +748,7 @@ class DNSSECValidatorTestCase(unittest.TestCase):
rsasha512_ns, rsasha512_ns_rrsig, rsasha512_keys, None, rsasha512_when
)
+ @unittest.skip(reason="SHA1 is not supported.")
def testWildcardGoodAndBad(self):
dns.dnssec.validate(
wildcard_txt, wildcard_txt_rrsig, wildcard_keys, None, wildcard_when
@@ -768,6 +775,7 @@ class DNSSECValidatorTestCase(unittest.TestCase):
com_txt, com_txt_rrsig[0], wildcard_keys, None, wildcard_when
)
+ @unittest.skip(reason="SHA1 is not supported.")
def testAlternateParameterFormats(self): # type: () -> None
# Pass rrset and rrsigset as (name, rdataset) tuples, not rrsets
rrset = (abs_soa.name, abs_soa.to_rdataset())
@@ -882,6 +890,7 @@ class DNSSECMiscTestCase(unittest.TestCase):
class DNSSECMakeDSTestCase(unittest.TestCase):
+ @unittest.skip(reason="SHA1 is not supported.")
def testMnemonicParser(self):
good_ds_mnemonic = dns.rdata.from_text(
dns.rdataclass.IN,
@@ -891,6 +900,7 @@ class DNSSECMakeDSTestCase(unittest.TestCase):
)
self.assertEqual(good_ds, good_ds_mnemonic)
+ @unittest.skip(reason="SHA1 is not supported.")
def testMakeExampleSHA1DS(self): # type: () -> None
algorithm: Any
for algorithm in ("SHA1", "sha1", dns.dnssec.DSDigest.SHA1):
@@ -909,6 +919,7 @@ class DNSSECMakeDSTestCase(unittest.TestCase):
)
self.assertEqual(ds, example_ds_sha1)
+ @unittest.skip(reason="SHA1 is not supported.")
def testMakeExampleSHA1DSValidationOkByPolicy(self): # type: () -> None
algorithm: Any
for algorithm in ("SHA1", "sha1", dns.dnssec.DSDigest.SHA1):
@@ -924,6 +935,7 @@ class DNSSECMakeDSTestCase(unittest.TestCase):
)
self.assertEqual(ds, example_ds_sha1)
+ @unittest.skip(reason="SHA1 is not supported.")
def testMakeExampleSHA1DSDeniedByPolicy(self): # type: () -> None
with self.assertRaises(dns.dnssec.DeniedByPolicy):
ds = dns.dnssec.make_ds(abs_example, example_sep_key, "SHA1")
@@ -1174,6 +1186,7 @@ class DNSSECSignatureTestCase(unittest.TestCase):
rrsig_template = abs_soa_rrsig[0]
data = dns.dnssec._make_rrsig_signature_data(abs_soa, rrsig_template)
+ @unittest.skip(reason="SHA1 is not supported.")
def testSignatureRSASHA1(self): # type: () -> None
key = rsa.generate_private_key(
public_exponent=65537, key_size=2048, backend=default_backend()
--
2.40.1

View File

@ -1,34 +0,0 @@
From 8c23aaa4a213624cce86caa2e452ad19123d36f4 Mon Sep 17 00:00:00 2001
From: Rafael Guterres Jeffman <rjeffman@redhat.com>
Date: Wed, 14 Jun 2023 15:24:02 -0300
Subject: [PATCH 3/4] Do not use setuptools_scm[toml] for build.
---
setup.cfg | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/setup.cfg b/setup.cfg
index af48e0e..e9bec34 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -4,7 +4,7 @@ version = 2.3.0
author = Bob Halley
author_email = halley@dnspython.org
license = ISC
-license_file = LICENSE
+license_files = LICENSE
description = DNS toolkit
url = https://www.dnspython.org
project_urls =
@@ -46,7 +46,7 @@ packages =
dns.rdtypes.CH
python_requires = >=3.7
test_suite = tests
-setup_requires = setuptools>=44; setuptools_scm[toml]>=3.4.3
+setup_requires = setuptools>=44
[options.extras_require]
DOH = httpx>=0.21.1; h2>=4.1.0; requests; requests-toolbelt
--
2.40.1

View File

@ -1,26 +0,0 @@
From d8fea6c4e5512fd830c48035035ff3ea16b06444 Mon Sep 17 00:00:00 2001
From: Rafael Guterres Jeffman <rjeffman@redhat.com>
Date: Wed, 14 Jun 2023 17:06:47 -0300
Subject: [PATCH 4/4] Disable tests that require external internet connection
---
tests/util.py | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/tests/util.py b/tests/util.py
index 5518b41..87ede4c 100644
--- a/tests/util.py
+++ b/tests/util.py
@@ -27,7 +27,8 @@ import dns.rdataclass
import dns.rdatatype
# Cache for is_internet_reachable()
-_internet_reachable = None
+# RHEL 9 build environment does not have provide external network access.
+_internet_reachable = False
_have_ipv4 = False
_have_ipv6 = False
--
2.40.1

View File

@ -1,24 +0,0 @@
From 9d29457ac5e8d5ab932c62c39665ac1b057040d3 Mon Sep 17 00:00:00 2001
From: Bob Halley <halley@dnspython.org>
Date: Sat, 11 Feb 2023 15:17:27 -0800
Subject: [PATCH] Add dns.quic to setup.cfg for legacy setup.py installs [#896]
---
setup.cfg | 1 +
1 file changed, 1 insertion(+)
diff --git a/setup.cfg b/setup.cfg
index bd07111..f536eee 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -40,6 +40,7 @@ provides = dns
[options]
packages =
dns
+ dns.quic
dns.rdtypes
dns.rdtypes.IN
dns.rdtypes.ANY
--
2.41.0

View File

@ -0,0 +1,61 @@
diff -Naur dnspython-2.6.1/pyproject.toml dnspython-2.6.1-mod/pyproject.toml
--- dnspython-2.6.1/pyproject.toml 2024-02-18 15:35:12.000000000 -0300
+++ dnspython-2.6.1-mod/pyproject.toml 2024-04-30 16:01:08.055650907 -0300
@@ -6,7 +6,7 @@
name = "dnspython"
description = "DNS toolkit"
authors = [{ name = "Bob Halley", email = "halley@dnspython.org" }]
-license = "ISC"
+license = {text = "ISC"}
classifiers = [
"Development Status :: 5 - Production/Stable",
"Intended Audience :: Developers",
diff -Naur dnspython-2.6.1/setup.py dnspython-2.6.1-mod/setup.py
--- dnspython-2.6.1/setup.py 1969-12-31 21:00:00.000000000 -0300
+++ dnspython-2.6.1-mod/setup.py 2024-04-30 15:58:24.489890400 -0300
@@ -0,0 +1,45 @@
+#!/usr/bin/env python3
+#
+# Copyright (C) Dnspython Contributors, see LICENSE for text of ISC license
+#
+# Copyright (C) 2003-2007, 2009-2011 Nominum, Inc.
+#
+# Permission to use, copy, modify, and distribute this software and its
+# documentation for any purpose with or without fee is hereby granted,
+# provided that the above copyright notice and this permission notice
+# appear in all copies.
+#
+# THE SOFTWARE IS PROVIDED "AS IS" AND NOMINUM DISCLAIMS ALL WARRANTIES
+# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL NOMINUM BE LIABLE FOR
+# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
+# OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+import sys
+from setuptools import setup, find_packages
+
+
+try:
+ sys.argv.remove("--cython-compile")
+except ValueError:
+ compile_cython = False
+else:
+ compile_cython = True
+ from Cython.Build import cythonize
+
+ ext_modules = cythonize(
+ ["dns/*.py", "dns/quic/*.py", "dns/rdtypes/*.py", "dns/rdtypes/*/*.py"],
+ language_level="3",
+ )
+
+kwargs = {
+ "name": "dnspython",
+ "version": "@VERSION@",
+ "packages": find_packages(exclude=["tests"]),
+ "ext_modules": ext_modules if compile_cython else None,
+ "zip_safe": False if compile_cython else None,
+}
+
+setup(**kwargs)

View File

@ -0,0 +1,178 @@
diff -Naur dnspython-2.6.1-orig/tests/test_async.py dnspython-2.6.1-mod/tests/test_async.py
--- dnspython-2.6.1-orig/tests/test_async.py 2024-08-12 11:30:25.845242476 -0300
+++ dnspython-2.6.1-mod/tests/test_async.py 2024-08-12 17:57:20.266767286 -0300
@@ -173,7 +173,7 @@
self.assertEqual(t, ("::", 53))
-@unittest.skipIf(not tests.util.is_internet_reachable(), "Internet not reachable")
+@unittest.skip(reason="Build is failing to open /etc/resolv.conf.")
class AsyncTests(unittest.TestCase):
def setUp(self):
self.backend = dns.asyncbackend.set_default_backend("asyncio")
@@ -597,7 +597,7 @@
self.async_run(run)
-@unittest.skipIf(not tests.util.is_internet_reachable(), "Internet not reachable")
+@unittest.skip(reason="Build is failing to open /etc/resolv.conf")
class AsyncioOnlyTests(unittest.TestCase):
def setUp(self):
self.backend = dns.asyncbackend.set_default_backend("asyncio")
diff -Naur dnspython-2.6.1-orig/tests/test_resolver_override.py dnspython-2.6.1-mod/tests/test_resolver_override.py
--- dnspython-2.6.1-orig/tests/test_resolver_override.py 2024-08-12 11:30:25.846242494 -0300
+++ dnspython-2.6.1-mod/tests/test_resolver_override.py 2024-08-12 17:46:49.849623485 -0300
@@ -11,7 +11,7 @@
import tests.util
-@unittest.skipIf(not tests.util.is_internet_reachable(), "Internet not reachable")
+@unittest.skip(reason="Build is failing to open /etc/resolv.conf")
class OverrideSystemResolverTestCase(unittest.TestCase):
def setUp(self):
self.res = dns.resolver.Resolver(configure=False)
@@ -211,6 +211,7 @@
raise dns.exception.Timeout
+@unittest.skip(reason="Build is failing to open /etc/resolv.conf")
class OverrideSystemResolverUsingFakeResolverTestCase(unittest.TestCase):
def setUp(self):
self.res = FakeResolver()
@@ -240,7 +241,7 @@
socket.gethostbyaddr("bogus")
-@unittest.skipIf(not tests.util.is_internet_reachable(), "Internet not reachable")
+@unittest.skip(reason="Build is failing to open /etc/resolv.conf")
class OverrideSystemResolverUsingDefaultResolverTestCase(unittest.TestCase):
def setUp(self):
self.res = FakeResolver()
diff -Naur dnspython-2.6.1-orig/tests/test_resolver.py dnspython-2.6.1-mod/tests/test_resolver.py
--- dnspython-2.6.1-orig/tests/test_resolver.py 2024-08-12 11:30:25.846242494 -0300
+++ dnspython-2.6.1-mod/tests/test_resolver.py 2024-08-12 17:53:19.968646375 -0300
@@ -222,6 +222,7 @@
time.sleep(offset)
+@pytest.mark.skip(reason="Build is failing to open /etc/resolv.conf.")
class BaseResolverTests(unittest.TestCase):
def testRead(self):
f = StringIO(resolv_conf)
@@ -628,7 +629,7 @@
keyname = dns.name.from_text("keyname")
-@unittest.skipIf(not tests.util.is_internet_reachable(), "Internet not reachable")
+@pytest.mark.skip(reason="Build is failing to open /etc/resolv.conf.")
class LiveResolverTests(unittest.TestCase):
def testZoneForName1(self):
name = dns.name.from_text("www.dnspython.org.")
@@ -830,6 +831,7 @@
unittest.TestCase.tearDown(self)
+@pytest.mark.skip(reason="Build is failing to open /etc/resolv.conf")
class SelectResolverTestCase(
PollingMonkeyPatchMixin, LiveResolverTests, unittest.TestCase
):
@@ -839,6 +841,7 @@
if hasattr(selectors, "PollSelector"):
+ @pytest.mark.skip(reason="Build is failing to open /etc/resolv.conf")
class PollResolverTestCase(
PollingMonkeyPatchMixin, LiveResolverTests, unittest.TestCase
):
@@ -846,6 +849,7 @@
return selectors.PollSelector
+@pytest.mark.skip(reason="Build is failing to open /etc/resolv.conf")
class NXDOMAINExceptionTestCase(unittest.TestCase):
# pylint: disable=broad-except
@@ -978,6 +982,7 @@
self.assertEqual(e2.canonical_name, dns.name.from_text(cname2))
+@pytest.mark.skip(reason="Build is failing to open /etc/resolv.conf.")
class ResolverMiscTestCase(unittest.TestCase):
if sys.platform != "win32":
@@ -1007,6 +1012,7 @@
self.assertEqual(n, dns.win32util._config_domain(".home"))
+@pytest.mark.skip(reason="Build is failing to open /etc/resolv.conf")
class ResolverNameserverValidTypeTestCase(unittest.TestCase):
def test_set_nameservers_to_list(self):
resolver = dns.resolver.Resolver(configure=False)
@@ -1033,6 +1039,7 @@
resolver.nameservers = invalid_nameserver
+@unittest.skipIf(not tests.util.is_internet_reachable(), "Internet not reachable")
class NaptrNanoNameserver(Server):
def handle(self, request):
response = dns.message.make_response(request.message)
@@ -1058,10 +1065,7 @@
return response
-@unittest.skipIf(
- not (tests.util.is_internet_reachable() and _nanonameserver_available),
- "Internet and NanoAuth required",
-)
+@pytest.mark.skip(reason="Build is failing to open /etc/resolv.conf")
class NanoTests(unittest.TestCase):
def testE164Query(self):
with NaptrNanoNameserver() as na:
@@ -1125,10 +1129,7 @@
return response
-@unittest.skipIf(
- not (tests.util.is_internet_reachable() and _nanonameserver_available),
- "Internet and NanoAuth required",
-)
+@pytest.mark.skip(reason="Build is failing to open /etc/resolv.conf")
class ZoneForNameTests(unittest.TestCase):
def testNoRootSOA(self):
with AlwaysType3NXDOMAINNanoNameserver() as na:
@@ -1177,10 +1178,7 @@
# (right now it's still fast enough we don't really need it)
-@pytest.mark.skipif(
- not (tests.util.is_internet_reachable() and _nanonameserver_available),
- reason="Internet and NanoAuth required",
-)
+@pytest.mark.skip(reason="Build is failing to open /etc/resolv.conf")
def testResolverTimeout():
with DroppingNanoNameserver() as na:
res = dns.resolver.Resolver(configure=False)
@@ -1204,10 +1202,7 @@
assert isinstance(error[3], dns.exception.Timeout) # exception
-@pytest.mark.skipif(
- not (tests.util.is_internet_reachable() and _nanonameserver_available),
- reason="Internet and NanoAuth required",
-)
+@pytest.mark.skip(reason="Build is failing to open /etc/resolv.conf")
def testResolverNoNameservers():
with FormErrNanoNameserver() as na:
res = dns.resolver.Resolver(configure=False)
@@ -1235,10 +1230,7 @@
return response
-@pytest.mark.skipif(
- not (tests.util.is_internet_reachable() and _nanonameserver_available),
- reason="Internet and NanoAuth required",
-)
+@pytest.mark.skip(reason="Build is failing to open /etc/resolv.conf")
def testZoneForNameLifetimeTimeout():
with SlowAlwaysType3NXDOMAINNanoNameserver() as na:
res = dns.resolver.Resolver(configure=False)

View File

@ -4,29 +4,24 @@
%if 0%{?rhel}
%bcond_with trio
%bcond_with curio
%bcond_with doh
%else
%bcond_without trio
%bcond_without curio
%bcond_without doh
%endif
Name: python-%{py_package_name}
Version: 2.3.0
Release: 2%{?dist}
Name: python-dns
Version: 2.6.1
Release: 3%{?dist}
Summary: DNS toolkit for Python
# The entire package is licensed with both licenses, see LICENSE file
License: ISC
URL: http://www.dnspython.org
URL: https://www.dnspython.org
Source0: https://github.com/rthalley/%{pypi_name}/archive/v%{version}%{rctag}/%{pypi_name}-%{version}%{rctag}.tar.gz
Patch0: 0001-Add-missing-quic-files-to-setup.py-cythonize-887.patch
Patch1: 0002-Disable-SHA1-tests.patch
Patch2: 0003-Do-not-use-setuptools_scm-toml-for-build.patch
Patch3: 0004-Disable-tests-that-require-external-internet-connect.patch
Patch4: 0005-Add-dns.quic-to-setup.cfg-for-legacy-setup.py-install.patch
Patch1000: 1000-use-setuptools-to-build-dnspython.patch
Patch1001: 1001-disable-tests-due-to-etc-resolv-conf.patch
BuildArch: noarch
BuildRequires: python3-devel
@ -34,11 +29,6 @@ BuildRequires: python3-setuptools
BuildRequires: python3-cryptography
%if %{with trio}
BuildRequires: python3-trio
%endif
%if %{with curio}
BuildRequires: python3-curio
%endif
%if %{with trio} || %{with curio}
BuildRequires: python3-sniffio
%endif
%if %{with doh}
@ -70,6 +60,9 @@ Summary: %{summary}
%prep
%autosetup -p1 -n %{pypi_name}-%{version}%{rctag}
# Fix package version.
sed -i -e "s/@VERSION@/%{version}/" setup.py
# strip exec permissions so that we don't pick up dependencies from docs
find examples -type f | xargs chmod a-x
@ -80,42 +73,41 @@ find examples -type f | xargs chmod a-x
%py3_install
%check
# testCanonicalNameDangling is failing with
# AssertionError: <DNS name dangling-cname.dnspython.org.> != <DNS name dangling-target.dnspython.org.>
pytest -k "not testCanonicalNameDangling"
export OPENSSL_ENABLE_SHA1_SIGNATURES=yes
pytest
%files -n python3-%{py_package_name}
%license LICENSE
%doc README.md examples
%{?python_extras_subpkg:
%pycached %exclude %{python3_sitelib}/dns/_trio_backend.py
%pycached %exclude %{python3_sitelib}/dns/_curio_backend.py
}
%{python3_sitelib}/%{py_package_name}
%{python3_sitelib}/%{pypi_name}-*.egg-info
%{?python_extras_subpkg:
%python_extras_subpkg -n python3-dns -i %{python3_sitelib}/*.egg-info dnssec idna
%python_extras_subpkg -n python3-dns -i %{python3_sitelib}/dns/__init__.py dnssec idna
%if %{with doh}
%python_extras_subpkg -n python3-dns -i %{python3_sitelib}/*.egg-info doh
%python_extras_subpkg -n python3-dns -i %{python3_sitelib}/dns/__init__.py doh
%endif
%if %{with trio}
%python_extras_subpkg -n python3-dns -i %{python3_sitelib}/*.egg-info trio
%python_extras_subpkg -n python3-dns -i %{python3_sitelib}/dns/__init__.py trio
%pycached %{python3_sitelib}/dns/_trio_backend.py
%endif
%if %{with curio}
%python_extras_subpkg -n python3-dns -i %{python3_sitelib}/*.egg-info curio
%pycached %{python3_sitelib}/dns/_curio_backend.py
%endif
# end of python_extras_subpkg
}
%changelog
* Mon May 26 2023 Rafael Jeffman <rjeffman@redhat.com> - 2.3.0-2
* Tue Aug 20 2024 Rafael Jeffman <rjeffman@redhat.com> - 2.6.1-3
- Ensure dns.rdtypes subpackages are available
Related: RHEL-32663
* Mon Aug 19 2024 Rafael Jeffman <rjeffman@redhat.com> - 2.6.1-2
- Add missing files due to build change from hatchling to setuptools
Related: RHEL-32663
* Fri Aug 16 2024 Rafael Jeffman <rjeffman@redhat.com> - 2.6.1-1
- Rebase to 2.6.1
Resolves: RHEL-32628, RHEL-32663
* Mon Jun 26 2023 Rafael Jeffman <rjeffman@redhat.com> - 2.3.0-2
- Fix build for legacy setup.py
Related: rhbz#2177854