| (GLIBC_([0-9.]+))
| (libc(_\w+)?\.so(?:\.(\d[0-9.]*))?)
| (musl-([0-9.]+))
+ | (libc.musl(?:-\w+)?.so(?:\.(\d[0-9.]*))?)
""",
re.ASCII | re.VERBOSE)
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:
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
# 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:
(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: