66d41e75e8
This patch hasn't been complete since an alternate case was added to cpython which allows using ld(1) to resolve libraries. In addition to this, the stated reason for the patch, to improve startup times by preventing cpython from invoking gcc to resolve libuuid, has not been an issue since that logic was removed in cpython 3.9. Finally, this patch creates a disparity between Linux and other operating systems (I am working on FreeBSD right now) since the ld(1) case is system gated. Since it no longer accomplishes its stated purpose, is no longer needed, and creates platform disparities, we should remove it. I've left the half of this patch which prevents /sbin/ldconfig from being invoked, since no nix-compiled program should ever be invoking absolute paths like this.
52 lines
1.9 KiB
Diff
52 lines
1.9 KiB
Diff
From 66f492d2eda94bd64db833839a325caf6ba0fed5 Mon Sep 17 00:00:00 2001
|
|
From: Greg Roodt <greg@canva.com>
|
|
Date: Wed, 9 Dec 2020 17:59:24 +1100
|
|
Subject: [PATCH] Don't use ldconfig
|
|
|
|
---
|
|
Lib/ctypes/util.py | 77 ++--------------------------------------------
|
|
1 file changed, 2 insertions(+), 75 deletions(-)
|
|
|
|
diff --git a/Lib/ctypes/util.py b/Lib/ctypes/util.py
|
|
index 0c2510e161..7fb98af308 100644
|
|
--- a/Lib/ctypes/util.py
|
|
+++ b/Lib/ctypes/util.py
|
|
@@ -268,34 +222,7 @@ elif os.name == "posix":
|
|
else:
|
|
|
|
def _findSoname_ldconfig(name):
|
|
- import struct
|
|
- if struct.calcsize('l') == 4:
|
|
- machine = os.uname().machine + '-32'
|
|
- else:
|
|
- machine = os.uname().machine + '-64'
|
|
- mach_map = {
|
|
- 'x86_64-64': 'libc6,x86-64',
|
|
- 'ppc64-64': 'libc6,64bit',
|
|
- 'sparc64-64': 'libc6,64bit',
|
|
- 's390x-64': 'libc6,64bit',
|
|
- 'ia64-64': 'libc6,IA-64',
|
|
- }
|
|
- abi_type = mach_map.get(machine, 'libc6')
|
|
-
|
|
- # XXX assuming GLIBC's ldconfig (with option -p)
|
|
- regex = r'\s+(lib%s\.[^\s]+)\s+\(%s'
|
|
- regex = os.fsencode(regex % (re.escape(name), abi_type))
|
|
- try:
|
|
- with subprocess.Popen(['/sbin/ldconfig', '-p'],
|
|
- stdin=subprocess.DEVNULL,
|
|
- stderr=subprocess.DEVNULL,
|
|
- stdout=subprocess.PIPE,
|
|
- env={'LC_ALL': 'C', 'LANG': 'C'}) as p:
|
|
- res = re.search(regex, p.stdout.read())
|
|
- if res:
|
|
- return os.fsdecode(res.group(1))
|
|
- except OSError:
|
|
- pass
|
|
+ return None
|
|
|
|
def _findLib_ld(name):
|
|
# See issue #9998 for why this is needed
|
|
--
|
|
2.24.3 (Apple Git-128)
|