aboutsummaryrefslogtreecommitdiffstats
path: root/scripts/nsis.py
diff options
context:
space:
mode:
authorTimos Ampelikiotis <t.ampelikiotis@virtualopensystems.com>2023-10-10 11:40:56 +0000
committerTimos Ampelikiotis <t.ampelikiotis@virtualopensystems.com>2023-10-10 11:40:56 +0000
commite02cda008591317b1625707ff8e115a4841aa889 (patch)
treeaee302e3cf8b59ec2d32ec481be3d1afddfc8968 /scripts/nsis.py
parentcc668e6b7e0ffd8c9d130513d12053cf5eda1d3b (diff)
Introduce Virtio-loopback epsilon release:
Epsilon release introduces a new compatibility layer which make virtio-loopback design to work with QEMU and rust-vmm vhost-user backend without require any changes. Signed-off-by: Timos Ampelikiotis <t.ampelikiotis@virtualopensystems.com> Change-Id: I52e57563e08a7d0bdc002f8e928ee61ba0c53dd9
Diffstat (limited to 'scripts/nsis.py')
-rw-r--r--scripts/nsis.py78
1 files changed, 78 insertions, 0 deletions
diff --git a/scripts/nsis.py b/scripts/nsis.py
new file mode 100644
index 000000000..5135a0583
--- /dev/null
+++ b/scripts/nsis.py
@@ -0,0 +1,78 @@
+#!/usr/bin/env python3
+#
+# Copyright (C) 2020 Red Hat, Inc.
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+import argparse
+import glob
+import os
+import shutil
+import subprocess
+import tempfile
+
+
+def signcode(path):
+ cmd = os.environ.get("SIGNCODE")
+ if not cmd:
+ return
+ subprocess.run([cmd, path])
+
+
+def main():
+ parser = argparse.ArgumentParser(description="QEMU NSIS build helper.")
+ parser.add_argument("outfile")
+ parser.add_argument("prefix")
+ parser.add_argument("srcdir")
+ parser.add_argument("cpu")
+ parser.add_argument("nsisargs", nargs="*")
+ args = parser.parse_args()
+
+ destdir = tempfile.mkdtemp()
+ try:
+ subprocess.run(["make", "install", "DESTDIR=" + destdir + os.path.sep])
+ with open(
+ os.path.join(destdir + args.prefix, "system-emulations.nsh"), "w"
+ ) as nsh:
+ for exe in glob.glob(
+ os.path.join(destdir + args.prefix, "qemu-system-*.exe")
+ ):
+ exe = os.path.basename(exe)
+ arch = exe[12:-4]
+ nsh.write(
+ """
+ Section "{0}" Section_{0}
+ SetOutPath "$INSTDIR"
+ File "${{BINDIR}}\\{1}"
+ SectionEnd
+ """.format(
+ arch, exe
+ )
+ )
+
+ for exe in glob.glob(os.path.join(destdir + args.prefix, "*.exe")):
+ signcode(exe)
+
+ makensis = [
+ "makensis",
+ "-V2",
+ "-NOCD",
+ "-DSRCDIR=" + args.srcdir,
+ "-DBINDIR=" + destdir + args.prefix,
+ ]
+ dlldir = "w32"
+ if args.cpu == "x86_64":
+ dlldir = "w64"
+ makensis += ["-DW64"]
+ if os.path.exists(os.path.join(args.srcdir, "dll")):
+ makensis += ["-DDLLDIR={0}/dll/{1}".format(args.srcdir, dlldir)]
+
+ makensis += ["-DOUTFILE=" + args.outfile] + args.nsisargs
+ subprocess.run(makensis)
+ signcode(args.outfile)
+ finally:
+ shutil.rmtree(destdir)
+
+
+if __name__ == "__main__":
+ main()