mirror of
https://github.com/python/cpython.git
synced 2025-12-31 04:23:37 +00:00
gh-90548: Fix musl version detection with --strip-all (#137864)
Co-authored-by: Adam Turner <9087854+AA-Turner@users.noreply.github.com>
This commit is contained in:
parent
4f6ecd10c2
commit
6528cf47a0
3 changed files with 17 additions and 3 deletions
|
|
@ -199,6 +199,7 @@ def libc_ver(executable=None, lib='', version='', chunksize=16384):
|
|||
| (GLIBC_([0-9.]+))
|
||||
| (libc(_\w+)?\.so(?:\.(\d[0-9.]*))?)
|
||||
| (musl-([0-9.]+))
|
||||
| (libc.musl(?:-\w+)?.so(?:\.(\d[0-9.]*))?)
|
||||
""",
|
||||
re.ASCII | re.VERBOSE)
|
||||
|
||||
|
|
@ -224,9 +225,10 @@ def libc_ver(executable=None, lib='', version='', chunksize=16384):
|
|||
continue
|
||||
if not m:
|
||||
break
|
||||
libcinit, glibc, glibcversion, so, threads, soversion, musl, muslversion = [
|
||||
s.decode('latin1') if s is not None else s
|
||||
for s in m.groups()]
|
||||
decoded_groups = [s.decode('latin1') if s is not None else s
|
||||
for s in m.groups()]
|
||||
(libcinit, glibc, glibcversion, so, threads, soversion,
|
||||
musl, muslversion, musl_so, musl_sover) = decoded_groups
|
||||
if libcinit and not lib:
|
||||
lib = 'libc'
|
||||
elif glibc:
|
||||
|
|
@ -246,6 +248,10 @@ def libc_ver(executable=None, lib='', version='', chunksize=16384):
|
|||
lib = 'musl'
|
||||
if not ver or V(muslversion) > V(ver):
|
||||
ver = muslversion
|
||||
elif musl_so:
|
||||
lib = 'musl'
|
||||
if musl_sover and (not ver or V(musl_sover) > V(ver)):
|
||||
ver = musl_sover
|
||||
pos = m.end()
|
||||
return lib, version if ver is None else ver
|
||||
|
||||
|
|
|
|||
|
|
@ -567,6 +567,8 @@ def test_libc_ver(self):
|
|||
# musl uses semver, but we accept some variations anyway:
|
||||
(b'/aports/main/musl/src/musl-12.5', ('musl', '12.5')),
|
||||
(b'/aports/main/musl/src/musl-1.2.5.7', ('musl', '1.2.5.7')),
|
||||
(b'libc.musl.so.1', ('musl', '1')),
|
||||
(b'libc.musl-x86_64.so.1.2.5', ('musl', '1.2.5')),
|
||||
(b'', ('', '')),
|
||||
):
|
||||
with open(filename, 'wb') as fp:
|
||||
|
|
@ -585,6 +587,10 @@ def test_libc_ver(self):
|
|||
(b'GLIBC_1.23.4\0GLIBC_1.9\0GLIBC_1.21\0', ('glibc', '1.23.4')),
|
||||
(b'libc.so.2.4\0libc.so.9\0libc.so.23.1\0', ('libc', '23.1')),
|
||||
(b'musl-1.4.1\0musl-2.1.1\0musl-2.0.1\0', ('musl', '2.1.1')),
|
||||
(
|
||||
b'libc.musl-x86_64.so.1.4.1\0libc.musl-x86_64.so.2.1.1\0libc.musl-x86_64.so.2.0.1',
|
||||
('musl', '2.1.1'),
|
||||
),
|
||||
(b'no match here, so defaults are used', ('test', '100.1.0')),
|
||||
):
|
||||
with open(filename, 'wb') as f:
|
||||
|
|
|
|||
|
|
@ -0,0 +1,2 @@
|
|||
Fix ``musl`` detection for :func:`platform.libc_ver` on Alpine Linux if
|
||||
compiled with --strip-all.
|
||||
Loading…
Add table
Add a link
Reference in a new issue