Upstream status: https://github.com/redis/hiredis-py/pull/161 From 7b3c8a364f6167f4b1828dd9c48ada3d8b0786f6 Mon Sep 17 00:00:00 2001 From: Maxim Cournoyer 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 /a>)Author 2022-12-26upstream-updater: Rename record field....The next commits will make the functions, which are currently importing the latest version of a package, change into importing the latest or a given version of the package (for those updaters supporting specifying a version). Thus the name ‘latest‘ is no longer appropriate. * guix/upstream.scm (upstream-updater) Rename field [latest] to [import]. (lookup-updater, package-latest-release) Adjust fieldname accordingly. * guix/gnu-maintenance.scm (%gnu-updater, %gnu-ftp-updater, %savannah-updater, %sourceforge-updater, %xorg-updater, %kernel.org-updater, %generic-html-updater), guix/import/cpan.scm (%cpan-updater), guix/import/cran.scm (%cran-updater, %bioconductor-updater), guix/import/crate.scm (%crate-updater), guix/import/egg.scm (%egg-updater), guix/import/elpa.scm (%elpa-updater), guix/import/gem.scm (%gem-updater), guix/import/git.scm (%generic-git-updater), guix/import/github.scm (%github-updater), guix/import/gnome.scm (%gnome-updater), guix/import/hackage.scm (%hackage-updater), guix/import/hexpm.scm (%hexpm-updater), guix/import/kde.scm (%kde-updater), guix/import/launchpad.scm (%launchpad-updater), guix/import/minetest.scm (%minetest-updater), guix/import/opam.scm (%opam-updater), guix/import/pypi.scm (%pypi-updater), guix/import/stackage.scm (%stackage-updater), tests/import-github.scm (found-sexp) tests/transformations.scm ("options->transformation, with-latest"): Adjust fieldname accordingly. Hartmut Goebel