[arch-commits] Commit in python-websocket-client/trunk (2 files)
Thore Bödecker
foxxx0 at archlinux.org
Wed Feb 20 11:54:41 UTC 2019
Date: Wednesday, February 20, 2019 @ 11:54:40
Author: foxxx0
Revision: 434677
upgpkg: python-websocket-client 0.54.0-2
add patch for EINTR handling
from: https://github.com/websocket-client/websocket-client/pull/528
Added:
python-websocket-client/trunk/retry-connect-on-EINTR.patch
Modified:
python-websocket-client/trunk/PKGBUILD
------------------------------+
PKGBUILD | 38 +++++++++++++---------
retry-connect-on-EINTR.patch | 68 +++++++++++++++++++++++++++++++++++++++++
2 files changed, 91 insertions(+), 15 deletions(-)
Modified: PKGBUILD
===================================================================
--- PKGBUILD 2019-02-20 10:50:49 UTC (rev 434676)
+++ PKGBUILD 2019-02-20 11:54:40 UTC (rev 434677)
@@ -1,40 +1,48 @@
# Maintainer: Felix Yan <felixonmars at archlinux.org>
+# Contributor: Thore Bödecker <foxxx0 at archlinux.org>
# Contributor: Matmas <matmas at matmas.net>
# Contributor: Thomas Gubler <thomasgubler at gmail.com>
# Contributor: Daniel YC Lin <dlin.tw at gmail>
# Contributor: Florian Bruhin <archlinux.org at the-compiler.org>
-pkgname=(python-websocket-client python2-websocket-client)
+_pkgbase='websocket-client'
+__pkgbase="${_pkgbase//-/_}"
+pkgname=("python-${_pkgbase}" "python2-${_pkgbase}")
pkgver=0.54.0
-pkgrel=1
+pkgrel=2
pkgdesc="WebSocket client library for Python"
arch=(any)
-url="https://github.com/liris/websocket-client"
+url="https://github.com/${_pkgbase}/${_pkgbase}"
license=('LGPL')
makedepends=('python-setuptools' 'python2-setuptools' 'python-six' 'python2-six')
-source=(https://pypi.io/packages/source/w/websocket-client/websocket_client-$pkgver.tar.gz)
-sha512sums=('ba4dfb6b879ec88ca446f44a77b91bbace55faa1a276f493174f3dc5b96b4d400d43c886798666da98e331610f71b4629f894d97f4614acf8d64affe8370bfec')
+source=("https://pypi.io/packages/source/w/${_pkgbase}/${__pkgbase}-${pkgver}.tar.gz"
+ 'retry-connect-on-EINTR.patch')
+sha512sums=('ba4dfb6b879ec88ca446f44a77b91bbace55faa1a276f493174f3dc5b96b4d400d43c886798666da98e331610f71b4629f894d97f4614acf8d64affe8370bfec'
+ '51c1c84de6f6c7600aa4bbacb923908acd69b4ae2dc21e0861c9f3e14e339580b0b094991821c2b34277fb427d4cbbd2407360316b267a3e67354ca89725c50c')
prepare() {
# Not sure why the conditions are not working :/
- sed -i "s/'backports.ssl_match_hostname'//" websocket_client-$pkgver/setup.py
+ sed -i "s/'backports.ssl_match_hostname'//" "${srcdir}/${__pkgbase}-${pkgver}/setup.py"
- cp -a websocket_client-$pkgver{,-py2}
+ cd "${srcdir}/${__pkgbase}-${pkgver}"
+ patch -p1 -N -l -i "${srcdir}/retry-connect-on-EINTR.patch"
+
+ cp -a "${srcdir}/${__pkgbase}-${pkgver}"{,-py2}
}
build() {
- cd "$srcdir"/websocket_client-$pkgver
+ cd "${srcdir}/${__pkgbase}-${pkgver}"
python setup.py build
- cd "$srcdir"/websocket_client-$pkgver-py2
+ cd "${srcdir}/${__pkgbase}-${pkgver}-py2"
python2 setup.py build
}
check() {
- cd "$srcdir"/websocket_client-$pkgver
+ cd "${srcdir}/${__pkgbase}-${pkgver}"
python setup.py test
- cd "$srcdir"/websocket_client-$pkgver-py2
+ cd "${srcdir}/${__pkgbase}-${pkgver}-py2"
python2 setup.py test
}
@@ -41,17 +49,17 @@
package_python-websocket-client() {
depends=('python-six')
- cd websocket_client-$pkgver
+ cd "${srcdir}/${__pkgbase}-${pkgver}"
python setup.py install --root="$pkgdir" --optimize=1
- install -Dm644 LICENSE "$pkgdir"/usr/share/licenses/$pkgname/LICENSE
+ install -Dm644 LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
}
package_python2-websocket-client() {
depends=('python2-six')
- cd websocket_client-$pkgver-py2
+ cd "${srcdir}/${__pkgbase}-${pkgver}-py2"
python2 setup.py install --root="$pkgdir" --optimize=1
- install -Dm644 LICENSE "$pkgdir"/usr/share/licenses/$pkgname/LICENSE
+ install -Dm644 LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
mv "$pkgdir"/usr/bin/wsdump{,2}.py
}
Added: retry-connect-on-EINTR.patch
===================================================================
--- retry-connect-on-EINTR.patch (rev 0)
+++ retry-connect-on-EINTR.patch 2019-02-20 11:54:40 UTC (rev 434677)
@@ -0,0 +1,68 @@
+From 9a146e32e153fa1e0111b216f32c4b0e35ec9c12 Mon Sep 17 00:00:00 2001
+From: Trygve Aaberge <trygveaa at gmail.com>
+Date: Tue, 19 Feb 2019 23:55:59 +0100
+Subject: [PATCH] Retry connect on "Interrupted system call"
+
+When connecting to a socket, EINTR ("Interrupted system call") may be
+raised if the application receives a signal at the same time. Prior to
+Python 3.5, applications has to handle this themselves by retrying the
+connection. For more details, see https://www.python.org/dev/peps/pep-0475/
+
+Fixes #527
+---
+ websocket/_http.py | 38 ++++++++++++++++++++++----------------
+ 1 file changed, 22 insertions(+), 16 deletions(-)
+
+diff --git a/websocket/_http.py b/websocket/_http.py
+index e7f1e2e..dd982db 100644
+--- a/websocket/_http.py
++++ b/websocket/_http.py
+@@ -166,26 +166,32 @@ def _open_socket(addrinfo_list, sockopt, timeout):
+ sock.setsockopt(*opts)
+
+ address = addrinfo[4]
+- try:
+- sock.connect(address)
+- err = None
+- except ProxyConnectionError as error:
+- err = WebSocketProxyException(str(error))
+- err.remote_ip = str(address[0])
+- continue
+- except socket.error as error:
+- error.remote_ip = str(address[0])
++ err = None
++ while not err:
+ try:
+- eConnRefused = (errno.ECONNREFUSED, errno.WSAECONNREFUSED)
+- except:
+- eConnRefused = (errno.ECONNREFUSED, )
+- if error.errno in eConnRefused:
+- err = error
++ sock.connect(address)
++ except ProxyConnectionError as error:
++ err = WebSocketProxyException(str(error))
++ err.remote_ip = str(address[0])
+ continue
++ except socket.error as error:
++ error.remote_ip = str(address[0])
++ try:
++ eConnRefused = (errno.ECONNREFUSED, errno.WSAECONNREFUSED)
++ except:
++ eConnRefused = (errno.ECONNREFUSED, )
++ if error.errno == errno.EINTR:
++ continue
++ elif error.errno in eConnRefused:
++ err = error
++ continue
++ else:
++ raise error
+ else:
+- raise error
++ break
+ else:
+- break
++ continue
++ break
+ else:
+ raise err
+
More information about the arch-commits
mailing list