diff --git a/community/python-aws-xray-sdk/PKGBUILD b/community/python-aws-xray-sdk/PKGBUILD index c9a7d30f4..c3072eb81 100644 --- a/community/python-aws-xray-sdk/PKGBUILD +++ b/community/python-aws-xray-sdk/PKGBUILD @@ -7,7 +7,7 @@ pkgname=python-aws-xray-sdk _pkgname=aws-xray-sdk-python pkgver=2.4.2 -pkgrel=4 +pkgrel=7 pkgdesc='AWS X-Ray SDK for Python' arch=(any) url='https://github.com/aws/aws-xray-sdk-python' @@ -20,16 +20,20 @@ checkdepends=(python-flask-sqlalchemy python-pynamodb python-pytest python-aioht # Not using PyPI source tarball as it does not include tests source=("https://github.com/aws/aws-xray-sdk-python/archive/$pkgver/$pkgname-$pkgver.tar.gz" "aws-xray-sdk-psycopg2.8.patch"::"https://github.com/aws/aws-xray-sdk-python/commit/4b4422a3ad9bb9a28399b34851dd574f6155bb66.patch" - "aws-xray-sdk-pynamodb4.patch"::"https://github.com/aws/aws-xray-sdk-python/commit/1dd185ba2fb946cea711a9620f04516c7f6eecdf.patch") + "aws-xray-sdk-pynamodb4.patch"::"https://github.com/aws/aws-xray-sdk-python/commit/1dd185ba2fb946cea711a9620f04516c7f6eecdf.patch" + "$pkgname-botocore-1.13.patch") sha256sums=('e480a6dc21d314faf6a9af4cf871fd7b782fae1e704e0fe5977161707f101374' 'b0740901e4c3bd0a678b217b1121c5f827e8535722a560d9f84fb9a8b90f8f74' - 'c2ad5a109841600d271c0b4b49b0fb2b54bcac6e220bf6a7c4cd6f68e17f377e') + 'c2ad5a109841600d271c0b4b49b0fb2b54bcac6e220bf6a7c4cd6f68e17f377e' + 'f581fe077ed5484e95cf7a3dc651fc3a86bcac6a8fcd142d701edce01266412c') prepare() { cd $_pkgname-$pkgver patch -Np1 -i ../aws-xray-sdk-psycopg2.8.patch # https://github.com/aws/aws-xray-sdk-python/issues/171 patch -Np1 -i ../aws-xray-sdk-pynamodb4.patch + # https://github.com/aws/aws-xray-sdk-python/pull/181 + patch -Np1 -i ../$pkgname-botocore-1.13.patch } build() { diff --git a/community/python-aws-xray-sdk/python-aws-xray-sdk-botocore-1.13.patch b/community/python-aws-xray-sdk/python-aws-xray-sdk-botocore-1.13.patch new file mode 100644 index 000000000..8b2e37380 --- /dev/null +++ b/community/python-aws-xray-sdk/python-aws-xray-sdk-botocore-1.13.patch @@ -0,0 +1,80 @@ +From a9fb17f9f9d9edd44a2eafc2add36607b2aff98a Mon Sep 17 00:00:00 2001 +From: Daniel Roschka +Date: Mon, 11 Nov 2019 10:30:52 +0100 +Subject: [PATCH 1/2] Fix patching for PynamoDB 4.x with botocore 1.13 + +--- + aws_xray_sdk/ext/pynamodb/patch.py | 11 ++++++----- + 1 file changed, 6 insertions(+), 5 deletions(-) + +diff --git a/aws_xray_sdk/ext/pynamodb/patch.py b/aws_xray_sdk/ext/pynamodb/patch.py +index 74b7825..2be2d41 100644 +--- a/aws_xray_sdk/ext/pynamodb/patch.py ++++ b/aws_xray_sdk/ext/pynamodb/patch.py +@@ -1,4 +1,3 @@ +-import botocore.vendored.requests.sessions + import json + import wrapt + import pynamodb +@@ -13,16 +12,18 @@ + def patch(): + """Patch PynamoDB so it generates subsegements when calling DynamoDB.""" + +- if hasattr(botocore.vendored.requests.sessions, '_xray_enabled'): +- return +- setattr(botocore.vendored.requests.sessions, '_xray_enabled', True) +- + if PYNAMODB4: + module = 'botocore.httpsession' + name = 'URLLib3Session.send' + else: ++ import botocore.vendored.requests.sessions ++ if hasattr(botocore.vendored.requests.sessions, '_xray_enabled'): ++ return ++ setattr(botocore.vendored.requests.sessions, '_xray_enabled', True) ++ + module = 'botocore.vendored.requests.sessions' + name = 'Session.send' ++ + wrapt.wrap_function_wrapper( + module, name, _xray_traced_pynamodb, + ) + +From f1f8cd4e6635d1beb7c703717971afed54813a6a Mon Sep 17 00:00:00 2001 +From: Daniel Roschka +Date: Mon, 11 Nov 2019 13:17:37 +0100 +Subject: [PATCH 2/2] Make PynamoDB patching idempotent for PynamoDB 4 + +--- + aws_xray_sdk/ext/pynamodb/patch.py | 10 +++++++++- + 1 file changed, 9 insertions(+), 1 deletion(-) + +diff --git a/aws_xray_sdk/ext/pynamodb/patch.py b/aws_xray_sdk/ext/pynamodb/patch.py +index 2be2d41..1478808 100644 +--- a/aws_xray_sdk/ext/pynamodb/patch.py ++++ b/aws_xray_sdk/ext/pynamodb/patch.py +@@ -8,15 +8,23 @@ + + PYNAMODB4 = int(pynamodb.__version__.split('.')[0]) >= 4 + ++if PYNAMODB4: ++ import botocore.httpsession ++else: ++ import botocore.vendored.requests.sessions ++ + + def patch(): + """Patch PynamoDB so it generates subsegements when calling DynamoDB.""" + + if PYNAMODB4: ++ if hasattr(botocore.httpsession, '_xray_enabled'): ++ return ++ setattr(botocore.httpsession, '_xray_enabled', True) ++ + module = 'botocore.httpsession' + name = 'URLLib3Session.send' + else: +- import botocore.vendored.requests.sessions + if hasattr(botocore.vendored.requests.sessions, '_xray_enabled'): + return + setattr(botocore.vendored.requests.sessions, '_xray_enabled', True)