]> git.proxmox.com Git - mirror_qemu.git/blame - scripts/nsis.py
nsis installer: List emulators in alphabetical order
[mirror_qemu.git] / scripts / nsis.py
CommitLineData
8adfeba9
MAL
1#!/usr/bin/env python3
2#
3# Copyright (C) 2020 Red Hat, Inc.
4#
5# SPDX-License-Identifier: GPL-2.0-or-later
6
7import argparse
8import glob
9import os
10import shutil
11import subprocess
12import tempfile
13
14
15def signcode(path):
16 cmd = os.environ.get("SIGNCODE")
17 if not cmd:
18 return
19 subprocess.run([cmd, path])
20
21
22def main():
23 parser = argparse.ArgumentParser(description="QEMU NSIS build helper.")
24 parser.add_argument("outfile")
25 parser.add_argument("prefix")
26 parser.add_argument("srcdir")
27 parser.add_argument("cpu")
28 parser.add_argument("nsisargs", nargs="*")
29 args = parser.parse_args()
30
31 destdir = tempfile.mkdtemp()
32 try:
33 subprocess.run(["make", "install", "DESTDIR=" + destdir + os.path.sep])
34 with open(
35 os.path.join(destdir + args.prefix, "system-emulations.nsh"), "w"
36 ) as nsh:
e422d92a 37 for exe in sorted(glob.glob(
8adfeba9 38 os.path.join(destdir + args.prefix, "qemu-system-*.exe")
e422d92a 39 )):
8adfeba9
MAL
40 exe = os.path.basename(exe)
41 arch = exe[12:-4]
42 nsh.write(
43 """
44 Section "{0}" Section_{0}
45 SetOutPath "$INSTDIR"
46 File "${{BINDIR}}\\{1}"
47 SectionEnd
48 """.format(
49 arch, exe
50 )
51 )
52
53 for exe in glob.glob(os.path.join(destdir + args.prefix, "*.exe")):
54 signcode(exe)
55
56 makensis = [
57 "makensis",
58 "-V2",
59 "-NOCD",
60 "-DSRCDIR=" + args.srcdir,
61 "-DBINDIR=" + destdir + args.prefix,
62 ]
63 dlldir = "w32"
64 if args.cpu == "x86_64":
65 dlldir = "w64"
66 makensis += ["-DW64"]
67 if os.path.exists(os.path.join(args.srcdir, "dll")):
933c8fe7 68 makensis += ["-DDLLDIR={0}/dll/{1}".format(args.srcdir, dlldir)]
8adfeba9
MAL
69
70 makensis += ["-DOUTFILE=" + args.outfile] + args.nsisargs
71 subprocess.run(makensis)
72 signcode(args.outfile)
73 finally:
74 shutil.rmtree(destdir)
75
76
77if __name__ == "__main__":
78 main()