summaryrefslogtreecommitdiff
path: root/dev-python/boto
diff options
context:
space:
mode:
Diffstat (limited to 'dev-python/boto')
-rw-r--r--dev-python/boto/Manifest6
-rw-r--r--dev-python/boto/boto-2.49.0-r4.ebuild60
-rw-r--r--dev-python/boto/files/boto-2.49.0-py3-httplib-strict.patch35
-rw-r--r--dev-python/boto/files/boto-2.49.0-py3-server-port.patch42
-rw-r--r--dev-python/boto/files/boto-2.49.0-py3-socket-binary.patch59
-rw-r--r--dev-python/boto/files/boto-2.49.0-try-to-add-SNI-support-v3.patch104
-rw-r--r--dev-python/boto/files/boto-2.49.0-unbundle-six.patch28
7 files changed, 334 insertions, 0 deletions
diff --git a/dev-python/boto/Manifest b/dev-python/boto/Manifest
index 8547848b7427..f898d3edf0c7 100644
--- a/dev-python/boto/Manifest
+++ b/dev-python/boto/Manifest
@@ -1,5 +1,11 @@
+AUX boto-2.49.0-py3-httplib-strict.patch 1244 BLAKE2B d37ff98891e4378bc869aaae7cde5596f1747a1851b6fbccc78ffcdac52d0583eba826cd1d101b3c04b4940ca982fd0ef8e1604d141bec170d63ec8049636f3e SHA512 fd1a7b4196918e43e88150ea5e633a537920202a51ede6381a0ebc23b8f1773e59ef7e6a4c4be2fc40356860aaf5b32d0069f93f4be165ab57d9f5334c7d9a93
+AUX boto-2.49.0-py3-server-port.patch 1840 BLAKE2B d147459970a9e39fba8599c9dff6dcbe1842714bbd45cca008be6c49840c812bf4a5fb97099614f6fe931807725268601a889f85b111fa7e1e3072c938c67a69 SHA512 f05f5c152fd52425b63cd5788f603430c30d679db3ca5145dc174f455636562d730bca990a0507a5e497b388b559d3a9e03bd84313284bfa27acb4031ab151c3
+AUX boto-2.49.0-py3-socket-binary.patch 2736 BLAKE2B b37879bf6ddf5e61df79cf482d8596e8aec42c929888f37a4fb8c4e1a47b8e12b89e26aa402cf90a768a159bef9daab1f2328a8fe5809fe343235ff9906fa411 SHA512 b89ec80242cbb10646d3c9995fa00438066569f77f39eccc7a8fd2a6d2b58977a9c252a8a4411438c7d89b69adcce28a9614f599488e53d3089722ddb1d6ea04
AUX boto-2.49.0-py38.patch 2061 BLAKE2B a17cc48925216f333a12631051f177c9d91199eddcb5dd08c22a3c8381af743b0aeeb7cd5642bb030e951596ee98477abf1e7507a4bfabc9d36706e7809bf031 SHA512 ba42dee03c39cf238c6cb1864500f5d6c0fabcc395021cba8745c3e4fc4e59828eb7f461d5251367d37c4e0709162117e97aeabc08f941fe07c65f6b179244d8
+AUX boto-2.49.0-try-to-add-SNI-support-v3.patch 4727 BLAKE2B 197d4e6cc632e372faedac8812eb6dc250124555705d5b8d3b5ffe3718315043cf0bab5b9270d0dbd2ce333dbe074583cc7bd1f6057e324d13aea6f39e9b05e5 SHA512 0be17ce24149bfa02f6614fdc37b0e4c4018f78516348a6dc0f3d90f3e22405262a2ab61c36dd1fa6134d7cfdde422a5e06bbe855c6df5e5d7c77e0a9125f348
+AUX boto-2.49.0-unbundle-six.patch 1122 BLAKE2B bfaeaf7fea01e662d19caa6c040aaad9a2ce6544c105865a8b79255057d662c30478b6fb884b9a088f861c99a4d8399c0e503711e36e0581cbeeec3c5b2e1ba0 SHA512 7dd51b6a48f718475e18ac97584a508aee75b69dbfee9e91fa2955feec49cb1786662276a4519438cccc49b4d55a5d8536192bfe47a20a36a6a01f4bc3bfb9cc
AUX boto-try-to-add-SNI-support-v2.patch 4329 BLAKE2B 3be0a3a88bc252bf8cbf316d3198b58ca86ee61e991400ce1e27854433bcf3709718593c58ffc2e2ad16fa41630a54670a4b7d42efde572073adf5f5f95994e2 SHA512 48b1fa089138a22ca9749fe82a1d92abf7570edf87a6ffc48f9b2389baed8982092afc2cbf1e35bf0661f185e96ba2b2b6d21cb2c553d6d884e800805f013a9a
DIST boto-2.49.0.tar.gz 1478498 BLAKE2B 6a897ea162f5f4bd34a2d488a3e3897f7f2f5b8707dd0922c01b6a0b90ea577223bf3e588b6685bda1f2bc0e92af426711fcba67a70377183465a530065c6c84 SHA512 2175cf30cd25bbc05812e83e5ade7668c3e21b1bb09aa1b43f0f0ac7d6967a646394fb52c9be673ebb65618c5b33a52d6f31f6da702f5cd1d6c9a18169476dd4
EBUILD boto-2.49.0-r3.ebuild 1299 BLAKE2B fa866b15908d1bd44ae5b9c687ea7cf5dea8e81969fa28745bc4108ce657d298dc6426d1253999099c434ca1c0079eac5101201b7c0dede0c6af048b7c94c770 SHA512 a3f52637e8ba8ede2bc951d399949349ee962cd66f3eb11f5ca3bfe631a484ea74d293af669bdca545dde630dae15a9d3d134eb5221a96d5bc5294162d8687a4
+EBUILD boto-2.49.0-r4.ebuild 1572 BLAKE2B d4194128e3b2103849bddcae6ed6a3049e861efc7a2eeaa4cf8f43b44de85017fa3c3d4e7c1153790aedf2fc6d98af80d586f1af46fc326093c76a3d2db4129a SHA512 9a2b3168878a119afc5b4d45c5f9e70a5188156aeb768bad1f5c8c648dd1751bf93231f6bcce57809826325536c84cf4b2dd239f7d2d45f367c03f4cc492fe53
MISC metadata.xml 419 BLAKE2B c6c19e4ba3ecc5a36b535267b75cdf3afb7317e577e8f0899d43a334632633d771b5e5216517537616cc99c7766a852d2b4c5b132e174f8481d86649253e0897 SHA512 ee5587224538b14f67c30eda60c161e4c07c801c4b4edb24bcb0350e17c4d655c4d9a6907ebe5913d7689e1b6078ef25f47b4fe0a7c655cfa8d5ea775b4d0329
diff --git a/dev-python/boto/boto-2.49.0-r4.ebuild b/dev-python/boto/boto-2.49.0-r4.ebuild
new file mode 100644
index 000000000000..1841ab488bbd
--- /dev/null
+++ b/dev-python/boto/boto-2.49.0-r4.ebuild
@@ -0,0 +1,60 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+PYTHON_COMPAT=( python3_{6..9} )
+DISTUTILS_USE_SETUPTOOLS=bdepend
+
+inherit distutils-r1
+
+DESCRIPTION="Amazon Web Services API"
+HOMEPAGE="https://github.com/boto/boto https://pypi.org/project/boto/"
+SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos"
+
+PATCHES=(
+ # taken from https://bugs.debian.org/909545
+ "${FILESDIR}"/${P}-try-to-add-SNI-support-v3.patch
+ "${FILESDIR}"/${P}-py38.patch
+ "${FILESDIR}"/${P}-py3-socket-binary.patch
+ "${FILESDIR}"/${P}-py3-httplib-strict.patch
+ "${FILESDIR}"/${P}-py3-server-port.patch
+ "${FILESDIR}"/${P}-unbundle-six.patch
+)
+
+RDEPEND=">=dev-python/six-1.12.0[${PYTHON_USEDEP}]"
+
+BDEPEND="
+ test? (
+ dev-python/httpretty[${PYTHON_USEDEP}]
+ dev-python/keyring[${PYTHON_USEDEP}]
+ dev-python/lxml[${PYTHON_USEDEP}]
+ dev-python/mock[${PYTHON_USEDEP}]
+ dev-python/paramiko[${PYTHON_USEDEP}]
+ dev-python/requests[${PYTHON_USEDEP}]
+ dev-python/rsa[${PYTHON_USEDEP}]
+ dev-python/selenium[${PYTHON_USEDEP}]
+ )"
+
+distutils_enable_tests nose
+
+src_prepare() {
+ # remove bundled libs.
+ rm -f "${S}"/boto/vendored/six.py || die
+ # broken, not worth fixing
+ rm tests/unit/cloudfront/test_signed_urls.py || die
+ # fix tests
+ mkdir -p "${HOME}"/.ssh || die
+ : > "${HOME}"/.ssh/known_hosts || die
+
+ distutils-r1_src_prepare
+}
+
+python_test() {
+ nosetests -v tests/unit ||
+ die "Tests fail with ${EPYTHON}"
+}
diff --git a/dev-python/boto/files/boto-2.49.0-py3-httplib-strict.patch b/dev-python/boto/files/boto-2.49.0-py3-httplib-strict.patch
new file mode 100644
index 000000000000..209b01aa74a0
--- /dev/null
+++ b/dev-python/boto/files/boto-2.49.0-py3-httplib-strict.patch
@@ -0,0 +1,35 @@
+https://github.com/boto/boto/commit/4f4dcb31fe852c05ce19b44eb9d5b5d747e36f7c
+https://github.com/boto/boto/pull/2718
+
+From 4f4dcb31fe852c05ce19b44eb9d5b5d747e36f7c Mon Sep 17 00:00:00 2001
+From: Lee Ball <43632885+catleeball@users.noreply.github.com>
+Date: Mon, 10 Jun 2019 16:02:53 -0700
+Subject: [PATCH] Remove `strict=True` from http_client (#6)
+
+In Python 3.4, the `strict` kwarg was removed[1]. We are removing it
+here too.
+
+Alternatively, we can leave in `strict=True` for 2.x, but I chose to
+remove it entirely to maintain consistent behavior across versions.
+
+[1]: https://docs.python.org/3/library/http.client.html
+---
+ boto/connection.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/boto/connection.py b/boto/connection.py
+index c731173bb4eb..54e26fb2de16 100644
+--- a/boto/connection.py
++++ b/boto/connection.py
+@@ -807,7 +807,7 @@ class AWSAuthConnection(object):
+ sock.sendall(six.ensure_binary("\r\n"))
+ else:
+ sock.sendall(six.ensure_binary("\r\n"))
+- resp = http_client.HTTPResponse(sock, strict=True, debuglevel=self.debug)
++ resp = http_client.HTTPResponse(sock, debuglevel=self.debug)
+ resp.begin()
+
+ if resp.status != 200:
+--
+2.28.0
+
diff --git a/dev-python/boto/files/boto-2.49.0-py3-server-port.patch b/dev-python/boto/files/boto-2.49.0-py3-server-port.patch
new file mode 100644
index 000000000000..62e331921980
--- /dev/null
+++ b/dev-python/boto/files/boto-2.49.0-py3-server-port.patch
@@ -0,0 +1,42 @@
+https://github.com/boto/boto/commit/b9f6cb0ab717ea76e2780c7fddd1cd36b3bf7d63
+
+From b9f6cb0ab717ea76e2780c7fddd1cd36b3bf7d63 Mon Sep 17 00:00:00 2001
+From: Matt Houglum <houglum@google.com>
+Date: Fri, 21 Jun 2019 15:09:11 -0700
+Subject: [PATCH] Make server_name() behave correctly for PY3
+
+...because Python-2.6-or-newer doesn't just include Python 2.6 and 2.7.
+---
+ boto/connection.py | 14 +++++---------
+ 1 file changed, 5 insertions(+), 9 deletions(-)
+
+diff --git a/boto/connection.py b/boto/connection.py
+index 54e26fb2de16..bbb25d8fb842 100644
+--- a/boto/connection.py
++++ b/boto/connection.py
+@@ -650,17 +650,13 @@ class AWSAuthConnection(object):
+ if port == 80:
+ signature_host = self.host
+ else:
+- # This unfortunate little hack can be attributed to
+- # a difference in the 2.6 version of http_client. In old
+- # versions, it would append ":443" to the hostname sent
+- # in the Host header and so we needed to make sure we
+- # did the same when calculating the V2 signature. In 2.6
+- # (and higher!)
+- # it no longer does that. Hence, this kludge.
+- if ((ON_APP_ENGINE and sys.version[:3] == '2.5') or
+- sys.version[:3] in ('2.6', '2.7')) and port == 443:
++ ver_int = sys.version_info[0] * 10 + sys.version_info[1]
++ if port == 443 and ver_int >= 26: # Py >= 2.6
+ signature_host = self.host
+ else:
++ # In versions < 2.6, Python's http_client would append ":443"
++ # to the hostname sent in the Host header and so we needed to
++ # make sure we did the same when calculating the V2 signature.
+ signature_host = '%s:%d' % (self.host, port)
+ return signature_host
+
+--
+2.28.0
+
diff --git a/dev-python/boto/files/boto-2.49.0-py3-socket-binary.patch b/dev-python/boto/files/boto-2.49.0-py3-socket-binary.patch
new file mode 100644
index 000000000000..1d109a3f4995
--- /dev/null
+++ b/dev-python/boto/files/boto-2.49.0-py3-socket-binary.patch
@@ -0,0 +1,59 @@
+https://github.com/boto/boto/commit/d2cb697b32c297858ecc36701a5a4176818ab36d
+https://github.com/boto/boto/pull/2718
+https://github.com/boto/boto/pull/2893
+https://github.com/boto/boto/pull/3699
+
+From d2cb697b32c297858ecc36701a5a4176818ab36d Mon Sep 17 00:00:00 2001
+From: Cat Lee Ball <cball@google.com>
+Date: Mon, 10 Jun 2019 13:31:11 -0700
+Subject: [PATCH] Ensure binary strings sent to socket
+
+When running pre-release tests with proxied connections, it appeared a
+few spots in connection.py would fail under Python 3 since the
+socket.sendall method expects binary strings rather than unicode.
+---
+ boto/connection.py | 13 +++++++------
+ 1 file changed, 7 insertions(+), 6 deletions(-)
+
+diff --git a/boto/connection.py b/boto/connection.py
+index a0d89a51f49c..d084d1f881fb 100644
+--- a/boto/connection.py
++++ b/boto/connection.py
+@@ -796,17 +796,17 @@ class AWSAuthConnection(object):
+ else:
+ sock = socket.create_connection((self.proxy, int(self.proxy_port)))
+ boto.log.debug("Proxy connection: CONNECT %s HTTP/1.0\r\n", host)
+- sock.sendall("CONNECT %s HTTP/1.0\r\n" % host)
+- sock.sendall("User-Agent: %s\r\n" % UserAgent)
++ sock.sendall(six.ensure_binary("CONNECT %s HTTP/1.0\r\n" % host))
++ sock.sendall(six.ensure_binary("User-Agent: %s\r\n" % UserAgent))
+ if self.proxy_user and self.proxy_pass:
+ for k, v in self.get_proxy_auth_header().items():
+- sock.sendall("%s: %s\r\n" % (k, v))
++ sock.sendall(six.ensure_binary("%s: %s\r\n" % (k, v)))
+ # See discussion about this config option at
+ # https://groups.google.com/forum/?fromgroups#!topic/boto-dev/teenFvOq2Cc
+ if config.getbool('Boto', 'send_crlf_after_proxy_auth_headers', False):
+- sock.sendall("\r\n")
++ sock.sendall(six.ensure_binary("\r\n"))
+ else:
+- sock.sendall("\r\n")
++ sock.sendall(six.ensure_binary("\r\n"))
+ resp = http_client.HTTPResponse(sock, strict=True, debuglevel=self.debug)
+ resp.begin()
+
+@@ -814,9 +814,10 @@ class AWSAuthConnection(object):
+ # Fake a socket error, use a code that make it obvious it hasn't
+ # been generated by the socket library
+ raise socket.error(-71,
++ six.ensure_binary(
+ "Error talking to HTTP proxy %s:%s: %s (%s)" %
+ (self.proxy, self.proxy_port,
+- resp.status, resp.reason))
++ resp.status, resp.reason)))
+
+ # We can safely close the response, it duped the original socket
+ resp.close()
+--
+2.28.0
+
diff --git a/dev-python/boto/files/boto-2.49.0-try-to-add-SNI-support-v3.patch b/dev-python/boto/files/boto-2.49.0-try-to-add-SNI-support-v3.patch
new file mode 100644
index 000000000000..11d346a2199e
--- /dev/null
+++ b/dev-python/boto/files/boto-2.49.0-try-to-add-SNI-support-v3.patch
@@ -0,0 +1,104 @@
+From f5e7f6c98b46ff622f60a4661ffc9ce07216d109 Mon Sep 17 00:00:00 2001
+From: Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
+Date: Sat, 29 Sep 2018 21:47:11 +0200
+Subject: [PATCH] boto: try to add SNI support
+
+Add SNI support. Newer OpenSSL (with TLS1.3) fail to connect if the
+hostname is missing.
+
+Link: https://bugs.debian.org/bug=909545
+Tested-by: Witold Baryluk <witold.baryluk@gmail.com>
+Signed-off-by: Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
+---
+ boto/connection.py | 19 ++++++++++---------
+ boto/https_connection.py | 22 +++++++++++-----------
+ 2 files changed, 21 insertions(+), 20 deletions(-)
+
+diff --git a/boto/connection.py b/boto/connection.py
+index 34b428f101df7..b4867a7657465 100644
+--- a/boto/connection.py
++++ b/boto/connection.py
+@@ -778,8 +778,10 @@
+
+ def proxy_ssl(self, host=None, port=None):
+ if host and port:
++ cert_host = host
+ host = '%s:%d' % (host, port)
+ else:
++ cert_host = self.host
+ host = '%s:%d' % (self.host, self.port)
+ # Seems properly to use timeout for connect too
+ timeout = self.http_connection_kwargs.get("timeout")
+@@ -824,23 +824,24 @@ DEFAULT_CA_CERTS_FILE = os.path.join(os.path.dirname(os.path.abspath(boto.cacert
+ h = http_client.HTTPConnection(host)
+
+ if self.https_validate_certificates and HAVE_HTTPS_CONNECTION:
++ context = ssl.create_default_context()
++ context.verify_mode = ssl.CERT_REQUIRED
++ context.check_hostname = True
++
+ msg = "wrapping ssl socket for proxied connection; "
+ if self.ca_certificates_file:
+ msg += "CA certificate file=%s" % self.ca_certificates_file
++ context.load_verify_locations(cafile=self.ca_certificates_file)
+ else:
+ msg += "using system provided SSL certs"
++ context.load_default_certs()
+ boto.log.debug(msg)
+ key_file = self.http_connection_kwargs.get('key_file', None)
+ cert_file = self.http_connection_kwargs.get('cert_file', None)
+- sslSock = ssl.wrap_socket(sock, keyfile=key_file,
+- certfile=cert_file,
+- cert_reqs=ssl.CERT_REQUIRED,
+- ca_certs=self.ca_certificates_file)
+- cert = sslSock.getpeercert()
+- hostname = self.host.split(':', 0)[0]
+- if not https_connection.ValidateCertificateHostname(cert, hostname):
+- raise https_connection.InvalidCertificateException(
+- hostname, cert, 'hostname mismatch')
++ if key_file:
++ context.load_cert_chain(certfile=cert_file, keyfile=key_file)
++
++ sslSock = context.wrap_socket(sock, server_hostname=cert_host)
+ else:
+ # Fallback for old Python without ssl.wrap_socket
+ if hasattr(http_client, 'ssl'):
+diff --git a/boto/https_connection.py b/boto/https_connection.py
+index ddc31a152292e..a5076f6f9b261 100644
+--- a/boto/https_connection.py
++++ b/boto/https_connection.py
+@@ -119,20 +119,20 @@ from boto.compat import six, http_client
+ sock = socket.create_connection((self.host, self.port), self.timeout)
+ else:
+ sock = socket.create_connection((self.host, self.port))
++
++ context = ssl.create_default_context()
++ context.verify_mode = ssl.CERT_REQUIRED
++ context.check_hostname = True
++ if self.key_file:
++ context.load_cert_chain(certfile=self.cert_file, keyfile=self.key_file)
++
+ msg = "wrapping ssl socket; "
+ if self.ca_certs:
+ msg += "CA certificate file=%s" % self.ca_certs
++ context.load_verify_locations(cafile=self.ca_certs)
+ else:
+ msg += "using system provided SSL certs"
++ context.load_default_certs()
+ boto.log.debug(msg)
+- self.sock = ssl.wrap_socket(sock, keyfile=self.key_file,
+- certfile=self.cert_file,
+- cert_reqs=ssl.CERT_REQUIRED,
+- ca_certs=self.ca_certs)
+- cert = self.sock.getpeercert()
+- hostname = self.host.split(':', 0)[0]
+- if not ValidateCertificateHostname(cert, hostname):
+- raise InvalidCertificateException(hostname,
+- cert,
+- 'remote hostname "%s" does not match '
+- 'certificate' % hostname)
++
++ self.sock = context.wrap_socket(sock, server_hostname=self.host)
+--
+2.19.0
+
diff --git a/dev-python/boto/files/boto-2.49.0-unbundle-six.patch b/dev-python/boto/files/boto-2.49.0-unbundle-six.patch
new file mode 100644
index 000000000000..188dae7eb6fd
--- /dev/null
+++ b/dev-python/boto/files/boto-2.49.0-unbundle-six.patch
@@ -0,0 +1,28 @@
+use the system copy of six
+
+--- a/boto/compat.py
++++ b/boto/compat.py
+@@ -46,16 +46,16 @@ except (AttributeError, ImportError):
+ # This is probably running on App Engine.
+ expanduser = (lambda x: x)
+
+-from boto.vendored import six
++import six
+
+-from boto.vendored.six import BytesIO, StringIO
+-from boto.vendored.six.moves import filter, http_client, map, _thread, \
++from six import BytesIO, StringIO
++from six.moves import filter, http_client, map, _thread, \
+ urllib, zip
+-from boto.vendored.six.moves.queue import Queue
+-from boto.vendored.six.moves.urllib.parse import parse_qs, quote, unquote, \
++from six.moves.queue import Queue
++from six.moves.urllib.parse import parse_qs, quote, unquote, \
+ urlparse, urlsplit
+-from boto.vendored.six.moves.urllib.parse import unquote_plus
+-from boto.vendored.six.moves.urllib.request import urlopen
++from six.moves.urllib.parse import unquote_plus
++from six.moves.urllib.request import urlopen
+
+ if six.PY3:
+ # StandardError was removed, so use the base exception type instead