File 161-use-system-hiredis.patch of Package python-hiredis

From dacfaf17e3a8383d7a6cc377cf99b44770b04d06 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-provided 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 |   29 ++++++++++++++++++++++++++---
 1 file changed, 26 insertions(+), 3 deletions(-)

--- 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,38 @@ 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"))
+    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():
openSUSE Build Service is sponsored by