Browse Source
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> Reviewed-by: Daniel P. Berrangé <berrange@redhat.com> Message-Id: <20200826110419.528931-9-marcandre.lureau@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>pull/96/head
committed by
Paolo Bonzini
3 changed files with 103 additions and 56 deletions
@ -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() |
||||
Loading…
Reference in new issue