diff options
Diffstat (limited to 'src/mongo/installer/msi/SConscript')
-rw-r--r-- | src/mongo/installer/msi/SConscript | 328 |
1 files changed, 164 insertions, 164 deletions
diff --git a/src/mongo/installer/msi/SConscript b/src/mongo/installer/msi/SConscript index 59a871e978a..e62370f76df 100644 --- a/src/mongo/installer/msi/SConscript +++ b/src/mongo/installer/msi/SConscript @@ -1,164 +1,164 @@ -# -*- mode: python; -*- - -import os - -Import("env") -Import("has_option") - -env = env.Clone() - -env['WIX'] = os.environ.get('WIX') -env['WIXPATH'] = r'$WIX\bin' -env['WIXHEAT'] = r'$WIXPATH\heat.exe' -env['WIXCANDLE'] = r'$WIXPATH\candle.exe' -env['WIXLIGHT'] = r'$WIXPATH\light.exe' -env['WIXUIEXT'] = r'$WIXPATH\WixUIExtension.dll' -env['MERGEMODULESBASEPATH'] = os.environ.get('MERGEMODULESBASEPATH') -if env['MERGEMODULESBASEPATH'] == None and os.environ.get('ProgramFiles(x86)') != None: - env['MERGEMODULESBASEPATH'] = (os.environ.get('ProgramFiles(x86)') + - r"\Common Files\Merge Modules") - -sourcesList = [ "BinaryFragment.wxs", - "FeatureFragment.wxs", - "LicensingFragment.wxs", - "UIFragment.wxs", - ] - -# Need to do this in order to get scons to translate path separators into native format -buildDir = env.Dir("$BUILD_DIR").path -if has_option("use-new-tools"): - toolBuildDir = "src\mongo-tools" -else: - toolBuildDir = buildDir + r'\mongo' - -enterprisebase = 'src\mongo\db\modules\enterprise' -enterpriseToolBuildDir = buildDir + r'\mongo\db\modules\enterprise' - -# Set up parameters to pass to wix - -# -# msi_edition - "Enterprise" or "Standard" -# msi_platform - "x64" or "x86" -# msi_flavor - "2008R2Plus" or "" -# - -msi_flavor = '2008R2Plus' -msi_platform = 'x64' - -# Enterprise -if 'enterprise' in env['MONGO_MODULES']: - msi_edition = 'Enterprise' - upgrade_code = '822C75A4-40BA-456B-91D3-C339155F0F90' -# Community -else: - if has_option('ssl'): - msi_edition = 'SSL' - upgrade_code = 'FDAA2775-060E-4C54-9C19-A84197F3070D' - else: - msi_edition = 'Standard' - upgrade_code = '7BCCBD4E-AC8A-48BC-9922-E9EBB158A060' - -sourcesList.append("Installer_64.wxs") - -sources = ["wxs/" + file for file in sourcesList] -objects = ["$BUILD_DIR/msi/" + file.replace(".wxs", ".wixobj") for file in sourcesList] - -full_version = env['MONGO_VERSION'].partition('-')[0] - -# major version is the x.y, not the x.y.z -major_version = full_version -mv = major_version.split('.') -major_version = "%s.%s" % (mv[0], mv[1]) - -# We must regenerate the upgrade codes for each major release. -# i.e., 3.0, 3.2, 3.4 need new codes but not 3.2.1, 3.2.2, etc -# The build will now fail when the major version is bumped to prevent mistakes. -# When the upgrade codes are bumped, remember to raise the version number to the next major version. -# On each update to the upgrade codes: -# 1. Generate new GUIDs -# 2. Ensure each MSI gets a different GUID. This is used to identify products. -# It allows upgrade from 3.2.0 to 3.2.1 in place instead of side-by-side. -# 3. Update the check for the next major release below so we bump the GUIDs in the future. -# -if float(major_version) > 3.6: - # If you are troubleshooting this error, see the comment above - env.FatalError("The upgrade codes are out of date for this release. Please \n" + - "replace the existing GUIDs listed in this file with new GUIDs so " + - "side-by-side installation of major versions (i.e. 3.2, and 3.4) is " + - "supported.") - -# Currently, we are planning to key the same upgrade code for each -# (msi_edition, msi_platform, msi_flavor) combination -# and change MSI ProductId on minor updates, 2.6.0 -> 2.6.1, we let Wix do automatic -# GUID generation for us rather then build a database of GUIDs in our build system -# For major updates, we are going to create a new directory/productid/upgrade_code ie, 2.6 -> 3.0 - - -# candle: compile .wxs files into .wixobjs -env.Command(objects, - sources, - '"$WIXCANDLE" -wx' - # cannot have anything other than x.x.x.x in version string. - # we should choose a fourth version number that reflects pre-ness. - ' -dMongoDBMajorVersion=' + major_version + - ' -dMongoDBVersion=' + full_version + - ' -dLicenseSource=distsrc' - r' -dEnterpriseBase=' + enterprisebase + '\\' - ' -dBinarySource=' + buildDir + r'\mongo' - ' -dToolBinarySource=' + toolBuildDir + - ' -dEnterpriseToolBinarySource=' + enterpriseToolBuildDir + - ' -dMergeModulesBasePath="$MERGEMODULESBASEPATH"' - ' -dEdition=' + msi_edition + - ' -d"ProductId=*\"' - ' -dUpgradeCode=' + upgrade_code + - ' -dClientSource=' + buildDir + r'\client_build' - r' -dClientHeaderSource=${INSTALL_DIR}\include\mongo' - ' -dConfiguration=Release' - ' -dOutDir=' + buildDir + r'\msi' - ' -dPlatform=' + msi_platform + - ' -dFlavor=' + msi_flavor + - r' -dProjectDir=buildscripts\packaging\msi\\' - ' -dProjectName=MongoDB' - ' -dTargetDir=' + buildDir + r'\msi' - ' -dTargetExt=.msi' - ' -dTargetFileName=${SERVER_ARCHIVE}' - r' -dSaslSource=c:\sasl\bin' - r' -dSnmpSource=c:\snmp\bin' - r' -dSslSource=' + env['WINDOWS_OPENSSL_BIN'] + - ' -out ' + buildDir + r'\msi\\' - ' -arch ' + msi_platform + - ' -ext "$WIXUIEXT"' - ' $SOURCES') - -#light: link .objs into an msi -pre_msi = "$BUILD_DIR/msi/${SERVER_DIST_BASENAME}.pre.msi" - -# Suppress VC140_CRT_CRT.MSM Internal Consistency Errors -# ICE03 - Supress "String overflow" -# -- https://msdn.microsoft.com/en-us/library/windows/desktop/aa369037(v=vs.85).aspx -# ICE82 - Suppress "duplicate sequence number" -# -- https://msdn.microsoft.com/en-us/library/windows/desktop/aa368798(v=vs.85).aspx -# - -pre_msi_cmd = env.Command(pre_msi, - objects, - '"$WIXLIGHT" -out ${TARGET} -wx -cultures:null -sice:ICE82 -sice:ICE03' - ' -ext "$WIXUIEXT"' - ' ${SOURCES}') - -env.Depends(pre_msi_cmd, '$BUILD_DIR/mongo/mongo.exe') -env.Depends(pre_msi_cmd, '$BUILD_DIR/mongo/mongod.exe') -env.Depends(pre_msi_cmd, '$BUILD_DIR/mongo/mongos.exe') -env.Depends(pre_msi_cmd, '$BUILD_DIR/mongo/mongoperf.exe') - -if 'enterprise' in env['MONGO_MODULES']: - env.Depends(pre_msi_cmd, "#" + enterpriseToolBuildDir + "/mongodecrypt.exe") - env.Depends(pre_msi_cmd, "#" + enterpriseToolBuildDir + "/mongoldap.exe") - -msi = "$BUILD_DIR/msi/${SERVER_DIST_BASENAME}.msi" -env.Command(msi, - pre_msi, - r'$PYTHON buildscripts\msitrim.py ${SOURCES} ${TARGET}') -env.AlwaysBuild(msi) - -env.Alias( "msi" , msi ) - +# -*- mode: python; -*-
+
+import os
+
+Import("env")
+Import("has_option")
+
+env = env.Clone()
+
+env['WIX'] = os.environ.get('WIX')
+env['WIXPATH'] = r'$WIX\bin'
+env['WIXHEAT'] = r'$WIXPATH\heat.exe'
+env['WIXCANDLE'] = r'$WIXPATH\candle.exe'
+env['WIXLIGHT'] = r'$WIXPATH\light.exe'
+env['WIXUIEXT'] = r'$WIXPATH\WixUIExtension.dll'
+env['WIXUTILEXT'] = r'$WIXPATH\WixUtilExtension.dll'
+env['MERGEMODULESBASEPATH'] = os.environ.get('MERGEMODULESBASEPATH')
+if env['MERGEMODULESBASEPATH'] == None and os.environ.get('ProgramFiles(x86)') != None:
+ env['MERGEMODULESBASEPATH'] = (os.environ.get('ProgramFiles(x86)') +
+ r"\Common Files\Merge Modules")
+
+sourcesList = [ "BinaryFragment.wxs",
+ "FeatureFragment.wxs",
+ "LicensingFragment.wxs",
+ "UIFragment.wxs",
+ ]
+
+# Need to do this in order to get scons to translate path separators into native format
+buildDir = env.Dir("$BUILD_DIR").path
+if has_option("use-new-tools"):
+ toolBuildDir = "src\mongo-tools"
+else:
+ toolBuildDir = buildDir + r'\mongo'
+
+enterprisebase = 'src\mongo\db\modules\enterprise'
+enterpriseToolBuildDir = buildDir + r'\mongo\db\modules\enterprise'
+
+# Set up parameters to pass to wix -
+#
+# msi_edition - "Enterprise" or "Standard"
+# msi_platform - "x64" or "x86"
+# msi_flavor - "2008R2Plus" or ""
+#
+
+msi_flavor = '2008R2Plus'
+msi_platform = 'x64'
+
+# Enterprise
+if 'enterprise' in env['MONGO_MODULES']:
+ msi_edition = 'Enterprise'
+ upgrade_code = '822C75A4-40BA-456B-91D3-C339155F0F90'
+# Community
+else:
+ if has_option('ssl'):
+ msi_edition = 'SSL'
+ upgrade_code = 'FDAA2775-060E-4C54-9C19-A84197F3070D'
+ else:
+ msi_edition = 'Standard'
+ upgrade_code = '7BCCBD4E-AC8A-48BC-9922-E9EBB158A060'
+
+sourcesList.append("Installer_64.wxs")
+
+sources = ["wxs/" + file for file in sourcesList]
+objects = ["$BUILD_DIR/msi/" + file.replace(".wxs", ".wixobj") for file in sourcesList]
+
+full_version = env['MONGO_VERSION'].partition('-')[0]
+
+# major version is the x.y, not the x.y.z
+major_version = full_version
+mv = major_version.split('.')
+major_version = "%s.%s" % (mv[0], mv[1])
+
+# We must regenerate the upgrade codes for each major release.
+# i.e., 3.0, 3.2, 3.4 need new codes but not 3.2.1, 3.2.2, etc
+# The build will now fail when the major version is bumped to prevent mistakes.
+# When the upgrade codes are bumped, remember to raise the version number to the next major version.
+# On each update to the upgrade codes:
+# 1. Generate new GUIDs
+# 2. Ensure each MSI gets a different GUID. This is used to identify products.
+# It allows upgrade from 3.2.0 to 3.2.1 in place instead of side-by-side.
+# 3. Update the check for the next major release below so we bump the GUIDs in the future.
+#
+if float(major_version) > 3.6:
+ # If you are troubleshooting this error, see the comment above
+ env.FatalError("The upgrade codes are out of date for this release. Please \n" +
+ "replace the existing GUIDs listed in this file with new GUIDs so " +
+ "side-by-side installation of major versions (i.e. 3.2, and 3.4) is " +
+ "supported.")
+
+# Currently, we are planning to key the same upgrade code for each
+# (msi_edition, msi_platform, msi_flavor) combination
+# and change MSI ProductId on minor updates, 2.6.0 -> 2.6.1, we let Wix do automatic
+# GUID generation for us rather then build a database of GUIDs in our build system
+# For major updates, we are going to create a new directory/productid/upgrade_code ie, 2.6 -> 3.0
+
+
+# candle: compile .wxs files into .wixobjs
+env.Command(objects,
+ sources,
+ '"$WIXCANDLE" -wx'
+ # cannot have anything other than x.x.x.x in version string.
+ # we should choose a fourth version number that reflects pre-ness.
+ ' -dMongoDBMajorVersion=' + major_version +
+ ' -dMongoDBVersion=' + full_version +
+ ' -dLicenseSource=distsrc'
+ r' -dEnterpriseBase=' + enterprisebase + '\\'
+ ' -dBinarySource=' + buildDir + r'\mongo'
+ ' -dToolBinarySource=' + toolBuildDir +
+ ' -dEnterpriseToolBinarySource=' + enterpriseToolBuildDir +
+ ' -dMergeModulesBasePath="$MERGEMODULESBASEPATH"'
+ ' -dEdition=' + msi_edition +
+ ' -d"ProductId=*\"'
+ ' -dUpgradeCode=' + upgrade_code +
+ ' -dClientSource=' + buildDir + r'\client_build'
+ r' -dClientHeaderSource=${INSTALL_DIR}\include\mongo'
+ ' -dConfiguration=Release'
+ ' -dOutDir=' + buildDir + r'\msi'
+ ' -dPlatform=' + msi_platform +
+ ' -dFlavor=' + msi_flavor +
+ r' -dProjectDir=buildscripts\packaging\msi\\'
+ ' -dProjectName=MongoDB'
+ ' -dTargetDir=' + buildDir + r'\msi'
+ ' -dTargetExt=.msi'
+ ' -dTargetFileName=${SERVER_ARCHIVE}'
+ r' -dSaslSource=c:\sasl\bin'
+ r' -dSnmpSource=c:\snmp\bin'
+ r' -dSslSource=' + env['WINDOWS_OPENSSL_BIN'] +
+ ' -out ' + buildDir + r'\msi\\'
+ ' -arch ' + msi_platform +
+ ' -ext "$WIXUIEXT"'
+ ' $SOURCES')
+
+#light: link .objs into an msi
+pre_msi = "$BUILD_DIR/msi/${SERVER_DIST_BASENAME}.pre.msi"
+
+# Suppress VC140_CRT_CRT.MSM Internal Consistency Errors
+# ICE03 - Supress "String overflow"
+# -- https://msdn.microsoft.com/en-us/library/windows/desktop/aa369037(v=vs.85).aspx
+# ICE82 - Suppress "duplicate sequence number"
+# -- https://msdn.microsoft.com/en-us/library/windows/desktop/aa368798(v=vs.85).aspx
+#
+
+pre_msi_cmd = env.Command(pre_msi,
+ objects,
+ '"$WIXLIGHT" -out ${TARGET} -wx -cultures:null -sice:ICE82 -sice:ICE03'
+ ' -ext "$WIXUIEXT" -ext "$WIXUTILEXT"'
+ ' ${SOURCES}')
+
+env.Depends(pre_msi_cmd, '$BUILD_DIR/mongo/mongo.exe')
+env.Depends(pre_msi_cmd, '$BUILD_DIR/mongo/mongod.exe')
+env.Depends(pre_msi_cmd, '$BUILD_DIR/mongo/mongos.exe')
+env.Depends(pre_msi_cmd, '$BUILD_DIR/mongo/mongoperf.exe')
+
+if 'enterprise' in env['MONGO_MODULES']:
+ env.Depends(pre_msi_cmd, "#" + enterpriseToolBuildDir + "/mongodecrypt.exe")
+ env.Depends(pre_msi_cmd, "#" + enterpriseToolBuildDir + "/mongoldap.exe")
+
+msi = "$BUILD_DIR/msi/${SERVER_DIST_BASENAME}.msi"
+env.Command(msi,
+ pre_msi,
+ r'$PYTHON buildscripts\msitrim.py ${SOURCES} ${TARGET}')
+env.AlwaysBuild(msi)
+
+env.Alias( "msi" , msi )
|