mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-01-15 09:23:37 +00:00
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.
53 lines
1.9 KiB
Diff
53 lines
1.9 KiB
Diff
From 5330b6af9f832af59aa5c61d9ef6971053a8e709 Mon Sep 17 00:00:00 2001
|
|
From: Jonathan Ringer <jonringer117@gmail.com>
|
|
Date: Mon, 9 Nov 2020 10:24:35 -0800
|
|
Subject: [PATCH] CPython: 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 @@ def find_library(name, is64 = False):
|
|
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.33.1
|
|
|