# @file build_win32_appConfig.py # @brief Create the windows app.config file to redirect crt linkage. # # $LicenseInfo:firstyear=2009&license=viewergpl$ # # Copyright (c) 2009, Linden Research, Inc. # # Second Life Viewer Source Code # The source code in this file ("Source Code") is provided by Linden Lab # to you under the terms of the GNU General Public License, version 2.0 # ("GPL"), unless you have obtained a separate licensing agreement # ("Other License"), formally executed by you and Linden Lab. Terms of # the GPL can be found in doc/GPL-license.txt in this distribution, or # online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 # # There are special exceptions to the terms and conditions of the GPL as # it is applied to this Source Code. View the full text of the exception # in the file doc/FLOSS-exception.txt in this software distribution, or # online at # http://secondlifegrid.net/programs/open_source/licensing/flossexception # # By copying, modifying or distributing this software, you acknowledge # that you have read and understood your obligations described above, # and agree to abide by those obligations. # # ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO # WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, # COMPLETENESS OR PERFORMANCE. # $/LicenseInfo$ import sys, os, re from xml.dom.minidom import parse def munge_binding_redirect_version(src_manifest_name, src_config_name, dst_config_name): manifest_dom = parse(src_manifest_name) node = manifest_dom.getElementsByTagName('assemblyIdentity')[0] manifest_assm_ver = node.getAttribute('version') config_dom = parse(src_config_name) node = config_dom.getElementsByTagName('bindingRedirect')[0] node.setAttribute('newVersion', manifest_assm_ver) src_old_ver = re.match('([^-]*-).*', node.getAttribute('oldVersion')).group(1) node.setAttribute('oldVersion', src_old_ver + manifest_assm_ver) comment = config_dom.createComment("This file is automatically generated by the build. see indra/newview/build_win32_appConfig.py") config_dom.insertBefore(comment, config_dom.childNodes[0]) print "Writing: " + dst_config_name f = open(dst_config_name, 'w') config_dom.writexml(f) f.close() def main(): config = sys.argv[1] src_dir = sys.argv[2] dst_dir = sys.argv[3] dst_name = sys.argv[4] if config.lower() == 'debug': src_manifest_name = dst_dir + '/Microsoft.VC80.DebugCRT.manifest' src_config_name = src_dir + '/SecondLifeDebug.exe.config' else: src_manifest_name = dst_dir + '/Microsoft.VC80.CRT.manifest' src_config_name = src_dir + '/SecondLife.exe.config' dst_config_name = dst_dir + '/' + dst_name munge_binding_redirect_version(src_manifest_name, src_config_name, dst_config_name) return 0 if __name__ == "__main__": main()