[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