forked from cs01/gdbgui
-
Notifications
You must be signed in to change notification settings - Fork 0
/
make_executable.py
96 lines (74 loc) · 2.04 KB
/
make_executable.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#!/usr/bin/env python
"""
"""
import subprocess
from sys import platform
from gdbgui import __version__
import os
if platform.startswith("linux"):
platform_dir = "linux"
elif platform.startswith("darwin"):
platform_dir = "mac"
elif platform.startswith("win32"):
platform_dir = "windows"
else:
raise Exception("Unknown platform")
def write_spec_with_gdbgui_version_in_name(spec_path, binary_name):
spec = (
"""# -*- mode: python -*-
# create executable with: pyinstaller gdbgui.spec
# run executable with: dist/gdbgui
block_cipher = None
a = Analysis(['gdbgui/backend.py'], # noqa
pathex=['.'],
binaries=[],
datas=[
('./gdbgui/static*', './static'),
('./gdbgui/templates*', './templates'),
('./gdbgui/VERSION.txt*', './')
],
hiddenimports=[
'engineio.async_gevent',
'engineio.async_threading',
],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
)
pyz = PYZ(a.pure, a.zipped_data, # noqa
cipher=block_cipher)
exe = EXE(pyz, # noqa
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
name="%s",
debug=False,
strip=False,
upx=False,
runtime_tmpdir=None,
console=True)
"""
% binary_name
)
with open(spec_path, "w+") as f:
f.write(spec)
def main():
binary_name = "gdbgui_%s" % __version__
spec_path = "gdbgui.spec"
write_spec_with_gdbgui_version_in_name(spec_path, binary_name)
subprocess.call(
[
"pyinstaller",
spec_path,
"--distpath",
os.path.join("executable", platform_dir),
"--key",
"a5s1fe65aw41f54sa64v6b4ds98fhea98rhg4etj4et78ku4yu87mn",
]
)
if __name__ == "__main__":
main()