You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
wownero/installers/build-cli-win.py

89 lines
2.3 KiB

#
# This is a script for easily building the wownero cli installer in an automated build. Note
# that it is also possible to build the installer by dropping the .nsi file on the NSIS GUI,
# but that this will not work, as the script requires some defines, parsed from the wownero
# version file, to be passed on the command line.
#
import sys
sys.dont_write_bytecode = True
import os
import os.path
import subprocess
#
# Grab the dir of this .py
#
basedir = os.path.dirname(os.path.abspath(__file__))
#
# Try to find version.cpp.in.
#
version_file = os.path.join('..', 'src', 'version.cpp.in')
if not os.path.isfile(version_file):
print('Version file not found: %s' % version_file)
sys.exit(-1)
#
# Try to parse version.cpp.in.
#
version_string = None
release_name = None
with open(version_file, 'r') as fp:
version_prefix = '#define DEF_MONERO_VERSION "'
release_prefix = '#define DEF_MONERO_RELEASE_NAME "'
for line in fp:
if line.startswith(version_prefix):
version_string = line.replace(version_prefix, '')[:-2]
elif line.startswith(release_prefix):
release_name = line.replace(release_prefix, '')[:-2]
if not version_string:
print('Failed to parse version from: %s' % version_file)
sys.exit(-1)
if not release_name:
print('Failed to parse release name from: %s' % version_file)
sys.exit(-1)
#
# Check that we got an expected version format.
#
version_parts = version_string.split('.')
if len(version_parts) != 4:
print('Invalid version string: %s' % version_string)
sys.exit(-1)
#
# Try to find makensis.
#
makensis = 'makensis.exe'
if not os.path.isfile(makensis):
for dir in os.environ['PATH'].split(';'):
test = os.path.join(dir, makensis)
if os.path.isfile(test):
makensis = test
break
if not os.path.isfile(makensis):
print('Failed to find makensis.exe')
sys.exit(-1)
#
# Build & run makensis command line.
#
cmd = '"%s"' % makensis
cmd += ' /V4'
cmd += ' /DVERSION_MAJOR=%s' % version_parts[0]
cmd += ' /DVERSION_MINOR=%s' % version_parts[1]
cmd += ' /DVERSION_BUILD=%s' % version_parts[2]
cmd += ' /DVERSION_REVISION=%s' % version_parts[3]
cmd += ' /DRELEASE_NAME="%s"' % release_name
cmd += ' "%s"' % os.path.join(basedir, 'cli-win', 'installer.nsi')
print("Calling makensis: %s" % cmd)
subprocess.call(cmd)