Skip to content

Commit c5ad125

Browse files
committed
corrections to library finding algo pt 2
1 parent d3e3e2c commit c5ad125

File tree

3 files changed

+44
-16
lines changed

3 files changed

+44
-16
lines changed

tools/build_appimage.py

+4-1
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ def download_file(url, filename):
9494
data = json.loads(f.read())
9595
libs = data['libs']
9696
packages = data['packages']
97+
excludes = data['excludes']
9798
paths = set()
9899

99100
if not args.skip_apt:
@@ -109,7 +110,9 @@ def download_file(url, filename):
109110
if os.path.basename(lib) in existing_files:
110111
logger.debug(f'Skipping {lib} (already in appimage)')
111112
continue
112-
113+
if os.path.basename(lib) in excludes:
114+
logger.debug(f'Skipping {lib} (excluded)')
115+
continue
113116
paths.add(os.path.dirname(lib))
114117
if os.path.exists(lib):
115118
filename = lib

tools/find_linux_libs.py

+19-1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import json
77
import logging
88
import os
9+
import pathlib
910
import re
1011
import subprocess
1112
import sys
@@ -43,6 +44,17 @@ def strip_minor_versions(path):
4344
return re.sub('(.so.[0-9]*)[.0-9]*$', r'\1', path)
4445

4546

