From eefffa78b9df658b48189658388090618b09c343 Mon Sep 17 00:00:00 2001 From: Ray Speth Date: Sun, 14 Jun 2015 19:47:33 -0400 Subject: [PATCH] [SCons] Use defined 'cantera_version' when building MSI --- SConstruct | 8 ++++++++ site_scons/buildutils.py | 2 +- site_scons/wxsgen.py | 15 +++++++++------ 3 files changed, 18 insertions(+), 7 deletions(-) diff --git a/SConstruct b/SConstruct index 6388b85e7..308981ee1 100644 --- a/SConstruct +++ b/SConstruct @@ -638,6 +638,12 @@ for arg in ARGUMENTS: print 'Encountered unexpected command line argument: %r' % arg sys.exit(0) +# Require a StrictVersion-compatible version +ctversion = StrictVersion(env['cantera_version']) +# MSI versions do not support pre-release tags +env['cantera_msi_version'] = '.'.join(str(x) for x in ctversion.version) +env['cantera_short_version'] = '.'.join(str(x) for x in ctversion.version[:2]) + # Print values of all build options: print "Configuration variables read from 'cantera.conf' and command line:" for line in open('cantera.conf'): @@ -1611,6 +1617,8 @@ if 'msi' in COMMAND_LINE_TARGETS: def build_wxs(target, source, env): import wxsgen wxs = wxsgen.WxsGenerator(env['stage_dir'], + short_version=env['cantera_short_version'], + full_version=env['cantera_msi_version'], x64=env['TARGET_ARCH']=='amd64', includeMatlab=env['matlab_toolbox']=='y') wxs.make_wxs(str(target[0])) diff --git a/site_scons/buildutils.py b/site_scons/buildutils.py index d06e7685a..f89a20a0f 100644 --- a/site_scons/buildutils.py +++ b/site_scons/buildutils.py @@ -14,7 +14,7 @@ import itertools import SCons.Errors import SCons import SCons.Node.FS -from distutils.version import LooseVersion +from distutils.version import LooseVersion, StrictVersion import distutils.sysconfig class DefineDict(object): diff --git a/site_scons/wxsgen.py b/site_scons/wxsgen.py index 48caf8e5d..e53c03e2f 100644 --- a/site_scons/wxsgen.py +++ b/site_scons/wxsgen.py @@ -3,20 +3,23 @@ import uuid import xml.etree.ElementTree as et class WxsGenerator(object): - def __init__(self, stageDir, includeMatlab=False, x64=False): + def __init__(self, stageDir, short_version, full_version, + includeMatlab=False, x64=False): self.prefix = stageDir self.x64 = x64 self.includeMatlab = includeMatlab + self.short_version = short_version + self.full_version = full_version # Use separate UUIDs for 64- and 32-bit components if self.x64: self.CANTERA_UUID = uuid.UUID('F707EB9E-3723-11E1-A99F-525400631BAF') self.pfilesName = 'ProgramFiles64Folder' - self.productName = 'Cantera 2.2 (64-bit)' + self.productName = 'Cantera {0} (64-bit)'.format(self.short_version) else: self.CANTERA_UUID = uuid.UUID('1B36CAF0-279D-11E1-8979-001FBC085391') self.pfilesName = 'ProgramFilesFolder' - self.productName = 'Cantera 2.2 (32-bit)' + self.productName = 'Cantera {0} (32-bit)'.format(self.short_version) def Directory(self, parent, Id, Name): return et.SubElement(parent, 'Directory', @@ -76,14 +79,14 @@ class WxsGenerator(object): UpgradeCode='2340BEE1-279D-11E1-A4AA-001FBC085391', Language='1033', Codepage='1252', - Version='2.2.0', + Version=self.full_version, Manufacturer='Cantera Developers')) fields = {'Platform': 'x64'} if self.x64 else {} package = et.SubElement(product, "Package", dict(Id='*', Keywords='Installer', - Description="Cantera 2.2 Installer", + Description="Cantera {0} Installer".format(self.short_version), InstallerVersion='310', Languages='1033', Compressed='yes', @@ -146,7 +149,7 @@ class WxsGenerator(object): # Registry entries reg_options = dict(ForceCreateOnInstall="yes", ForceDeleteOnUninstall="yes", Id='CanteraRegRoot', Root='HKLM', - Key='Software\\Cantera\\Cantera 2.2') + Key='Software\\Cantera\\Cantera {0}'.format(self.short_version)) reg_key = self.addRegistryKey(core, product, options=reg_options) et.SubElement(reg_key, 'RegistryValue', dict(Type='string', Name='InstallDir',