Compare commits

...
Sign in to create a new pull request.

1 commit

Author SHA1 Message Date
Erik Johnson
06f8836963 Initial el5 build 2014-08-11 18:18:31 -05:00
6 changed files with 232 additions and 315 deletions

View file

@ -0,0 +1,28 @@
From ea36acfc8a997a19ba1ead58de0d1f01e9eb540f Mon Sep 17 00:00:00 2001
From: kevin <kevinbjiang@gmail.com>
Date: Thu, 30 Aug 2012 00:14:12 -0400
Subject: [PATCH 1/4] Fix overwritten Accept header when proxy is used
When a request specifies both an Accept header and a proxy server, the
Accept header value is overwritten.
---
urllib3/poolmanager.py | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/urllib3/poolmanager.py b/urllib3/poolmanager.py
index 8f5b54c..7d7d6e4 100644
--- a/urllib3/poolmanager.py
+++ b/urllib3/poolmanager.py
@@ -141,7 +141,8 @@ def _set_proxy_headers(self, headers=None):
headers = headers or {}
# Same headers are curl passes for --proxy1.0
- headers['Accept'] = '*/*'
+ if 'Accept' not in headers:
+ headers['Accept'] = '*/*'
headers['Proxy-Connection'] = 'Keep-Alive'
return headers
--
1.7.10

View file

