summary refs log tree commit diff
path: root/pkgs/development/python-modules/sleekxmpp
diff options
context:
space:
mode:
authorRobin Gloster <mail@glob.in>2017-06-05 22:10:58 +0200
committerRobin Gloster <mail@glob.in>2018-05-01 13:11:11 +0200
commit6f76d907c8d42ee017dcbb905eb3cb72fa2d6710 (patch)
treee9835f98fb8dc375c4b581c3011f0ef987ec2f8b /pkgs/development/python-modules/sleekxmpp
parentbf2e5123774f8928fa9441a70d375ac1f5317ad5 (diff)
downloadnixpkgs-6f76d907c8d42ee017dcbb905eb3cb72fa2d6710.tar
nixpkgs-6f76d907c8d42ee017dcbb905eb3cb72fa2d6710.tar.gz
nixpkgs-6f76d907c8d42ee017dcbb905eb3cb72fa2d6710.tar.bz2
nixpkgs-6f76d907c8d42ee017dcbb905eb3cb72fa2d6710.tar.lz
nixpkgs-6f76d907c8d42ee017dcbb905eb3cb72fa2d6710.tar.xz
nixpkgs-6f76d907c8d42ee017dcbb905eb3cb72fa2d6710.tar.zst
nixpkgs-6f76d907c8d42ee017dcbb905eb3cb72fa2d6710.zip
pythonPackages.sleekxmpp: fix dnspython issue
Diffstat (limited to 'pkgs/development/python-modules/sleekxmpp')
-rw-r--r--pkgs/development/python-modules/sleekxmpp/default.nix23
-rw-r--r--pkgs/development/python-modules/sleekxmpp/dnspython-ip6.patch55
2 files changed, 78 insertions, 0 deletions
diff --git a/pkgs/development/python-modules/sleekxmpp/default.nix b/pkgs/development/python-modules/sleekxmpp/default.nix
new file mode 100644
index 00000000000..c6444224104
--- /dev/null
+++ b/pkgs/development/python-modules/sleekxmpp/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, fetchurl, buildPythonPackage, dns, pyasn1 }:
+
+buildPythonPackage rec {
+  name = "sleekxmpp-${version}";
+  version = "1.3.1";
+
+  propagatedBuildInputs = [ dns pyasn1 ];
+
+  patches = [
+    ./dnspython-ip6.patch
+  ];
+
+  src = fetchurl {
+    url = "mirror://pypi/s/sleekxmpp/${name}.tar.gz";
+    sha256 = "1krkhkvj8xw5a6c2xlf7h1rg9xdcm9d8x2niivwjahahpvbl6krr";
+  };
+
+  meta = with stdenv.lib; {
+    description = "XMPP library for Python";
+    license = licenses.mit;
+    homepage = "http://sleekxmpp.com/";
+  };
+}
diff --git a/pkgs/development/python-modules/sleekxmpp/dnspython-ip6.patch b/pkgs/development/python-modules/sleekxmpp/dnspython-ip6.patch
new file mode 100644
index 00000000000..d8d6eb10683
--- /dev/null
+++ b/pkgs/development/python-modules/sleekxmpp/dnspython-ip6.patch
@@ -0,0 +1,55 @@
+--- a/sleekxmpp/xmlstream/resolver.py
++++ b/sleekxmpp/xmlstream/resolver.py
+@@ -175,6 +175,9 @@ def get_A(host, resolver=None, use_dnspy
+     """
+     log.debug("DNS: Querying %s for A records." % host)
+
++    if isinstance(host, bytes):
++        host = host.decode("utf-8")
++
+     # If not using dnspython, attempt lookup using the OS level
+     # getaddrinfo() method.
+     if resolver is None or not use_dnspython:
+@@ -189,7 +192,10 @@ def get_A(host, resolver=None, use_dnspy
+     # Using dnspython:
+     try:
+         recs = resolver.query(host, dns.rdatatype.A)
+-        return [rec.to_text() for rec in recs]
++        if isinstance(recs[0].to_text(), bytes):
++            return [rec.to_text().decode("utf-8") for rec in recs]
++        else:
++            return [rec.to_text() for rec in recs]
+     except (dns.resolver.NXDOMAIN, dns.resolver.NoAnswer):
+         log.debug("DNS: No A records for %s" % host)
+         return []
+@@ -222,6 +228,9 @@ def get_AAAA(host, resolver=None, use_dn
+     """
+     log.debug("DNS: Querying %s for AAAA records." % host)
+
++    if isinstance(host, bytes):
++        host = host.decode("utf-8")
++
+     # If not using dnspython, attempt lookup using the OS level
+     # getaddrinfo() method.
+     if resolver is None or not use_dnspython:
+@@ -240,7 +249,10 @@ def get_AAAA(host, resolver=None, use_dn
+     # Using dnspython:
+     try:
+         recs = resolver.query(host, dns.rdatatype.AAAA)
+-        return [rec.to_text() for rec in recs]
++        if isinstance(recs[0].to_text(), bytes):
++            return [rec.to_text().decode("utf-8") for rec in recs]
++        else:
++            return [rec.to_text() for rec in recs]
+     except (dns.resolver.NXDOMAIN, dns.resolver.NoAnswer):
+         log.debug("DNS: No AAAA records for %s" % host)
+         return []
+@@ -324,6 +336,8 @@ def get_SRV(host, port, service, proto='
+                 if running_sum >= selected:
+                     rec = sums[running_sum]
+                     host = rec.target.to_text()
++                    if isinstance(host, bytes):
++                        host = host.decode("utf-8")
+                     if host.endswith('.'):
+                         host = host[:-1]
+                     sorted_recs.append((host, rec.port))