1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
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
|