@ -0,0 +1,21 @@
Author: Jamie Strandboge <jamie@canonical.com>
Description: require SSL certificate validation by default by using
CERT_REQUIRED and using the system /etc/ssl/certs/ca-certificates.crt
Bug-Ubuntu: https://launchpad.net/bugs/1047054
Modified for Fedora by Ralph Bean <rbean@redhat.com>
Modified for EPEL5 by Erik johnson <erik@saltstack.com>
Bug-Fedora: https://bugzilla.redhat.com/show_bug.cgi?id=855320
Index: urllib3-1.5/urllib3/connectionpool.py
===================================================================
--- urllib3-1.5.orig/urllib3/connectionpool.py
+++ urllib3-1.5/urllib3/connectionpool.py
@@ -504,7 +504,7 @@ class HTTPSConnectionPool(HTTPConnection
strict=False, timeout=None, maxsize=1,
block=False, headers=None,
key_file=None, cert_file=None,
- cert_reqs='CERT_NONE', ca_certs=None):
+ cert_reqs='CERT_REQUIRED', ca_certs='/etc/pki/tls/certs/ca-bundle.crt'):
super(HTTPSConnectionPool, self).__init__(host, port,
strict, timeout, maxsize,

View file

@ -1,26 +0,0 @@
From d1b64a6dc91bc9c350ac503febc34340c94c9066 Mon Sep 17 00:00:00 2001
From: Ralph Bean <rbean@redhat.com>
Date: Wed, 25 Sep 2013 13:28:37 -0400
Subject: [PATCH 3/3] old nose compat
---
setup.cfg | 3 ---
1 file changed, 3 deletions(-)
diff --git a/setup.cfg b/setup.cfg
index 8f1fee7..a8b1d1d 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -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 =
--
1.8.3.1

View file

@ -1,192 +1,162 @@
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',
- 'urllib3.packages', 'urllib3.packages.ssl_match_hostname',
'urllib3.contrib', 'urllib3.util',
],
requires=requirements,
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 -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 -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 -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 u
+from six import u
class TestRequestField(unittest.TestCase):
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 -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:
Index: urllib3-1.5/urllib3/_collections.py
===================================================================
--- urllib3-1.5.orig/urllib3/_collections.py
+++ urllib3-1.5/urllib3/_collections.py
@@ -10,7 +10,10 @@ from threading import Lock
try: # Python 2.7+
from collections import OrderedDict
except ImportError:
- from .packages.ordered_dict import OrderedDict
-from .packages.six import itervalues
+ from ordered_dict import OrderedDict
+from six import itervalues
+ try: # backport package
+ from ordereddict import OrderedDict
+ except ImportError:
+ from .packages.ordered_dict import OrderedDict
__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,
__all__ = ['RecentlyUsedContainer']
Index: urllib3-1.5/urllib3/connectionpool.py
===================================================================
--- urllib3-1.5.orig/urllib3/connectionpool.py
+++ urllib3-1.5/urllib3/connectionpool.py
@@ -51,8 +51,20 @@ from .exceptions import (
TimeoutError,
)
-from .packages.ssl_match_hostname import CertificateError
-from .packages.ssl_match_hostname import match_hostname, 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:
+ # Older python where the backport from pypi is installed
+ from backports.ssl_match_hostname import match_hostname, CertificateError
+ except ImportError:
+ # Other older python we use our bundled copy
+ from .packages.ssl_match_hostname import match_hostname, CertificateError
+try:
+ # python3.2+
+ from ssl import match_hostname, CertificateError
+ import six
+except ImportError:
+ # Older python where the backport from pypi is installed
+ from backports.ssl_match_hostname import match_hostname, CertificateError
+
+import six
+
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
-from .packages import six
+import six
+ from .packages import six
def guess_content_type(filename, default='application/octet-stream'):
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
xrange = six.moves.xrange
Index: urllib3-1.5/urllib3/filepost.py
===================================================================
--- urllib3-1.5.orig/urllib3/filepost.py
+++ urllib3-1.5/urllib3/filepost.py
@@ -10,8 +10,12 @@ import mimetypes
from uuid import uuid4
from io import BytesIO
-from .packages import six
-from .packages.six import b
+import six
+from six import b
from .fields import RequestField
+try:
+ import six
+ from six import b
+except ImportError:
+ from .packages import six
+ from .packages.six import b
writer = codecs.lookup('utf-8')[3]
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
Index: urllib3-1.5/urllib3/response.py
===================================================================
--- urllib3-1.5.orig/urllib3/response.py
+++ urllib3-1.5/urllib3/response.py
@@ -11,7 +11,10 @@ import zlib
from io import BytesIO
from .exceptions import DecodeError
-from .packages.six import string_types as basestring, binary_type
+from six import string_types as basestring, binary_type
from .util import is_fp_closed
-from .packages.six import string_types as basestring
+try:
+ from six import string_types as basestring
+except ImportError:
+ from .packages.six import string_types as basestring
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
log = logging.getLogger(__name__)
Index: urllib3-1.5/urllib3/util.py
===================================================================
--- urllib3-1.5.orig/urllib3/util.py
+++ urllib3-1.5/urllib3/util.py
@@ -18,7 +18,10 @@ except ImportError: # `poll` doesn't exi
except ImportError: # `select` doesn't exist on AppEngine.
select = False
-from ..packages import six
+import six
-from .packages import six
+try:
+ import six
+except ImporError:
+ from .packages import six
from .exceptions import LocationParseError
ACCEPT_ENCODING = 'gzip,deflate'
Index: urllib3-1.5/test/test_collections.py
===================================================================
--- urllib3-1.5.orig/test/test_collections.py
+++ urllib3-1.5/test/test_collections.py
@@ -1,7 +1,10 @@
import unittest
from urllib3._collections import RecentlyUsedContainer as Container
-from urllib3.packages import six
+try:
+ import six
+except ImportError:
+ from urllib3.packages import six
xrange = six.moves.xrange
Index: urllib3-1.5/test/test_connectionpool.py
===================================================================
--- urllib3-1.5.orig/test/test_connectionpool.py
+++ urllib3-1.5/test/test_connectionpool.py
@@ -1,7 +1,16 @@
import unittest
from urllib3.connectionpool import connection_from_url, HTTPConnectionPool
-from urllib3.packages.ssl_match_hostname import CertificateError
+try:
+ # python3.2+
+ from ssl import CertificateError
+except ImportError:
+ try:
+ # Older python where the backport from pypi is installed
+ from backports.ssl_match_hostname import CertificateError
+ except ImportError:
+ # Other older python we use our bundled copy
+ from urllib3.packages.ssl_match_hostname import CertificateError
from urllib3.exceptions import (
ClosedPoolError,
EmptyPoolError,
Index: urllib3-1.5/test/test_filepost.py
===================================================================
--- urllib3-1.5.orig/test/test_filepost.py
+++ urllib3-1.5/test/test_filepost.py
@@ -1,7 +1,10 @@
import unittest
from urllib3.filepost import encode_multipart_formdata, iter_fields
-from urllib3.packages.six import b, u
+try:
+ from six import b, u
+except ImportError:
+ from urllib3.packages.six import b, u
BOUNDARY = '!! test boundary !!'
Index: urllib3-1.5/setup.py
===================================================================
--- urllib3-1.5.orig/setup.py
+++ urllib3-1.5/setup.py
@@ -44,8 +44,7 @@ setup(name='urllib3',
author_email='andrey.petrov@shazow.net',
url='http://urllib3.readthedocs.org/',
license='MIT',
- packages=['urllib3', 'dummyserver', 'urllib3.packages',
- 'urllib3.packages.ssl_match_hostname',
+ packages=['urllib3', 'dummyserver', 'urllib3',
],
requires=requirements,
tests_require=tests_requirements,

View file

@ -1,68 +1,58 @@
%if 0%{?fedora}
%global with_python3 1
%else
%{!?python_sitelib: %global python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print (get_python_lib())")}
%endif
%global __python2 /usr/bin/python2.6
%global python2_sitelib %(%{__python2} -c "from distutils.sysconfig import get_python_lib; print (get_python_lib())")
%global srcname urllib3
Name: python-%{srcname}
Version: 1.8.2
Release: 4%{?dist}
Name: python-urllib3
Version: 1.5
Release: 8%{?dist}
Summary: Python HTTP library with thread-safe connection pooling and file post
Group: Development/Languages
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
# https://bugzilla.redhat.com/show_bug.cgi?id=1124060
Patch0: python-urllib3-default-ssl-cert-validate-el5.patch
### TODO: Send this to upstream urllib3
# make all imports of things in packages try system copies first
Patch0: python-urllib3-unbundle.patch
Patch1: 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
# Fix accept header when behind a proxy
#https://github.com/shazow/urllib3/pull/93
#https://github.com/shazow/urllib3/pull/93.patch
Patch2: python-urllib3-accept-header-for-proxy.patch
BuildRoot: %{_tmppath}/%{srcname}-%{version}-%{release}-root-%(%{__id_u} -n)
BuildArch: noarch
Requires: ca-certificates
Requires: python-six
Requires: python-backports-ssl_match_hostname
%if 0%{?rhel} && 0%{?rhel} <= 6
BuildRequires: python-ordereddict
Requires: python-ordereddict
%endif
BuildRequires: python2-devel
# For unittests
BuildRequires: python-nose
BuildRequires: python-mock
BuildRequires: python-six
BuildRequires: python-tornado
BuildRequires: python-backports-ssl_match_hostname
%if 0%{?with_python3}
BuildRequires: python3-devel
# For unittests
BuildRequires: python3-nose
BuildRequires: python3-mock
BuildRequires: python3-six
BuildRequires: python3-tornado
%endif # with_python3
BuildRequires: python26-devel
BuildRequires: python26-distribute
BuildRequires: python26-ordereddict
Requires: openssl
Requires: python26
Requires: python26-backports-ssl_match_hostname
Requires: python26-ordereddict
Requires: python26-six
%description
Python HTTP module with connection pooling and file POST abilities.
%if 0%{?with_python3}
%package -n python3-%{srcname}
Requires: ca-certificates
Requires: python3-six
# Note: Will not run with python3 < 3.2 (unless python3-backports-ssl_match_hostname is created)
Summary: Python3 HTTP library with thread-safe connection pooling and file post
%description -n python3-%{srcname}
Python3 HTTP module with connection pooling and file POST abilities.
%endif # with_python3
%package -n python26-%{srcname}
Summary: Python HTTP library with thread-safe connection pooling and file post
Group: Development/Languages
Requires: openssl
Requires: python26
Requires: python26-backports-ssl_match_hostname
Requires: python26-ordereddict
Requires: python26-six
%description -n python26-%{srcname}
Python HTTP module with connection pooling and file POST abilities.
%prep
%setup -q -n %{srcname}-%{version}
@ -70,96 +60,30 @@ Python3 HTTP module with connection pooling and file POST abilities.
rm -rf urllib3/packages/
%patch0 -p1
%if 0%{?rhel} && 0%{?rhel} <= 6
%patch100 -p1
%endif
%if 0%{?with_python3}
rm -rf %{py3dir}
cp -a . %{py3dir}
%endif # with_python3
%patch1 -p1
%patch2 -p1
%build
%{__python} setup.py build
%if 0%{?with_python3}
pushd %{py3dir}
%{__python3} setup.py build
popd
%endif # with_python3
%{__python2} setup.py build
%install
rm -rf %{buildroot}
%{__python} setup.py install --skip-build --root %{buildroot}
%{__python2} setup.py install --skip-build --root %{buildroot}
# dummyserver is part of the unittest framework
rm -rf %{buildroot}%{python_sitelib}/dummyserver
%if 0%{?with_python3}
pushd %{py3dir}
%{__python3} setup.py install --skip-build --root %{buildroot}
# dummyserver is part of the unittest framework
rm -rf %{buildroot}%{python3_sitelib}/dummyserver
popd
%endif # with_python3
%check
nosetests
%if 0%{?with_python3}
pushd %{py3dir}
nosetests-%{python3_version}
popd
%endif # with_python3
%files
%{!?_licensedir:%global license %%doc}
%license LICENSE.txt
%doc CHANGES.rst README.rst CONTRIBUTORS.txt
# For noarch packages: sitelib
%{python_sitelib}/*
%if 0%{?with_python3}
%files -n python3-%{srcname}
%{!?_licensedir:%global license %%doc}
%license LICENSE.txt
# For noarch packages: sitelib
%{python3_sitelib}/*
%endif # with_python3
%clean
rm -rf %{buildroot}
%files -n python26-%{srcname}
%defattr(-,root,root,-)
%doc CHANGES.rst LICENSE.txt README.rst CONTRIBUTORS.txt
%{python2_sitelib}/*
%changelog
* Mon Aug 4 2014 Tom Callaway <spot@fedoraproject.org> - 1.8.2-4
- fix license handling
* Thu Jul 24 2014 Erik Johnson <erik@saltstack.com> - 1.5-8
- Initial EL5 build
* Sun Jun 08 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.8.2-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
* Wed May 14 2014 Bohuslav Kabrda <bkabrda@redhat.com> - 1.8.2-2
- Rebuilt for https://fedoraproject.org/wiki/Changes/Python_3.4
* Mon Apr 21 2014 Arun S A G <sagarun@gmail.com> - 1.8.2-1
- Update to latest upstream version
* Mon Oct 28 2013 Ralph Bean <rbean@redhat.com> - 1.7.1-2
- Update patch to find ca_certs in the correct location.
* Wed Sep 25 2013 Ralph Bean <rbean@redhat.com> - 1.7.1-1
- Latest upstream with support for a new timeout class and py3.4.
* Wed Aug 28 2013 Ralph Bean <rbean@redhat.com> - 1.7-3
- Bump release again, just to push an unpaired update.
* Mon Aug 26 2013 Ralph Bean <rbean@redhat.com> - 1.7-2
- Bump release to pair an update with python-requests.
* Thu Aug 22 2013 Ralph Bean <rbean@redhat.com> - 1.7-1
- Update to latest upstream.
- Removed the accept-header proxy patch which is included in upstream now.
- Removed py2.6 compat patch which is included in upstream now.
* Sun Aug 04 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.5-7
- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
* Mon Oct 28 2013 Ralph Bean <rbean@redhat.com> - 1.5-7
- Update patch to find ca_certs in the correct place.
* Tue Jun 11 2013 Toshio Kuratomi <toshio@fedoraproject.org> - 1.5-6
- Fix Requires of python-ordereddict to only apply to RHEL

View file

@ -1 +1 @@
52f7513335dfd0943082cbb7400d693e urllib3-1.8.2.tar.gz
3ee4b375a095bb6098f1ed75f8058e48 urllib3-1.5.tar.gz