| @echo off |
| rem = """ |
| :: Copyright 2012 Google Inc. |
| :: |
| :: Licensed under the Apache License, Version 2.0 (the "License"); |
| :: you may not use this file except in compliance with the License. |
| :: You may obtain a copy of the License at |
| :: |
| :: http://www.apache.org/licenses/LICENSE-2.0 |
| :: |
| :: Unless required by applicable law or agreed to in writing, software |
| :: distributed under the License is distributed on an "AS IS" BASIS, |
| :: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| :: See the License for the specific language governing permissions and |
| :: limitations under the License. |
| :: Make sure the tools directory is in our python path. |
| set PYTHONPATH=%~p0tools |
| "%~p0..\third_party\python_26\python.exe" -x "%~f0" %* |
| goto endofPython """ |
| '''This scripts builds the current version in debug and release, then |
| copies the produced installers to sawbuck-<version>-{debug|release}.msi |
| for easy archiving. |
| ''' |
| #!python |
| import os.path |
| import shutil |
| import sys |
| import win32com.client |
| from template_replace import ReadKeyFile |
| |
| |
| _SCRIPT_DIR = os.path.dirname(__file__) |
| _SAWBUCK_SOLUTION = os.path.join(_SCRIPT_DIR, 'sawbuck.sln') |
| _INSTALLER_PROJECT = os.path.join(_SCRIPT_DIR, 'installer/sawbuck.vcproj') |
| _VERSION_FILE = os.path.join(_SCRIPT_DIR, 'VERSION') |
| |
| |
| def BuildProjectConfig(builder, config, project): |
| '''Builds a given project in a given configuration, exits on error. |
| |
| Args: |
| builder: a Visual Studio SolutionBuild object. |
| config: the name of the configuration to build, f.ex. "Release". |
| project: the path of a solution to build, relative to the builder's |
| solution directory. |
| ''' |
| print 'Building project "%s" in "%s" configuration' % (project, config) |
| project = os.path.normpath(project) |
| builder.BuildProject(config, project, True) |
| errors = builder.LastBuildInfo |
| |
| if errors != 0: |
| print '%d errors while building config %s.' % (errors, config) |
| sys.exit(errors) |
| |
| |
| def Main(): |
| '''Builds the sawbuck installer in Debug and Release, and copies |
| the resultant installers to the Sawbuck solution directory. |
| ''' |
| v = {} |
| ReadKeyFile(_VERSION_FILE, v) |
| version = map(int, (v['MAJOR'], v['MINOR'], v['BUILD'], v['PATCH'])) |
| print "Building version %d.%d.%d.%d" % tuple(version) |
| |
| solution = win32com.client.GetObject(_SAWBUCK_SOLUTION) |
| builder = solution.SolutionBuild |
| |
| BuildProjectConfig(builder, 'Debug', _INSTALLER_PROJECT) |
| BuildProjectConfig(builder, 'Release', _INSTALLER_PROJECT) |
| |
| basename = 'sawbuck-%d.%d.%d.%d' % tuple(version) |
| shutil.copyfile(os.path.join(_SCRIPT_DIR, '../build/Debug/sawbuck.msi'), |
| os.path.join(_SCRIPT_DIR, '%s-debug.msi' % basename)) |
| shutil.copyfile(os.path.join(_SCRIPT_DIR, '../build/Release/sawbuck.msi'), |
| os.path.join(_SCRIPT_DIR, '%s-release.msi' % basename)) |
| |
| |
| if __name__ == "__main__": |
| sys.exit(Main()) |
| |
| rem = """ |
| :endofPython """ |