From 78fc6e515e108622d651d0252376080dc0ed231d Mon Sep 17 00:00:00 2001 From: Ralph Bean Date: Mon, 28 Oct 2013 13:06:41 -0400 Subject: [PATCH 1/3] Update patch to find ca_certs in the correct place. --- python-urllib3-default-ssl-cert-validate.patch | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python-urllib3-default-ssl-cert-validate.patch b/python-urllib3-default-ssl-cert-validate.patch index d767d5f..3278560 100644 --- a/python-urllib3-default-ssl-cert-validate.patch +++ b/python-urllib3-default-ssl-cert-validate.patch @@ -21,7 +21,7 @@ index 621e1a8..7f4c322 100644 - key_file=None, cert_file=None, cert_reqs=None, - ca_certs=None, ssl_version=None, + key_file=None, cert_file=None, cert_reqs=ssl.CERT_REQUIRED, -+ ca_certs='/etc/ssl/certs/ca-certificates.crt', ssl_version=None, ++ ca_certs='/etc/ssl/certs/ca-bundle.crt', ssl_version=None, assert_hostname=None, assert_fingerprint=None): HTTPConnectionPool.__init__(self, host, port, From 901b725a7c7563c778bd9fb945486804a3bf4676 Mon Sep 17 00:00:00 2001 From: Ralph Bean Date: Mon, 28 Oct 2013 13:11:27 -0400 Subject: [PATCH 2/3] Bump release for ca_cert patch. --- python-urllib3.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/python-urllib3.spec b/python-urllib3.spec index e1594ea..9f6edc7 100644 --- a/python-urllib3.spec +++ b/python-urllib3.spec @@ -8,7 +8,7 @@ Name: python-%{srcname} Version: 1.7 -Release: 3%{?dist} +Release: 4%{?dist} Summary: Python HTTP library with thread-safe connection pooling and file post License: MIT @@ -129,6 +129,9 @@ popd %endif # with_python3 %changelog +* Mon Oct 28 2013 Ralph Bean - 1.7-4 +- Update patch to find ca_certs in the correct place (#1024052) + * Wed Aug 28 2013 Ralph Bean - 1.7-3 - Bump release again, just to push an unpaired update. From adbfd8d63754cca51c6839e922aacb7078a1bf44 Mon Sep 17 00:00:00 2001 From: Arun S A G Date: Mon, 28 Apr 2014 00:00:29 -0700 Subject: [PATCH 3/3] Update to upstream version 1.8.2 - Refactor python-urllib3-unbundle.patch --- .gitignore | 1 + ...on-urllib3-default-ssl-cert-validate.patch | 30 --- python-urllib3-old-nose-compat.patch | 15 +- python-urllib3-unbundle.patch | 239 ++++++++---------- python-urllib3.spec | 23 +- sources | 2 +- 6 files changed, 128 insertions(+), 182 deletions(-) delete mode 100644 python-urllib3-default-ssl-cert-validate.patch diff --git a/.gitignore b/.gitignore index c8b02d5..62b8928 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ /urllib3-1.5.tar.gz /urllib3-1.7.tar.gz +/urllib3-1.8.2.tar.gz diff --git a/python-urllib3-default-ssl-cert-validate.patch b/python-urllib3-default-ssl-cert-validate.patch deleted file mode 100644 index 3278560..0000000 --- a/python-urllib3-default-ssl-cert-validate.patch +++ /dev/null @@ -1,30 +0,0 @@ -From 2d80688fab4ae0af2d4bd20568c328bd2aae128c Mon Sep 17 00:00:00 2001 -From: Ralph Bean -Date: Thu, 22 Aug 2013 14:18:45 -0400 -Subject: [PATCH] Require SSL certificate validation by default by using - CERT_REQUIRED and using the system /etc/ssl/certs/ca-certificates.crt - -Bug-Fedora: https://bugzilla.redhat.com/show_bug.cgi?id=855320 -Bug-Ubuntu: https://launchpad.net/bugs/1047054 ---- - urllib3/connectionpool.py | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/urllib3/connectionpool.py b/urllib3/connectionpool.py -index 621e1a8..7f4c322 100644 ---- a/urllib3/connectionpool.py -+++ b/urllib3/connectionpool.py -@@ -556,8 +556,8 @@ class HTTPSConnectionPool(HTTPConnectionPool): - strict=False, timeout=None, maxsize=1, - block=False, headers=None, - _proxy=None, _proxy_headers=None, -- key_file=None, cert_file=None, cert_reqs=None, -- ca_certs=None, ssl_version=None, -+ key_file=None, cert_file=None, cert_reqs=ssl.CERT_REQUIRED, -+ ca_certs='/etc/ssl/certs/ca-bundle.crt', ssl_version=None, - assert_hostname=None, assert_fingerprint=None): - - HTTPConnectionPool.__init__(self, host, port, --- -1.8.3.1 - diff --git a/python-urllib3-old-nose-compat.patch b/python-urllib3-old-nose-compat.patch index a9e69fa..986f9d7 100644 --- a/python-urllib3-old-nose-compat.patch +++ b/python-urllib3-old-nose-compat.patch @@ -1,22 +1,23 @@ -From e5a73988f6790fb6961801f0db5992d8bd353e67 Mon Sep 17 00:00:00 2001 +From d1b64a6dc91bc9c350ac503febc34340c94c9066 Mon Sep 17 00:00:00 2001 From: Ralph Bean -Date: Thu, 22 Aug 2013 14:42:58 -0400 -Subject: [PATCH] old nose compat +Date: Wed, 25 Sep 2013 13:28:37 -0400 +Subject: [PATCH 3/3] old nose compat --- - setup.cfg | 2 -- - 1 file changed, 2 deletions(-) + setup.cfg | 3 --- + 1 file changed, 3 deletions(-) diff --git a/setup.cfg b/setup.cfg -index 8f6983c..a8b1d1d 100644 +index 8f1fee7..a8b1d1d 100644 --- a/setup.cfg +++ b/setup.cfg -@@ -1,8 +1,6 @@ +@@ -1,9 +1,6 @@ [nosetests] -logging-clear-handlers = true with-coverage = true cover-package = urllib3 -cover-min-percentage = 100 +-cover-erase = true [egg_info] tag_build = diff --git a/python-urllib3-unbundle.patch b/python-urllib3-unbundle.patch index cbbcd4a..f0f11c7 100644 --- a/python-urllib3-unbundle.patch +++ b/python-urllib3-unbundle.patch @@ -1,155 +1,133 @@ -From 67a50e427b3feef042ce9817b0ad0a05f01fefb7 Mon Sep 17 00:00:00 2001 -From: Ralph Bean -Date: Thu, 22 Aug 2013 14:37:02 -0400 -Subject: [PATCH] unbundle - ---- - setup.py | 1 - - test-requirements.txt | 2 ++ - test/test_collections.py | 2 +- - test/test_connectionpool.py | 9 ++++++++- - test/test_fields.py | 2 +- - test/test_filepost.py | 3 ++- - urllib3.egg-info/PKG-INFO | 2 +- - urllib3.egg-info/SOURCES.txt | 6 +----- - urllib3/_collections.py | 2 +- - urllib3/connectionpool.py | 10 ++++++++-- - urllib3/fields.py | 2 +- - urllib3/filepost.py | 4 ++-- - urllib3/response.py | 2 +- - urllib3/util.py | 2 +- - 14 files changed, 30 insertions(+), 19 deletions(-) - -diff --git a/setup.py b/setup.py -index 392b885..82af89c 100644 ---- a/setup.py -+++ b/setup.py +diff -up ./dummyserver/handlers.py.orig ./dummyserver/handlers.py +--- ./dummyserver/handlers.py.orig 2014-04-21 01:19:35.209031172 -0700 ++++ ./dummyserver/handlers.py 2014-04-21 01:19:54.911126953 -0700 +@@ -190,7 +190,7 @@ def _parse_header(line): + """ + import tornado.httputil + import email.utils +- from urllib3.packages import six ++ import six + if not six.PY3: + line = line.encode('utf-8') + parts = tornado.httputil._parseparam(';' + line) +diff -up ./setup.py.orig ./setup.py +--- ./setup.py.orig 2014-04-21 00:58:19.713830394 -0700 ++++ ./setup.py 2014-04-21 01:30:40.966267728 -0700 @@ -45,7 +45,6 @@ setup(name='urllib3', url='http://urllib3.readthedocs.org/', license='MIT', - packages=['urllib3', 'dummyserver', + packages=['urllib3', - 'urllib3.packages', 'urllib3.packages.ssl_match_hostname', - 'urllib3.contrib', + 'urllib3.contrib', 'urllib3.util', ], requires=requirements, -diff --git a/test-requirements.txt b/test-requirements.txt -index 1c90c10..e9a71d9 100644 ---- a/test-requirements.txt -+++ b/test-requirements.txt -@@ -1,3 +1,5 @@ - nose==1.3 - tornado==2.4.1 +diff -up ./test-requirements.txt.orig ./test-requirements.txt +--- ./test-requirements.txt.orig 2014-04-21 01:21:44.452659485 -0700 ++++ ./test-requirements.txt 2014-04-21 01:21:59.317731751 -0700 +@@ -2,3 +2,5 @@ nose==1.3 + mock==1.0.1 + tornado==3.1.1 coverage==3.6 +six +backports.ssl_match_hostname -diff --git a/test/test_collections.py b/test/test_collections.py -index b44c58a..a8f2e55 100644 ---- a/test/test_collections.py -+++ b/test/test_collections.py -@@ -1,7 +1,7 @@ - import unittest - - from urllib3._collections import RecentlyUsedContainer as Container +diff -up ./test/test_collections.py.orig ./test/test_collections.py +--- ./test/test_collections.py.orig 2014-04-21 00:58:40.569931786 -0700 ++++ ./test/test_collections.py 2014-04-21 01:18:59.041855346 -0700 +@@ -4,7 +4,7 @@ from urllib3._collections import ( + HTTPHeaderDict, + RecentlyUsedContainer as Container + ) -from urllib3.packages import six +import six xrange = six.moves.xrange -diff --git a/test/test_connectionpool.py b/test/test_connectionpool.py -index a7e104a..876b4ee 100644 ---- a/test/test_connectionpool.py -+++ b/test/test_connectionpool.py -@@ -1,7 +1,14 @@ - import unittest - - from urllib3.connectionpool import connection_from_url, HTTPConnectionPool +diff -up ./test/test_connectionpool.py.orig ./test/test_connectionpool.py +--- ./test/test_connectionpool.py.orig 2014-04-21 00:58:48.097968383 -0700 ++++ ./test/test_connectionpool.py 2014-04-21 01:18:48.335803299 -0700 +@@ -6,7 +6,14 @@ from urllib3.connectionpool import ( + HTTPConnectionPool, + ) + from urllib3.util import Timeout -from urllib3.packages.ssl_match_hostname import CertificateError -+ +try: + # python3.2+ + from ssl import CertificateError +except ImportError: + # Older python where the backport from pypi is installed + from backports.ssl_match_hostname import CertificateError ++ + from urllib3.exceptions import ( ClosedPoolError, EmptyPoolError, -diff --git a/test/test_fields.py b/test/test_fields.py -index 888c2d5..73dcd91 100644 ---- a/test/test_fields.py -+++ b/test/test_fields.py +diff -up ./test/test_fields.py.orig ./test/test_fields.py +--- ./test/test_fields.py.orig 2014-04-21 00:58:57.501014095 -0700 ++++ ./test/test_fields.py 2014-04-21 01:18:55.321837262 -0700 @@ -1,7 +1,7 @@ import unittest from urllib3.fields import guess_content_type, RequestField --from urllib3.packages.six import b, u -+from six import b, u +-from urllib3.packages.six import u ++from six import u class TestRequestField(unittest.TestCase): -diff --git a/test/test_filepost.py b/test/test_filepost.py -index ca33d61..7176a29 100644 ---- a/test/test_filepost.py -+++ b/test/test_filepost.py -@@ -2,7 +2,8 @@ import unittest +diff -up ./test/test_filepost.py.orig ./test/test_filepost.py +--- ./test/test_filepost.py.orig 2014-04-21 00:59:05.128051174 -0700 ++++ ./test/test_filepost.py 2014-04-21 01:18:52.414823129 -0700 +@@ -2,7 +2,7 @@ import unittest from urllib3.filepost import encode_multipart_formdata, iter_fields from urllib3.fields import RequestField -from urllib3.packages.six import b, u -+ +from six import b, u BOUNDARY = '!! test boundary !!' -diff --git a/urllib3.egg-info/PKG-INFO b/urllib3.egg-info/PKG-INFO -index 13a467c..8232870 100644 ---- a/urllib3.egg-info/PKG-INFO -+++ b/urllib3.egg-info/PKG-INFO -@@ -1,4 +1,4 @@ --Metadata-Version: 1.0 -+Metadata-Version: 1.1 - Name: urllib3 - Version: 1.7 - Summary: HTTP library with thread-safe connection pooling, file post, and more. -diff --git a/urllib3.egg-info/SOURCES.txt b/urllib3.egg-info/SOURCES.txt -index 32759d9..9545027 100644 ---- a/urllib3.egg-info/SOURCES.txt -+++ b/urllib3.egg-info/SOURCES.txt -@@ -38,8 +38,4 @@ urllib3.egg-info/dependency_links.txt - urllib3.egg-info/top_level.txt - urllib3/contrib/__init__.py - urllib3/contrib/ntlmpool.py --urllib3/contrib/pyopenssl.py --urllib3/packages/__init__.py --urllib3/packages/ordered_dict.py --urllib3/packages/six.py --urllib3/packages/ssl_match_hostname/__init__.py -\ No newline at end of file -+urllib3/contrib/pyopenssl.py -\ No newline at end of file -diff --git a/urllib3/_collections.py b/urllib3/_collections.py -index 282b8d5..9210312 100644 ---- a/urllib3/_collections.py -+++ b/urllib3/_collections.py -@@ -10,7 +10,7 @@ from threading import RLock +diff -up ./urllib3/_collections.py.orig ./urllib3/_collections.py +--- ./urllib3/_collections.py.orig 2014-04-21 00:59:11.682083036 -0700 ++++ ./urllib3/_collections.py 2014-04-21 01:18:57.203846411 -0700 +@@ -19,8 +19,8 @@ except ImportError: # Platform-specific: try: # Python 2.7+ from collections import OrderedDict except ImportError: - from .packages.ordered_dict import OrderedDict -+ from ordereddict import OrderedDict +-from .packages.six import itervalues ++ from ordered_dict import OrderedDict ++from six import itervalues - __all__ = ['RecentlyUsedContainer'] -diff --git a/urllib3/connectionpool.py b/urllib3/connectionpool.py -index 7f4c322..21dec73 100644 ---- a/urllib3/connectionpool.py -+++ b/urllib3/connectionpool.py -@@ -57,8 +57,14 @@ from .exceptions import ( + __all__ = ['RecentlyUsedContainer', 'HTTPHeaderDict'] +diff -up ./urllib3/connectionpool.py.orig ./urllib3/connectionpool.py +--- ./urllib3/connectionpool.py.orig 2014-04-21 00:59:20.406125448 -0700 ++++ ./urllib3/connectionpool.py 2014-04-21 01:06:56.579343119 -0700 +@@ -31,8 +31,15 @@ from .exceptions import ( + ReadTimeoutError, ProxyError, ) - --from .packages.ssl_match_hostname import match_hostname, CertificateError +-from .packages.ssl_match_hostname import CertificateError +-from .packages import six ++try: ++ # python3.2+ ++ from ssl import match_hostname, CertificateError ++except ImportError: ++ # Older python where the backport from pypi is installed ++ from backports.ssl_match_hostname import match_hostname, CertificateError ++import six ++ ++ + from .connection import ( + port_by_scheme, + DummyConnection, +diff -up ./urllib3/connection.py.orig ./urllib3/connection.py +--- ./urllib3/connection.py.orig 2014-04-21 01:14:17.899488582 -0700 ++++ ./urllib3/connection.py 2014-04-21 01:16:00.490987327 -0700 +@@ -38,8 +38,15 @@ except (ImportError, AttributeError): # + from .exceptions import ( + ConnectTimeoutError, + ) +-from .packages.ssl_match_hostname import match_hostname -from .packages import six +try: + # python3.2+ @@ -159,13 +137,13 @@ index 7f4c322..21dec73 100644 + from backports.ssl_match_hostname import match_hostname, CertificateError + +import six - - - xrange = six.moves.xrange -diff --git a/urllib3/fields.py b/urllib3/fields.py -index ed01765..7a33b95 100644 ---- a/urllib3/fields.py -+++ b/urllib3/fields.py ++ + from .util import ( + assert_fingerprint, + resolve_cert_reqs, +diff -up ./urllib3/fields.py.orig ./urllib3/fields.py +--- ./urllib3/fields.py.orig 2014-04-21 00:59:31.661180164 -0700 ++++ ./urllib3/fields.py 2014-04-21 01:09:04.310964082 -0700 @@ -7,7 +7,7 @@ import email.utils import mimetypes @@ -175,10 +153,9 @@ index ed01765..7a33b95 100644 def guess_content_type(filename, default='application/octet-stream'): -diff --git a/urllib3/filepost.py b/urllib3/filepost.py -index 4575582..bc4a161 100644 ---- a/urllib3/filepost.py -+++ b/urllib3/filepost.py +diff -up ./urllib3/filepost.py.orig ./urllib3/filepost.py +--- ./urllib3/filepost.py.orig 2014-04-21 00:59:39.538218457 -0700 ++++ ./urllib3/filepost.py 2014-04-21 01:08:14.138720171 -0700 @@ -10,8 +10,8 @@ import mimetypes from uuid import uuid4 from io import BytesIO @@ -190,32 +167,26 @@ index 4575582..bc4a161 100644 from .fields import RequestField writer = codecs.lookup('utf-8')[3] -diff --git a/urllib3/response.py b/urllib3/response.py -index c7f93b8..a257cd7 100644 ---- a/urllib3/response.py -+++ b/urllib3/response.py -@@ -10,7 +10,7 @@ import zlib - import io +diff -up ./urllib3/response.py.orig ./urllib3/response.py +--- ./urllib3/response.py.orig 2014-04-21 00:59:47.622257758 -0700 ++++ ./urllib3/response.py 2014-04-21 01:09:15.423018103 -0700 +@@ -11,7 +11,7 @@ import io + from ._collections import HTTPHeaderDict from .exceptions import DecodeError -from .packages.six import string_types as basestring, binary_type -+from six import string_types as basestring, binary_type ++from six import string_types as basestring, binary_type from .util import is_fp_closed -diff --git a/urllib3/util.py b/urllib3/util.py -index 39bceab..55faae5 100644 ---- a/urllib3/util.py -+++ b/urllib3/util.py -@@ -31,7 +31,7 @@ try: # Test for SSL features - except ImportError: - pass +diff -up ./urllib3/util/request.py.orig ./urllib3/util/request.py +--- ./urllib3/util/request.py.orig 2014-04-21 01:10:59.339523289 -0700 ++++ ./urllib3/util/request.py 2014-04-21 01:12:02.663831138 -0700 +@@ -1,6 +1,6 @@ + from base64 import b64encode --from .packages import six +-from ..packages import six +import six - from .exceptions import LocationParseError, SSLError --- -1.8.3.1 - + ACCEPT_ENCODING = 'gzip,deflate' diff --git a/python-urllib3.spec b/python-urllib3.spec index 9f6edc7..9e3248d 100644 --- a/python-urllib3.spec +++ b/python-urllib3.spec @@ -7,21 +7,17 @@ %global srcname urllib3 Name: python-%{srcname} -Version: 1.7 -Release: 4%{?dist} +Version: 1.8.2 +Release: 1%{?dist} Summary: Python HTTP library with thread-safe connection pooling and file post License: MIT URL: http://urllib3.readthedocs.org/ Source0: http://pypi.python.org/packages/source/u/%{srcname}/%{srcname}-%{version}.tar.gz -# Patch to change default behaviour to check SSL certs for validity -# https://bugzilla.redhat.com/show_bug.cgi?id=855320 -Patch0: python-urllib3-default-ssl-cert-validate.patch - ### TODO: Send this to upstream urllib3 # make all imports of things in packages try system copies first -Patch1: python-urllib3-unbundle.patch +Patch0: python-urllib3-unbundle.patch # Remove logging-clear-handlers from setup.cfg because it's not available in RHEL6's nose Patch100: python-urllib3-old-nose-compat.patch @@ -40,6 +36,7 @@ Requires: python-ordereddict BuildRequires: python2-devel # For unittests BuildRequires: python-nose +BuildRequires: python-mock BuildRequires: python-six BuildRequires: python-tornado BuildRequires: python-backports-ssl_match_hostname @@ -48,6 +45,7 @@ BuildRequires: python-backports-ssl_match_hostname BuildRequires: python3-devel # For unittests BuildRequires: python3-nose +BuildRequires: python3-mock BuildRequires: python3-six BuildRequires: python3-tornado %endif # with_python3 @@ -72,7 +70,6 @@ Python3 HTTP module with connection pooling and file POST abilities. rm -rf urllib3/packages/ %patch0 -p1 -%patch1 -p1 %if 0%{?rhel} && 0%{?rhel} <= 6 %patch100 -p1 %endif @@ -129,8 +126,14 @@ popd %endif # with_python3 %changelog -* Mon Oct 28 2013 Ralph Bean - 1.7-4 -- Update patch to find ca_certs in the correct place (#1024052) +* Mon Apr 21 2014 Arun S A G - 1.8.2-1 +- Update to latest upstream version + +* Mon Oct 28 2013 Ralph Bean - 1.7.1-2 +- Update patch to find ca_certs in the correct location. + +* Wed Sep 25 2013 Ralph Bean - 1.7.1-1 +- Latest upstream with support for a new timeout class and py3.4. * Wed Aug 28 2013 Ralph Bean - 1.7-3 - Bump release again, just to push an unpaired update. diff --git a/sources b/sources index b55595f..c2fd220 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -a055b7f51b0c9ffadd7172c21b2885a3 urllib3-1.7.tar.gz +52f7513335dfd0943082cbb7400d693e urllib3-1.8.2.tar.gz