summary refs log tree commit diff
path: root/gnu/packages/patches/python-hiredis-use-system-hiredis.patch
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/patches/python-hiredis-use-system-hiredis.patch')
-rw-r--r--gnu/packages/patches/python-hiredis-use-system-hiredis.patch82
1 files changed, 82 insertions, 0 deletions
diff --git a/gnu/packages/patches/python-hiredis-use-system-hiredis.patch b/gnu/packages/patches/python-hiredis-use-system-hiredis.patch
new file mode 100644
index 0000000000..622f049da7
--- /dev/null
+++ b/gnu/packages/patches/python-hiredis-use-system-hiredis.patch
@@ -0,0 +1,82 @@
+Upstream status: https://github.com/redis/hiredis-py/pull/161
+
+From 7b3c8a364f6167f4b1828dd9c48ada3d8b0786f6 Mon Sep 17 00:00:00 2001
+From: Maxim Cournoyer <maxim.cournoyer@gmail.com>
+Date: Sat, 18 Mar 2023 21:32:21 -0400
+Subject: [PATCH] setup.py: Fallback to use the system hiredis library.
+
+Fixes #158 fully, including using a system-prodived hiredis.
+
+When the hiredis git submodule hasn't been initialized, print a
+message about it, and attempt to link against the a system-provided
+hiredis library instead.
+
+* setup.py (is_hiredis_bundled): New procedure.
+(get_hiredis_bundled_sources): Likewise.  Print a message when
+bundled_hiredis_sources is empty.
+(get_sources): Adjust to use the above procedure.
+(get_linker_args): Add -lhiredis when the bundled hiredis is not used.
+---
+ setup.py | 30 +++++++++++++++++++++++++++---
+ 1 file changed, 27 insertions(+), 3 deletions(-)
+
+diff --git a/setup.py b/setup.py
+index 905df59..a77aca3 100644
+--- a/setup.py
++++ b/setup.py
+@@ -7,6 +7,7 @@ except ImportError:
+ import importlib
+ import glob
+ import io
++import os
+ import sys
+ 
+ 
+@@ -17,16 +18,39 @@ def version():
+     return module.__version__
+ 
+ 
++def is_hiredis_bundled():
++    hiredis_submodule = 'vendor/hiredis'
++    if (os.path.exists(hiredis_submodule)
++            and not os.path.isfile(hiredis_submodule)):
++        return not os.listdir()
++    return False
++
++
++def get_hiredis_bundled_sources():
++    hiredis_sources = ("alloc", "async", "hiredis", "net", "read",
++                       "sds", "sockcompat")
++    if is_hiredis_bundled():
++        return ["vendor/hiredis/%s.c" % src for src in hiredis_sources]
++    return []
++
++
++if not is_hiredis_bundled():
++    print('the bundled hiredis sources were not found;'
++          ' system hiredis will be used\n'
++          'to use the bundled hiredis sources instead,'
++          ' run "git submodule update --init"')
++
++
+ def get_sources():
+-    hiredis_sources = ("alloc", "async", "hiredis", "net", "read", "sds", "sockcompat")
+-    return sorted(glob.glob("src/*.c") + ["vendor/hiredis/%s.c" % src for src in hiredis_sources])
++    return sorted(glob.glob("src/*.c") + get_hiredis_bundled_sources())
+ 
+ 
+ def get_linker_args():
+     if 'win32' in sys.platform or 'darwin' in sys.platform:
+         return []
+     else:
+-        return ["-Wl,-Bsymbolic", ]
++        return ["-Wl,-Bsymbolic", ] + \
++            ['-lhiredis'] if not is_hiredis_bundled() else []
+ 
+ 
+ def get_compiler_args():
+
+base-commit: 8adb1b3cb38b82cdc73fa2d72879712da1f74e70
+-- 
+2.39.1
+