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