18
18
f"{ TARGET_DIR } /system76-keyboard-configurator.exe" ,
19
19
}
20
20
21
- DLL_RE = r"(?<==> ).*\\mingw32\\bin\\(\S+.dll)"
21
+ DLL_RE = r"(?<==> )( .*\\mingw32) \\bin\\(\S+.dll)"
22
22
23
23
24
24
# Use ntldd to find the mingw dlls required by a .exe
25
25
def find_depends (exe ):
26
26
output = subprocess .check_output (['ntldd.exe' , '-R' , exe ], universal_newlines = True )
27
27
dlls = set ()
28
+ mingw_dir = None
28
29
for l in output .splitlines ():
29
30
m = re .search (DLL_RE , l , re .IGNORECASE )
30
31
if m :
31
- dlls .add ((m .group (0 ), m .group (1 )))
32
- return dlls
32
+ dlls .add ((m .group (0 ), m .group (2 )))
33
+ mingw_dir = m .group (1 )
34
+ return mingw_dir , dlls
33
35
34
36
35
37
# Build application with rustup
@@ -40,8 +42,11 @@ def find_depends(exe):
40
42
41
43
# Generate set of all required dlls
42
44
dlls = set ()
45
+ mingw_dir = None
43
46
for i in EXES :
44
- dlls = dlls .union (find_depends (i ))
47
+ mingw_dir_new , dlls_new = find_depends (i )
48
+ dlls = dlls .union (dlls_new )
49
+ mingw_dir = mingw_dir or mingw_dir_new
45
50
46
51
# Generate libraries.wxi
47
52
with open ('libraries.wxi' , 'w' ) as f :
@@ -65,8 +70,18 @@ def find_depends(exe):
65
70
print (f"Strip { i } -> out/{ filename } " )
66
71
subprocess .check_call ([f"strip.exe" , '-o' , f"out/{ filename } " , i ])
67
72
for src , filename in dlls :
68
- print (f"Copy { src } -> out/{ filename } " )
69
- shutil .copy (f"{ src } " , 'out' )
73
+ dest = "out/" + filename
74
+ print (f"Copy { src } -> { dest } " )
75
+ shutil .copy (src , 'out' )
76
+
77
+ # Copy icons and other data
78
+ os .mkdir ("out/share" )
79
+ os .mkdir ("out/lib" )
80
+ for i in ('share/icons' , 'lib/p11-kit' , 'lib/gdk-pixbuf-2.0' ):
81
+ src = mingw_dir + '\\ ' + i .replace ('/' , '\\ ' )
82
+ dest = "out/" + i
83
+ print (f"Copy { src } -> { dest } " )
84
+ shutil .copytree (src , dest )
70
85
71
86
# Extract crate version from cargo
72
87
meta_str = subprocess .check_output (CARGO + ["metadata" , "--format-version" , "1" , "--no-deps" ])
0 commit comments