Bring python2 subpackage back and fix weak dependencies
This commit is contained in:
parent
d7c591ffd9
commit
6e0db25373
99
base64.patch
Normal file
99
base64.patch
Normal file
@ -0,0 +1,99 @@
|
||||
From f36ac6022a2a3d5b067387908aa31932234a31e1 Mon Sep 17 00:00:00 2001
|
||||
From: Lumir Balhar <lbalhar@redhat.com>
|
||||
Date: Fri, 17 Apr 2020 08:01:22 +0200
|
||||
Subject: [PATCH] Backwards compatibility for base64 module
|
||||
|
||||
---
|
||||
dns/tsigkeyring.py | 16 ++++++++++++----
|
||||
tests/test_tsigkeyring.py | 39 +++++++++++++++++++++++++++++++++++++++
|
||||
2 files changed, 51 insertions(+), 4 deletions(-)
|
||||
create mode 100644 tests/test_tsigkeyring.py
|
||||
|
||||
diff --git a/dns/tsigkeyring.py b/dns/tsigkeyring.py
|
||||
index 5e5fe1c..1dab2aa 100644
|
||||
--- a/dns/tsigkeyring.py
|
||||
+++ b/dns/tsigkeyring.py
|
||||
@@ -19,7 +19,14 @@
|
||||
|
||||
from dns._compat import maybe_decode, maybe_encode
|
||||
|
||||
-import base64
|
||||
+
|
||||
+try:
|
||||
+ # New in version 3.1
|
||||
+ from base64 import decodebytes, encodebytes
|
||||
+except ImportError:
|
||||
+ # Deprecated since version 3.1 and removed since 3.9
|
||||
+ from base64 import decodestring as decodebytes
|
||||
+ from base64 import encodestring as encodebytes
|
||||
|
||||
import dns.name
|
||||
|
||||
@@ -32,7 +39,7 @@ def from_text(textring):
|
||||
keyring = {}
|
||||
for keytext in textring:
|
||||
keyname = dns.name.from_text(keytext)
|
||||
- secret = base64.decodestring(maybe_encode(textring[keytext]))
|
||||
+ secret = decodebytes(textring[keytext].encode())
|
||||
keyring[keyname] = secret
|
||||
return keyring
|
||||
|
||||
@@ -44,7 +51,8 @@ def to_text(keyring):
|
||||
|
||||
textring = {}
|
||||
for keyname in keyring:
|
||||
- keytext = maybe_decode(keyname.to_text())
|
||||
- secret = maybe_decode(base64.encodestring(keyring[keyname]))
|
||||
+ keytext = keyname.to_text()
|
||||
+ # rstrip to get rid of the \n encoding adds
|
||||
+ secret = encodebytes(keyring[keyname]).decode().rstrip()
|
||||
textring[keytext] = secret
|
||||
return textring
|
||||
diff --git a/tests/test_tsigkeyring.py b/tests/test_tsigkeyring.py
|
||||
new file mode 100644
|
||||
index 0000000..17177c0
|
||||
--- /dev/null
|
||||
+++ b/tests/test_tsigkeyring.py
|
||||
@@ -0,0 +1,39 @@
|
||||
+# Copyright (C) Dnspython Contributors, see LICENSE for text of ISC license
|
||||
+
|
||||
+try:
|
||||
+ # New in version 3.1
|
||||
+ from base64 import decodebytes
|
||||
+except ImportError:
|
||||
+ # Deprecated since version 3.1 and removed since 3.9
|
||||
+ from base64 import decodestring as decodebytes
|
||||
+
|
||||
+import unittest
|
||||
+
|
||||
+import dns.tsigkeyring
|
||||
+
|
||||
+text_keyring = {
|
||||
+ 'keyname.' : 'NjHwPsMKjdN++dOfE5iAiQ=='
|
||||
+}
|
||||
+
|
||||
+rich_keyring = {
|
||||
+ dns.name.from_text('keyname.') : \
|
||||
+ decodebytes('NjHwPsMKjdN++dOfE5iAiQ=='.encode())
|
||||
+}
|
||||
+
|
||||
+class TSIGKeyRingTestCase(unittest.TestCase):
|
||||
+
|
||||
+ def test_from_text(self):
|
||||
+ """text keyring -> rich keyring"""
|
||||
+ rkeyring = dns.tsigkeyring.from_text(text_keyring)
|
||||
+ self.assertEqual(rkeyring, rich_keyring)
|
||||
+
|
||||
+ def test_to_text(self):
|
||||
+ """text keyring -> rich keyring -> text keyring"""
|
||||
+ tkeyring = dns.tsigkeyring.to_text(rich_keyring)
|
||||
+ self.assertEqual(tkeyring, text_keyring)
|
||||
+
|
||||
+ def test_from_and_to_text(self):
|
||||
+ """text keyring -> rich keyring -> text keyring"""
|
||||
+ rkeyring = dns.tsigkeyring.from_text(text_keyring)
|
||||
+ tkeyring = dns.tsigkeyring.to_text(rkeyring)
|
||||
+ self.assertEqual(tkeyring, text_keyring)
|
||||
--
|
||||
2.25.2
|
||||
|
@ -1,60 +0,0 @@
|
||||
diff -Naur dnspython-1.16.0-orig/dns/tsigkeyring.py dnspython-1.16.0/dns/tsigkeyring.py
|
||||
--- dnspython-1.16.0-orig/dns/tsigkeyring.py 2018-12-01 10:25:27.000000000 -0500
|
||||
+++ dnspython-1.16.0/dns/tsigkeyring.py 2020-04-15 15:25:22.026211793 -0400
|
||||
@@ -32,7 +32,7 @@
|
||||
keyring = {}
|
||||
for keytext in textring:
|
||||
keyname = dns.name.from_text(keytext)
|
||||
- secret = base64.decodestring(maybe_encode(textring[keytext]))
|
||||
+ secret = base64.decodebytes(textring[keytext].encode())
|
||||
keyring[keyname] = secret
|
||||
return keyring
|
||||
|
||||
@@ -44,7 +44,8 @@
|
||||
|
||||
textring = {}
|
||||
for keyname in keyring:
|
||||
- keytext = maybe_decode(keyname.to_text())
|
||||
- secret = maybe_decode(base64.encodestring(keyring[keyname]))
|
||||
+ keytext = keyname.to_text()
|
||||
+ # rstrip to get rid of the \n encoding adds
|
||||
+ secret = base64.encodebytes(keyring[keyname]).decode().rstrip()
|
||||
textring[keytext] = secret
|
||||
return textring
|
||||
diff -Naur dnspython-1.16.0-orig/tests/test_tsigkeyring.py dnspython-1.16.0/tests/test_tsigkeyring.py
|
||||
--- dnspython-1.16.0-orig/tests/test_tsigkeyring.py 1969-12-31 19:00:00.000000000 -0500
|
||||
+++ dnspython-1.16.0/tests/test_tsigkeyring.py 2020-04-15 15:26:16.884138201 -0400
|
||||
@@ -0,0 +1,33 @@
|
||||
+# Copyright (C) Dnspython Contributors, see LICENSE for text of ISC license
|
||||
+
|
||||
+import base64
|
||||
+import unittest
|
||||
+
|
||||
+import dns.tsigkeyring
|
||||
+
|
||||
+text_keyring = {
|
||||
+ 'keyname.' : 'NjHwPsMKjdN++dOfE5iAiQ=='
|
||||
+}
|
||||
+
|
||||
+rich_keyring = {
|
||||
+ dns.name.from_text('keyname.') : \
|
||||
+ base64.decodebytes('NjHwPsMKjdN++dOfE5iAiQ=='.encode())
|
||||
+}
|
||||
+
|
||||
+class TSIGKeyRingTestCase(unittest.TestCase):
|
||||
+
|
||||
+ def test_from_text(self):
|
||||
+ """text keyring -> rich keyring"""
|
||||
+ rkeyring = dns.tsigkeyring.from_text(text_keyring)
|
||||
+ self.assertEqual(rkeyring, rich_keyring)
|
||||
+
|
||||
+ def test_to_text(self):
|
||||
+ """text keyring -> rich keyring -> text keyring"""
|
||||
+ tkeyring = dns.tsigkeyring.to_text(rich_keyring)
|
||||
+ self.assertEqual(tkeyring, text_keyring)
|
||||
+
|
||||
+ def test_from_and_to_text(self):
|
||||
+ """text keyring -> rich keyring -> text keyring"""
|
||||
+ rkeyring = dns.tsigkeyring.from_text(text_keyring)
|
||||
+ tkeyring = dns.tsigkeyring.to_text(rkeyring)
|
||||
+ self.assertEqual(tkeyring, text_keyring)
|
@ -1,12 +1,18 @@
|
||||
%global pypi_name dnspython
|
||||
%global py_package_name dns
|
||||
|
||||
# python2-dns exists because mailman and trac-spamfilter-plugin
|
||||
# need it and both have fesco exception to stay in fedora for a while
|
||||
# https://pagure.io/fesco/issue/2312
|
||||
# https://pagure.io/fesco/issue/2266
|
||||
%bcond_without python2
|
||||
|
||||
# Disable dependency generator until it has test code
|
||||
%{?python_disable_dependency_generator}
|
||||
|
||||
Name: python-%{py_package_name}
|
||||
Version: 1.16.0
|
||||
Release: 9%{?dist}
|
||||
Release: 10%{?dist}
|
||||
Summary: DNS toolkit for Python
|
||||
|
||||
License: MIT
|
||||
@ -22,12 +28,15 @@ BuildArch: noarch
|
||||
|
||||
Patch0: unicode_label_escapify.patch
|
||||
Patch1: collections_abc.patch
|
||||
Patch2: python-dns-1.16-base64.patch
|
||||
Patch2: base64.patch
|
||||
|
||||
BuildRequires: python3-devel
|
||||
BuildRequires: python3-setuptools
|
||||
Recommends: python3-ecdsa
|
||||
Recommends: python3-pycryptodomex
|
||||
|
||||
%if %{with python2}
|
||||
BuildRequires: python2-devel
|
||||
BuildRequires: python2-setuptools
|
||||
%endif
|
||||
|
||||
%global _description %{expand:
|
||||
dnspython is a DNS toolkit for Python. It supports almost all record
|
||||
@ -43,11 +52,21 @@ manipulation of DNS zones, messages, names, and records.
|
||||
%description %_description
|
||||
%package -n python3-%{py_package_name}
|
||||
Summary: %{summary}
|
||||
BuildRequires: python3-devel
|
||||
Recommends: python3-ecdsa
|
||||
Recommends: python3-pycryptodomex
|
||||
%{?python_provide:%python_provide python3-%{py_package_name}}
|
||||
|
||||
%description -n python3-%{py_package_name} %_description
|
||||
|
||||
%if %{with python2}
|
||||
%package -n python2-%{py_package_name}
|
||||
Summary: %{summary}
|
||||
Recommends: python2-pycryptodomex
|
||||
%{?python_provide:%python_provide python2-%{py_package_name}}
|
||||
|
||||
%description -n python2-%{py_package_name} %_description
|
||||
%endif
|
||||
|
||||
%prep
|
||||
%autosetup -p1 -n %{pypi_name}-%{version}
|
||||
|
||||
@ -56,12 +75,23 @@ find examples -type f | xargs chmod a-x
|
||||
|
||||
%build
|
||||
%py3_build
|
||||
%if %{with python2}
|
||||
%py2_build
|
||||
%endif
|
||||
|
||||
%install
|
||||
%py3_install
|
||||
%if %{with python2}
|
||||
%py2_install
|
||||
%endif
|
||||
|
||||
%check
|
||||
%{python3} setup.py test
|
||||
%if %{with python2}
|
||||
cp %{SOURCE1} .
|
||||
%{python2} setup.py test
|
||||
rm typing.py{,?}
|
||||
%endif
|
||||
|
||||
%files -n python3-%{py_package_name}
|
||||
%license LICENSE
|
||||
@ -69,7 +99,19 @@ find examples -type f | xargs chmod a-x
|
||||
%{python3_sitelib}/%{py_package_name}
|
||||
%{python3_sitelib}/%{pypi_name}-*.egg-info
|
||||
|
||||
%if %{with python2}
|
||||
%files -n python2-%{py_package_name}
|
||||
%license LICENSE
|
||||
%doc README.md examples
|
||||
%{python2_sitelib}/%{py_package_name}
|
||||
%{python2_sitelib}/%{pypi_name}-*.egg-info
|
||||
%endif
|
||||
|
||||
%changelog
|
||||
* Fri Apr 17 2020 Lumír Balhar <lbalhar@redhat.com> - 1.16.0-10
|
||||
- Bring python2 subpackage back
|
||||
- Fix weak dependencies
|
||||
|
||||
* Wed Apr 15 2020 Paul Wouters <pwouters@redhat.com> - 1.16.0-9
|
||||
- Remove python2 and "other_python3" support
|
||||
- Resolves: rhbz#1802998 Make pycryptodomex and ecdsa weak dependencies of python-dns
|
||||
|
Loading…
Reference in New Issue
Block a user