Index: gears/SConscript.installers |
diff --git a/gears/SConscript.installers b/gears/SConscript.installers |
deleted file mode 100644 |
index 4cefdb15074c55f9af4473152d3dd133826b71aa..0000000000000000000000000000000000000000 |
--- a/gears/SConscript.installers |
+++ /dev/null |
@@ -1,391 +0,0 @@ |
-# Copyright (c) 2008 The Chromium Authors. All rights reserved. |
-# Use of this source code is governed by a BSD-style license that can be |
-# found in the LICENSE file. |
- |
-import fnmatch |
-import os |
-import re |
-import shutil |
-import subprocess |
-import utils |
-import SCons.Node |
- |
-Import('env') |
- |
-env = env.Clone() |
- |
-if env['OS'] in ['win32', 'wince']: |
- env.Append(DATE = 'echo %DATE%.%TIME%') |
-else: |
- env.Append(DATE = 'date') |
- |
-def GetInputs(var): return utils.GetInputs(var, env) |
- |
-def Shell(cmd): |
- """Execute a shell command and return the output.""" |
- cmd[0] = env.Entry(cmd[0]).abspath |
- cmd = env.subst(cmd) |
- return subprocess.Popen( |
- cmd, shell=True, stdout=subprocess.PIPE).communicate()[0] |
- |
-if env['OS'] == 'win32': |
- def GGUIDGen(value): |
- """Generate a GGUID for the given value.""" |
- return Shell(['$GGUIDGEN', '$NAMESPACE_GUID', value + '-$VERSION']) |
- env.Replace( |
- GGUIDGEN = '#/$OPEN_DIR/tools/gguidgen.exe', |
- NAMESPACE_GUID = '36F65206-5D4E-4752-9D52-27708E10DA79', |
-# MSI version numbers must have the form <major>.<minor>.<build>. To meet this, |
-# we combine our build and patch version numbers like so: |
-# MSI_VERSION = <major>.<minor>.<BUILD * 100 + PATCH>. |
-# Note: This assumes that the BUILD and PATCH variables adhere to the range |
-# requirements in version.mk. See comments in version.mk for more details. |
- MSI_BUILD = eval(env.subst('$BUILD * 100 + $PATCH')), |
- MSI_VERSION = '${MAJOR}.${MINOR}.${MSI_BUILD}', |
- ) |
- |
- # Building wxiobjs with candle |
- env.Replace( |
- CANDLEDEFPREFIX = '-d', |
- CANDLEDEFSUFFIX = '', |
- _CANDLEDEFFLAGS = ('${_defines(CANDLEDEFPREFIX, CANDLEDEFINES, ' |
- 'CANDLEDEFSUFFIX, __env__)}'), |
- CANDLECOM = 'candle.exe -out $TARGET $SOURCE ${_CANDLEDEFFLAGS}', |
- ) |
- env.Append( |
-# Note: Since light.exe is run from $OPEN_DIR, candle.exe must generate |
-# output with paths relative to that dir. |
- SCONS_DIR = '..', # the scons dir relative to OPEN_DIR |
-# You can change the names of ProductId vars, but NEVER change their values! |
- CANDLEDEFINES = [ |
- ('OurWin32ProductId', |
- GGUIDGen('OUR_PRODUCT_ID')), |
- ('OurComponentGUID_FFComponentsDirFiles', |
- GGUIDGen('OUR_COMPONENT_GUID_FF_COMPONENTS_DIR_FILES')), |
- ('OurComponentGUID_FFContentDirFiles', |
- GGUIDGen('OUR_COMPONENT_GUID_FF_CONTENT_DIR_FILES')), |
- ('OurComponentGUID_FFDirFiles', |
- GGUIDGen('OUR_COMPONENT_GUID_FF_DIR_FILES')), |
- ('OurComponentGUID_FFLibDirFiles', |
- GGUIDGen('OUR_COMPONENT_GUID_FF_LIB_DIR_FILES')), |
- ('OurComponentGUID_FFRegistry', |
- GGUIDGen('OUR_COMPONENT_GUID_FF_REGISTRY')), |
- ('OurComponentGUID_IEFiles', |
- GGUIDGen('OUR_COMPONENT_GUID_IE_FILES')), |
- ('OurComponentGUID_IERegistry', |
- GGUIDGen('OUR_COMPONENT_GUID_IE_REGISTRY')), |
- ('OurComponentGUID_SharedFiles', |
- GGUIDGen('OUR_COMPONENT_GUID_SHARED_FILES')), |
- ('OurComponentGUID_SharedVersionedFiles', |
- GGUIDGen('OUR_COMPONENT_GUID_SHARED_VERSIONED_FILES')), |
- ('OurComponentGUID_SharedRegistry', |
- GGUIDGen('OUR_COMPONENT_GUID_SHARED_REGISTRY')), |
- ('OurNpapiProductId', |
- GGUIDGen('OUR_2ND_PRODUCT_ID')), |
- ('OurComponentGUID_NpapiFiles', |
- GGUIDGen('OUR_COMPONENT_GUID_NPAPI_FILES')), |
- ('OurComponentGUID_NpapiRegistry', |
- GGUIDGen('OUR_COMPONENT_GUID_NPAPI_REGISTRY')), |
- ('OurMsiVersion', '$MSI_VERSION'), |
- ('OurCommonPath', '$COMMON_OUTDIR'), |
- ('OurIEPath', '$IE_OUTDIR'), |
- ('OurIpcTestPath', '$COMMON_OUTDIR'), |
- ('OurFFPath', '$INSTALLER_OUTDIR/$INSTALLER_BASENAME'), |
- ('OurNpapiPath', '$NPAPI_OUTDIR'), |
- ] |
- ) |
- wix_langs = [re.sub('-', '_', lang) for lang in env['I18N_LANGS']] |
- env.Append( |
- CANDLEDEFINES = |
- [('OurComponentGUID_FFLang' + lang + 'DirFiles', |
- GGUIDGen('OUR_COMPONENT_GUID_FF_' + lang + '_DIR_FILES')) |
- for lang in wix_langs], |
- ) |
- |
-def SafeMkdir(dir): |
- """Like the builtin Mkdir, but doesn't fail if the dir exists.""" |
- def Func(target, source, env): |
- dir_subst = env.subst(dir, target=target) |
- if not os.path.exists(dir_subst): |
- os.makedirs(dir_subst) |
- return 0 |
- return Action(Func, 'SafeMkdir("' + dir + '")') |
- |
-def RecursiveDelete(pattern): |
- """Recursively deletes directories matching a pattern.""" |
- def Func(target, source, env): |
- # strip off '.dir' suffix |
- target_dir = env.subst('${TARGET.base}', target=target) |
- for root, dirs, files in os.walk(target_dir): |
- if fnmatch.fnmatch(os.path.normpath(root), pattern): |
- print 'Deleting', root |
- shutil.rmtree(root) |
- return 0 |
- return Action(Func, 'RecursiveDelete("' + pattern + '")') |
- |
-def ToUnixPath(path): |
- """Converts windows-style \ to unix-style /.""" |
- return re.sub(r'\\', r'/', path) |
- |
-def DirBuilder(env, dirtarget, dirsrcs): |
- """Builder that makes a directory tree by copying source files to |
- corresponding locations inside 'dirtarget'. 'dirsrcs' specifies the list of |
- mappings from source file/directory to the target location. It's formatted |
- like: |
- (<target file or dir>, <list of source files>) |
- |
- Note: source files that come from an output directory must be explicitly |
- specified relative to the toplevel dir '#'. |
- Note: as shorthand, if the target ends with a '/', then the sources will |
- be placed into that dir. Otherwise, source is renamed into the target. |
- """ |
- |
- srcs = [] |
- actions = [Delete('${TARGET.base}')] |
- for target, sources in dirsrcs: |
- target_is_dir = target.endswith('/') |
- if target_is_dir: |
- actions.append(SafeMkdir('${TARGET.base}/' + target)) |
- else: |
- actions.append(SafeMkdir('${TARGET.base}/' + os.path.dirname(target))) |
- for source in env.Flatten(sources): |
- source = env.subst(source, conv=lambda x:x) |
- srcs.append(source) |
- |
- # Special-case for Nodes and Node lists: use their absolute paths for |
- # the Copy() action, otherwise it will be relative to our variant dir |
- # (not what Copy expects). |
- if isinstance(source, list): source = source[0] |
- if isinstance(source, SCons.Node.Node): source = source.abspath |
- |
- # HACK: Compensate for the workaround below. We want the .dir file |
- # to be the dependency to the Command() builder, but we want to copy |
- # the actual directory - so strip the extension here. |
- if source.endswith('.dir'): |
- source = source[:-4] |
- |
- if target_is_dir: |
- actions.append( |
- Copy('${TARGET.base}/' + target + os.path.basename(source), |
- source)) |
- else: |
- actions.append(Copy('${TARGET.base}/' + target, source)) |
- |
- # Remove any .svn directories that were copied. |
- actions.append(RecursiveDelete('*/.svn')) |
- |
- # HACK: Workaround for bug in scons where directories aren't checked for |
- # dependency changes. Instead, we make a temp file the target, and ensure |
- # that that file changes everytime we execute these actions. |
- # See http://scons.tigris.org/issues/show_bug.cgi?id=2261 |
- actions += ['$DATE > ${TARGET}'] |
- return env.Command(env.subst(dirtarget) + '.dir', srcs, actions) |
-env.AddMethod(DirBuilder) |
- |
-def FirefoxInstaller(): |
- dirsrcs = [ |
- ('/', ['$FF3_OUTDIR/genfiles/install.rdf', |
- '$FF3_OUTDIR/genfiles/chrome.manifest']), |
- ('lib/', ['$OPEN_DIR/base/firefox/static_files/lib/updater.js']), |
- ('chrome/chromeFiles/content/', |
- GetInputs('$FF3_RESOURCES $COMMON_RESOURCES')), |
- ('chrome/chromeFiles/locale', ['$FF3_OUTDIR/genfiles/i18n']), |
- ('components/', |
- ['$FF3_MODULE_TYPELIB', |
- '$OPEN_DIR/base/firefox/static_files/components/bootstrap.js']), |
- ('components/${SHLIBPREFIX}gears${SHLIBSUFFIX}', ['$FF2_MODULE']), |
- ('components/${SHLIBPREFIX}gears_ff2${SHLIBSUFFIX}', ['$FF3_MODULE']), |
- ] |
- |
- if env['USING_CCTESTS']: |
- dirsrcs += [ |
- ('components/', ['$IPC_TEST_EXE']), |
- ] |
- if env['OS'] != 'win32': |
- # TODO(playmobil): Inspector should be located in extensions dir on win32. |
- dirsrcs += [ |
- ('resources/inspector', [env.Dir('#/$OPEN_DIR/inspector')]), |
- ('resources/inspector/common/', ['$OPEN_DIR/sdk/gears_init.js', |
- '$OPEN_DIR/sdk/samples/sample.js']), |
- ] |
- if env['MODE'] == 'dbg' and env['OS'] in ['win32', 'wince']: |
- dirsrcs += [ |
- ('components/gears_ff2.pdb', ['$FF2_MODULE_PDB']), |
- ('components/gears.pdb', ['$FF3_MODULE_PDB']), |
- ] |
- if env['OS'] == 'osx': |
- dirsrcs += [ |
- ('resources/', ['$OSX_LAUNCHURL_EXE']), |
- ] |
- |
- dir = env.DirBuilder('$INSTALLER_OUTDIR/$INSTALLER_BASENAME', dirsrcs) |
- actions = [ |
- # Mark files writeable to allow .xpi rebuilds |
- 'chmod -R 777 ${SOURCE.base}', |
- '(cd ${SOURCE.base} && zip -r ../${TARGET.file} .)' |
- ] |
- |
- return env.Command('$FF_XPI', dir, actions) |
-firefox_installer = FirefoxInstaller() |
- |
-def Win32Installer(): |
- wxiobj = env.Command( |
- '$COMMON_GENFILES_DIR/win32_msi.wxiobj', |
- '$COMMON_GENFILES_DIR/win32_msi.wxs', |
- '$CANDLECOM') |
- # TODO(mpcomplete): remove this if/when the notifier goes away. This |
- # creates fake targets to satisfy the installer build. |
- notifier = env.Command( |
- [ |
- '$COMMON_OUTDIR/notifier.exe', |
- '$COMMON_OUTDIR/notifier.dll', |
- '$COMMON_OUTDIR/notifier_test.exe' |
- ], [], |
- 'touch $TARGETS') |
- # light.exe must be run from $OPEN_DIR |
- msi = env.Command( |
- '$WIN32_INSTALLER_MSI', |
- [wxiobj, notifier, firefox_installer, '$IE_MODULE', '$NPAPI_MODULE'], |
- 'cd $OPEN_DIR && light.exe -out ${TARGET.abspath} ${SOURCES[0].abspath}') |
- return msi |
-win32_installer = Win32Installer() |
- |
-def WinCEInstaller(): |
- env['ToUnixPath'] = ToUnixPath |
- inf_outdir = ToUnixPath(env.subst('$IE_OUTDIR')) |
- inf = env.Command( |
- '$COMMON_GENFILES_DIR/wince_cab_fixed.inf', |
- '$COMMON_GENFILES_DIR/wince_cab_ie.inf', |
- 'sed -e "s#bin-....wince-arm.ie.#' + inf_outdir + '#g" $SOURCE > $TARGET') |
- cab = env.Command( |
- '$WINCE_INSTALLER_CAB', |
- [inf, '$IE_MODULE', '$IE_WINCE_SETUP_DLL'], |
- ['cabwiz ${ToUnixPath(str(SOURCE))} /compress' |
- ' /err ${SOURCES[0].base}.log', |
- Copy('$TARGET', '${SOURCE.base}.CAB')]) |
- return cab |
-wince_installer = WinCEInstaller() |
- |
-def SafariPluginBundle(): |
- """This is the actual gears plugin bundle for Safari.""" |
- dirsrcs = [ |
- ('Contents/', ['$SF_OUTDIR/genfiles/Info.plist']), |
- ('Contents/Resources/English.lproj/InfoPlist.strings', |
- ['$OPEN_DIR/tools/osx/English.lproj/InfoPlist.strings']), |
- ('Contents/Resources/', env.Glob('#/$OPEN_DIR/ui/safari/*.nib')), |
- ('Contents/Resources/', ['$CRASH_SENDER_EXE']), |
- ('Contents/Resources/', ['$OSX_CRASH_INSPECTOR_EXE']), |
- ('Contents/Resources/', ['$OSX_LAUNCHURL_EXE']), |
- ('Contents/MacOS/', ['$SF_MODULE']), |
- ] |
- |
- if env['USING_CCTESTS']: |
- dirsrcs += [ |
- ('Contents/Resources/', ['$IPC_TEST_EXE']), |
- ] |
- |
- return env.DirBuilder('$SF_PLUGIN_BUNDLE', dirsrcs) |
-safari_plugin_bundle = SafariPluginBundle() |
- |
-def SafariPluginProxyBundle(): |
- """This is a proxy plugin which simply loads gears into Safari and keeps |
- it in memory. It exists so that gears doesn't unload when Safari wants us |
- to, since that causes crashes.""" |
- dirsrcs = [ |
- ('Contents/', ['$SF_OUTDIR/genfiles/Info.plist']), |
- ('Contents/MacOS/${SHLIBPREFIX}gears${SHLIBSUFFIX}', ['$SF_PROXY_DLL']), |
- ('Contents/Resources/', [safari_plugin_bundle]), |
- ('Contents/Resources/', ['$OPEN_DIR/tools/osx/uninstall.command']), |
- ] |
- |
- return env.DirBuilder('$SF_PLUGIN_PROXY_BUNDLE', dirsrcs) |
-safari_plugin_proxy_bundle = SafariPluginProxyBundle() |
- |
-def SafariInstallerPluginBundle(): |
- dirsrcs = [ |
- ('Contents/Info.plist', |
- ['$OPEN_DIR/base/safari/advanced_stats_sheet.plist']), |
- ('Contents/MacOS/InstallerPlugin', ['$SF_INSTALLER_PLUGIN_EXE']), |
- ('Contents/Resources/AdvancedStatsSheet.nib', |
- [env.Dir('#/$OPEN_DIR/base/safari/advanced_stats_sheet.nib')]), |
- ] |
- |
- return env.DirBuilder('$SF_INSTALLER_PLUGIN_BUNDLE', dirsrcs) |
-safari_installer_plugin_bundle = SafariInstallerPluginBundle() |
- |
-def SafariInputManagerBundle(): |
- info = env.Command('$SF_OUTDIR/genfiles/Enabler-Info.plist', |
- '$OPEN_DIR/tools/osx/Enabler-Info.plist', |
- 'cat $SOURCE |' |
- 'sed \'s/$${EXECUTABLE_NAME}/GearsEnabler/\' |' |
- 'sed \'s/$${PRODUCT_NAME}/GearsEnabler/\' > $TARGET') |
- dirsrcs = [ |
- ('GearsEnabler.bundle/Contents/Info.plist', [info]), |
- ('GearsEnabler.bundle/Contents/MacOS/', ['$SF_INPUTMANAGER_EXE']), |
- ('GearsEnabler.bundle/Contents/Resources/English.lproj/', |
- ['$OPEN_DIR/tools/osx/English.lproj/InfoPlist.strings']), |
- ('Info', ['$OPEN_DIR/tools/osx/Info']), |
- ] |
- |
- return env.DirBuilder('$SF_INPUTMANAGER_BUNDLE', dirsrcs) |
-safari_input_manager_bundle = SafariInputManagerBundle() |
- |
-def SafariInstallerPackage(): |
- pkg = env.Iceberg(env.Dir('${SF_INSTALLER_PKG}'), |
- [ |
- '$SF_OUTDIR/genfiles/installer.packproj', |
- safari_plugin_proxy_bundle, |
- safari_input_manager_bundle, |
- ]) |
- return pkg |
-safari_installer_package = SafariInstallerPackage() |
- |
-def SafariKeystoneInstaller(): |
- if not os.path.exists(env.Dir('#/$PRIVATE_DIR').abspath): |
- print 'Skipping Safari Keystone installer. Required sources are not public.' |
- return [] |
- |
- env.Append(CREATE_DISK_IMAGE = |
- "/usr/bin/hdiutil create -ov -imagekey zlib-level=9 -fs HFS+" |
- " -format UDZO -volname '$FRIENDLY_NAME ${VERSION}'" |
- " -srcfolder '${INSTALLER_OUTDIR}/Safari/dmg/' -scrub" |
- " -nocrossdev '${SF_KEYSTONE_INSTALLER_DMG}'" |
- ) |
- |
- pkg = env.Iceberg(env.Dir('${SF_KEYSTONE_INSTALLER_MPKG}'), |
- ['$SF_OUTDIR/genfiles/keystone_installer.packproj']) |
- env.Depends(pkg, GetInputs('$SF_M4S')) |
- env.Depends(pkg, safari_installer_package) |
- |
- dirsrcs = [ |
- ('/', [pkg]), |
- ('/.keystone_install', |
- ['$PRIVATE_DIR/tools/osx/installer/keystone_install']), |
- ] |
- dmg = env.DirBuilder('$INSTALLER_OUTDIR/Safari/dmg', dirsrcs) |
- env.AddPostAction(dmg, 'chmod +x ${TARGET.base}/.keystone_install') |
- # hdiutil is crashy under leopard, so try twice. |
- env.AddPostAction(dmg, '$CREATE_DISK_IMAGE || $CREATE_DISK_IMAGE') |
- |
- return dmg |
-safari_keystone_installer = SafariKeystoneInstaller() |
- |
-installers = [] |
-if 'FF3' in env['VALID_BROWSERS']: |
- installers += firefox_installer |
-if 'SF' in env['VALID_BROWSERS']: |
- installers += [ |
- safari_input_manager_bundle, |
- safari_plugin_bundle, |
- safari_plugin_proxy_bundle, |
- safari_installer_plugin_bundle, |
- safari_installer_package, |
- safari_input_manager_bundle, |
- safari_keystone_installer, |
- ] |
-if env['OS'] == 'win32': |
- installers += win32_installer |
-if env['OS'] == 'wince': |
- installers += wince_installer |
- |
-env.Alias('gears-installers', installers) |