47+
def what_links_to(path):
48+
links = set()
49+
dirname = os.path.dirname(path)
50+
for filename in os.listdir(dirname):
51+
filename = os.path.join(dirname, filename)
52+
if (os.path.islink(filename)
53+
and str(pathlib.Path(filename).resolve()) == path):
54+
links.add(filename)
55+
return sorted(links, key=len)
56+
57+
4658
def is_lib(path):
4759
return ('.so' in path
4860
and os.path.expanduser('~') not in path
@@ -56,7 +68,7 @@ def iter_lsofoutput(output):
5668
if line[3] == 'mem':
5769
path = line[-1]
5870
if is_lib(path):
59-
yield strip_minor_versions(path)
71+
yield path
6072

6173

6274
PID = args.pid[0]
@@ -96,6 +108,12 @@ def iter_lsofoutput(output):
96108

97109

98110
for lib in iter_lsofoutput(output):
111+
links = what_links_to(path)
112+
if len(links) == 1:
113+
lib = links[0]
114+
else:
115+
logger.warning(f'Double check: {path} {links}')
116+
lib = links[0]
99117
if lib in known_libs:
100118
logger.debug(f'Found known lib: {lib}')
101119
else:

tools/linux_libs.json

+21-14
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,26 @@
11
{
22
"libs": [
3-
"/lib/x86_64-linux-gnu/ld-2.31.so",
3+
"/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2",
44
"/lib/x86_64-linux-gnu/libbz2.so.1",
5-
"/lib/x86_64-linux-gnu/libc-2.31.so",
5+
"/lib/x86_64-linux-gnu/libc.so.6",
66
"/lib/x86_64-linux-gnu/libcom_err.so.2",
77
"/lib/x86_64-linux-gnu/libdbus-1.so.3",
8-
"/lib/x86_64-linux-gnu/libdl-2.31.so",
8+
"/lib/x86_64-linux-gnu/libdl.so.2",
99
"/lib/x86_64-linux-gnu/libexpat.so.1",
1010
"/lib/x86_64-linux-gnu/libgcc_s.so.1",
1111
"/lib/x86_64-linux-gnu/libgpg-error.so.0",
1212
"/lib/x86_64-linux-gnu/libkeyutils.so.1",
1313
"/lib/x86_64-linux-gnu/liblzma.so.5",
14-
"/lib/x86_64-linux-gnu/libm-2.31.so",
14+
"/lib/x86_64-linux-gnu/libm.so.6",
1515
"/lib/x86_64-linux-gnu/libpcre.so.3",
16-
"/lib/x86_64-linux-gnu/libpthread-2.31.so",
17-
"/lib/x86_64-linux-gnu/libresolv-2.31.so",
18-
"/lib/x86_64-linux-gnu/librt-2.31.so",
16+
"/lib/x86_64-linux-gnu/libpthread.so.0",
17+
"/lib/x86_64-linux-gnu/libresolv.so.2",
18+
"/lib/x86_64-linux-gnu/librt.so.1",
1919
"/lib/x86_64-linux-gnu/libselinux.so.1",
20-
"/lib/x86_64-linux-gnu/libutil-2.31.so",
20+
"/lib/x86_64-linux-gnu/libutil.so.1",
2121
"/lib/x86_64-linux-gnu/libz.so.1",
2222
"/usr/lib/x86_64-linux-gnu/gio/modules/libgvfsdbus.so",
23-
"/usr/lib/x86_64-linux-gnu/gtk-3.0/modules/libcanberra-gtk3-module.so",
23+
"/usr/lib/x86_64-linux-gnu/gtk-3.0/modules/libcanberra-gtk-module.so",
2424
"/usr/lib/x86_64-linux-gnu/gvfs/libgvfscommon.so",
2525
"/usr/lib/x86_64-linux-gnu/libGLX.so.0",
2626
"/usr/lib/x86_64-linux-gnu/libGLdispatch.so.0",
@@ -48,7 +48,7 @@
4848
"/usr/lib/x86_64-linux-gnu/libcairo.so.2",
4949
"/usr/lib/x86_64-linux-gnu/libcanberra-gtk3.so.0",
5050
"/usr/lib/x86_64-linux-gnu/libcanberra.so.0",
51-
"/usr/lib/x86_64-linux-gnu/libcrypto.so.1",
51+
"/usr/lib/x86_64-linux-gnu/libcrypto.so",
5252
"/usr/lib/x86_64-linux-gnu/libdatrie.so.1",
5353
"/usr/lib/x86_64-linux-gnu/libepoxy.so.0",
5454
"/usr/lib/x86_64-linux-gnu/libffi.so.7",
@@ -81,8 +81,8 @@
8181
"/usr/lib/x86_64-linux-gnu/libpcre2-8.so.0",
8282
"/usr/lib/x86_64-linux-gnu/libpixman-1.so.0",
8383
"/usr/lib/x86_64-linux-gnu/libpng16.so.16",
84-
"/usr/lib/x86_64-linux-gnu/libsqlite3.so.0",
85-
"/usr/lib/x86_64-linux-gnu/libssl.so.1",
84+
"/usr/lib/x86_64-linux-gnu/libsqlite3.so",
85+
"/usr/lib/x86_64-linux-gnu/libssl.so",
8686
"/usr/lib/x86_64-linux-gnu/libstdc++.so.6",
8787
"/usr/lib/x86_64-linux-gnu/libsystemd.so.0",
8888
"/usr/lib/x86_64-linux-gnu/libtdb.so.1",
@@ -210,22 +210,29 @@
210210
"zlib1g"
211211
],
212212
"excludes": [
213+
"ld-linux-x86-64.so.2",
213214
"libGLX.so.0",
214215
"libGLdispatch.so.0",
215216
"libX11-xcb.so.1",
216217
"libX11.so.6",
218+
"libc.so.6",
217219
"libcom_err.so.2",
220+
"libdl.so.2",
218221
"libexpat.so.1",
219222
"libfontconfig.so.1",
220223
"libfreetype.so.6",
221224
"libfribidi.so.0",
222225
"libgcc_s.so.1",
223226
"libgpg-error.so.0",
224227
"libharfbuzz.so.0",
228+
"libm.so.6",
229+
"libpthread.so.0",
230+
"libresolv.so.2",
231+
"librt.so.1",
225232
"libstdc++.so.6",
226233
"libthai.so.0",
227-
"libuuid.so.1",
234+
"libutil.so.1",
228235
"libxcb.so.1",
229236
"libz.so.1"
230237
]
231-
}
238+
}

0 commit comments

Comments
 (0)