Index: visual_studio/NativeClientVSAddIn/InstallerResources/create_ppapi_platform.py |
diff --git a/visual_studio/NativeClientVSAddIn/InstallerResources/create_ppapi_platform.py b/visual_studio/NativeClientVSAddIn/InstallerResources/create_ppapi_platform.py |
index bee321d5586e98acb6cb132fb6ce07b7befb46ef..c6c045463054d80c882e725897763b8eb16dc3fe 100644 |
--- a/visual_studio/NativeClientVSAddIn/InstallerResources/create_ppapi_platform.py |
+++ b/visual_studio/NativeClientVSAddIn/InstallerResources/create_ppapi_platform.py |
@@ -1,206 +1,206 @@ |
-#!/usr/bin/env python |
-# Copyright (c) 2012 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. |
- |
-""" This script creates the PPAPI project settings template. |
- |
-For copyright reasons, we should not directly distribute the PPAPI template |
-because it is nearly a clone of the Win32 template which is Copyrighted. |
-Instead, this script copies the existing Win32 template from the user's system |
-and intelligently modifies the copy to be the PPAPI template. |
-""" |
- |
-import os |
-import optparse |
-import shutil |
-import string |
-import xml_patch |
-import third_party.etree.ElementTree as ElementTree |
- |
- |
-PEPPER_PLATFORM_NAME = 'PPAPI' |
- |
-DEFAULT_MS_BUILD_DIRECTORY = os.path.expandvars('%ProgramFiles(x86)%\\MSBuild') |
- |
-SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__)) |
- |
-PLATFORM_FILES = [ |
- ('Microsoft.Cpp.Win32.default.props', |
- 'Microsoft.Cpp.[platform].default.props.patch', |
- 'Microsoft.Cpp.PPAPI.default.props'), |
- ('Microsoft.Cpp.Win32.props', |
- 'Microsoft.Cpp.[platform].props.patch', |
- 'Microsoft.Cpp.PPAPI.props'), |
- ('Microsoft.Cpp.Win32.targets', |
- 'Microsoft.Cpp.[platform].targets.patch', |
- 'Microsoft.Cpp.PPAPI.targets'), |
- ('PlatformToolsets\\v100\\Microsoft.Cpp.Win32.v100.props', |
- 'PlatformToolsets\\v100\\Microsoft.Cpp.[platform].v100.props.patch', |
- 'PlatformToolsets\\v100\\Microsoft.Cpp.PPAPI.v100.props'), |
- ('PlatformToolsets\\v100\\Microsoft.Cpp.Win32.v100.targets', |
- 'PlatformToolsets\\v100\\Microsoft.Cpp.[platform].v100.targets.patch', |
- 'PlatformToolsets\\v100\\Microsoft.Cpp.PPAPI.v100.targets')] |
- |
-UI_FILES = [ |
- ('general.xml', |
- 'Props\\ppapi_general.xml.patch', |
- 'Props\\ppapi_general.xml'), |
- ('general_ps.xml', |
- 'Props\\ppapi_general_ps.xml.patch', |
- 'Props\\ppapi_general_ps.xml')] |
- |
-COPY_FILES = [ |
- 'ImportAfter\\PPAPI.override.props'] |
- |
- |
-def PrependCopyright(source_file_name, dest_file_name): |
- """Adds the copyright notice from source file to the dest file. |
- |
- Since the patch_xml function does not read comments, the copyright is skipped |
- during the initial copy. This function adds it back and also attaches a |
- notice that the file was based on source_file_name and slightly modified. |
- |
- Args: |
- source_file_name: The original Win32 file. |
- dest_file_name: The existing PPAPI file. |
- |
- Returns: |
- None. |
- """ |
- with open(source_file_name, 'r') as source_file: |
- in_copyright = False |
- copyright_notice = '' |
- for line in source_file: |
- if '<!--' in line: |
- in_copyright = True |
- if in_copyright: |
- copyright_notice += line |
- if '-->' in line: |
- in_copyright = False |
- break |
- |
- with open(dest_file_name, 'r') as original: |
- xml_data = original.read() |
- |
- chrome_notice = ('<!-- This file has been copied and modified from %s during ' |
- 'the installation process. -->\n\n' % (source_file_name)) |
- |
- with open(dest_file_name, 'w') as changed: |
- changed.writelines(copyright_notice + chrome_notice + xml_data) |
- |
- |
-def CreateTemplateFile(source, patch, dest): |
- """Creates a single PPAPI template file. |
- |
- Args: |
- source: The path source file to create from. |
- patch: The path to the patch file to apply. |
- dest: The path to the file to create. |
- Returns: |
- None. |
- """ |
- source_xml = ElementTree.parse(source) |
- patch_xml = ElementTree.parse(patch) |
- modified_xml = xml_patch.PatchXML(source_xml, patch_xml) |
- |
- if not os.path.exists(os.path.dirname(dest)): |
- os.makedirs(os.path.dirname(dest)) |
- |
- FixAttributesNamespace(modified_xml) |
- default_namespace = GetDefaultNamespace(modified_xml) |
- modified_xml.write(dest, default_namespace=default_namespace) |
- PrependCopyright(source, dest) |
- |
- |
-def GetDefaultNamespace(tree): |
- # Returns the uri (namespace identifier) of the root element. |
- tag = tree.getroot().tag |
- if tag.startswith("{"): |
- uri, rest = tag[1:].rsplit("}", 1) |
- return uri |
- else: |
- return None |
- |
- |
-def FixAttributesNamespace(tree): |
- # ElementTree's implementation seems to be broken in that attributes |
- # do not inherit the default namespace of their node or parent nodes. |
- # This causes issues with ElementTree.write() when using a default namespace. |
- # Since the attributes do not have a namespace, the code that collects a |
- # mapping between local names and qualified names (with a namespace) breaks. |
- # The work-around is to give all attributes the default namespace. |
- default_namespace = GetDefaultNamespace(tree) |
- for elem in tree.getroot().getiterator(): |
- new_attrib = dict() |
- for key, value in elem.attrib.items(): |
- # If the attribute does not have a namespace yet then give it one. |
- if key[:1] != "{": |
- new_key = "{%s}%s" % (default_namespace, key) |
- new_attrib[new_key] = value |
- else: |
- new_attrib[key] = value |
- elem.attrib = new_attrib |
- |
- |
-def CreatePPAPI(msbuild_dir): |
- """Creates the PPAPI template. |
- |
- Args: |
- msbuild_dir: The path to the MSBuild installation. |
- |
- Returns: |
- Nothing. |
- |
- Raises: |
- Exception indicating Win32 platform was not found. |
- """ |
- if not os.path.exists(msbuild_dir): |
- raise Exception('MSBuild directory was not found!') |
- |
- install_dir = os.path.join(msbuild_dir, 'Microsoft.Cpp\\v4.0\\Platforms') |
- |
- # Note 1033 is code for the english language. |
- ui_xml_dir = os.path.join(msbuild_dir, 'Microsoft.Cpp\\v4.0\\1033') |
- |
- win32_dir = os.path.join(install_dir, 'Win32') |
- ppapi_dir = os.path.join(install_dir, PEPPER_PLATFORM_NAME) |
- patch_dir = os.path.join(SCRIPT_DIR, 'PPAPI_Patch') |
- |
- if not os.path.exists(win32_dir): |
- raise Exception('Win32 platform is not installed on this machine!') |
- |
- for template_creation in PLATFORM_FILES: |
- CreateTemplateFile( |
- os.path.join(win32_dir, template_creation[0]), |
- os.path.join(patch_dir, template_creation[1]), |
- os.path.join(ppapi_dir, template_creation[2])) |
- |
- for template_creation in UI_FILES: |
- CreateTemplateFile( |
- os.path.join(ui_xml_dir, template_creation[0]), |
- os.path.join(patch_dir, template_creation[1]), |
- os.path.join(ppapi_dir, template_creation[2])) |
- |
- for file_name in COPY_FILES: |
- copy_from = os.path.join(patch_dir, file_name) |
- copy_to = os.path.join(ppapi_dir, file_name) |
- if not os.path.exists(os.path.dirname(copy_to)): |
- os.makedirs(os.path.dirname(copy_to)) |
- shutil.copyfile(copy_from, copy_to) |
- |
- shutil.copyfile( |
- os.path.join(win32_dir, 'Microsoft.Build.CPPTasks.Win32.dll'), |
- os.path.join(ppapi_dir, 'Microsoft.Build.CPPTasks.PPAPI.dll')) |
- |
- |
-def main(): |
- parser = optparse.OptionParser(usage='Usage: %prog [options]') |
- parser.add_option('-b', '--msbuild-path', dest='msbuild_path', |
- default=DEFAULT_MS_BUILD_DIRECTORY, |
- help='Provide the path to the MSBuild directory', metavar='PATH') |
- (options, args) = parser.parse_args() |
- CreatePPAPI(options.msbuild_path) |
- |
-if __name__ == '__main__': |
- main() |
+#!/usr/bin/env python |
+# Copyright (c) 2012 The Native Client Authors. All rights reserved. |
noelallen1
2012/09/19 19:47:25
This should stay as Chromium I would think.
|
+# Use of this source code is governed by a BSD-style license that can be |
+# found in the LICENSE file. |
+ |
+""" This script creates the PPAPI project settings template. |
+ |
+For copyright reasons, we should not directly distribute the PPAPI template |
+because it is nearly a clone of the Win32 template which is Copyrighted. |
+Instead, this script copies the existing Win32 template from the user's system |
+and intelligently modifies the copy to be the PPAPI template. |
+""" |
+ |
+import os |
+import optparse |
+import shutil |
+import string |
+import xml_patch |
+import third_party.etree.ElementTree as ElementTree |
+ |
+ |
+PEPPER_PLATFORM_NAME = 'PPAPI' |
+ |
+DEFAULT_MS_BUILD_DIRECTORY = os.path.expandvars('%ProgramFiles(x86)%\\MSBuild') |
+ |
+SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__)) |
+ |
+PLATFORM_FILES = [ |
+ ('Microsoft.Cpp.Win32.default.props', |
+ 'Microsoft.Cpp.[platform].default.props.patch', |
+ 'Microsoft.Cpp.PPAPI.default.props'), |
+ ('Microsoft.Cpp.Win32.props', |
+ 'Microsoft.Cpp.[platform].props.patch', |
+ 'Microsoft.Cpp.PPAPI.props'), |
+ ('Microsoft.Cpp.Win32.targets', |
+ 'Microsoft.Cpp.[platform].targets.patch', |
+ 'Microsoft.Cpp.PPAPI.targets'), |
+ ('PlatformToolsets\\v100\\Microsoft.Cpp.Win32.v100.props', |
+ 'PlatformToolsets\\v100\\Microsoft.Cpp.[platform].v100.props.patch', |
+ 'PlatformToolsets\\v100\\Microsoft.Cpp.PPAPI.v100.props'), |
+ ('PlatformToolsets\\v100\\Microsoft.Cpp.Win32.v100.targets', |
+ 'PlatformToolsets\\v100\\Microsoft.Cpp.[platform].v100.targets.patch', |
+ 'PlatformToolsets\\v100\\Microsoft.Cpp.PPAPI.v100.targets')] |
+ |
+UI_FILES = [ |
+ ('general.xml', |
+ 'Props\\ppapi_general.xml.patch', |
+ 'Props\\ppapi_general.xml'), |
+ ('general_ps.xml', |
+ 'Props\\ppapi_general_ps.xml.patch', |
+ 'Props\\ppapi_general_ps.xml')] |
+ |
+COPY_FILES = [ |
+ 'ImportAfter\\PPAPI.override.props'] |
+ |
+ |
+def PrependCopyright(source_file_name, dest_file_name): |
+ """Adds the copyright notice from source file to the dest file. |
+ |
+ Since the patch_xml function does not read comments, the copyright is skipped |
+ during the initial copy. This function adds it back and also attaches a |
+ notice that the file was based on source_file_name and slightly modified. |
+ |
+ Args: |
+ source_file_name: The original Win32 file. |
+ dest_file_name: The existing PPAPI file. |
+ |
+ Returns: |
+ None. |
+ """ |
+ with open(source_file_name, 'r') as source_file: |
+ in_copyright = False |
+ copyright_notice = '' |
+ for line in source_file: |
+ if '<!--' in line: |
+ in_copyright = True |
+ if in_copyright: |
+ copyright_notice += line |
+ if '-->' in line: |
+ in_copyright = False |
+ break |
+ |
+ with open(dest_file_name, 'r') as original: |
+ xml_data = original.read() |
+ |
+ chrome_notice = ('<!-- This file has been copied and modified from %s during ' |
+ 'the installation process. -->\n\n' % (source_file_name)) |
+ |
+ with open(dest_file_name, 'w') as changed: |
+ changed.writelines(copyright_notice + chrome_notice + xml_data) |
+ |
+ |
+def CreateTemplateFile(source, patch, dest): |
+ """Creates a single PPAPI template file. |
+ |
+ Args: |
+ source: The path source file to create from. |
+ patch: The path to the patch file to apply. |
+ dest: The path to the file to create. |
+ Returns: |
+ None. |
+ """ |
+ source_xml = ElementTree.parse(source) |
+ patch_xml = ElementTree.parse(patch) |
+ modified_xml = xml_patch.PatchXML(source_xml, patch_xml) |
+ |
+ if not os.path.exists(os.path.dirname(dest)): |
+ os.makedirs(os.path.dirname(dest)) |
+ |
+ FixAttributesNamespace(modified_xml) |
+ default_namespace = GetDefaultNamespace(modified_xml) |
+ modified_xml.write(dest, default_namespace=default_namespace) |
+ PrependCopyright(source, dest) |
+ |
+ |
+def GetDefaultNamespace(tree): |
+ # Returns the uri (namespace identifier) of the root element. |
+ tag = tree.getroot().tag |
+ if tag.startswith("{"): |
+ uri, rest = tag[1:].rsplit("}", 1) |
+ return uri |
+ else: |
+ return None |
+ |
+ |
+def FixAttributesNamespace(tree): |
+ # ElementTree's implementation seems to be broken in that attributes |
+ # do not inherit the default namespace of their node or parent nodes. |
+ # This causes issues with ElementTree.write() when using a default namespace. |
+ # Since the attributes do not have a namespace, the code that collects a |
+ # mapping between local names and qualified names (with a namespace) breaks. |
+ # The work-around is to give all attributes the default namespace. |
+ default_namespace = GetDefaultNamespace(tree) |
+ for elem in tree.getroot().getiterator(): |
+ new_attrib = dict() |
+ for key, value in elem.attrib.items(): |
+ # If the attribute does not have a namespace yet then give it one. |
+ if key[:1] != "{": |
+ new_key = "{%s}%s" % (default_namespace, key) |
+ new_attrib[new_key] = value |
+ else: |
+ new_attrib[key] = value |
+ elem.attrib = new_attrib |
+ |
+ |
+def CreatePPAPI(msbuild_dir): |
+ """Creates the PPAPI template. |
+ |
+ Args: |
+ msbuild_dir: The path to the MSBuild installation. |
+ |
+ Returns: |
+ Nothing. |
+ |
+ Raises: |
+ Exception indicating Win32 platform was not found. |
+ """ |
+ if not os.path.exists(msbuild_dir): |
+ raise Exception('MSBuild directory was not found!') |
+ |
+ install_dir = os.path.join(msbuild_dir, 'Microsoft.Cpp\\v4.0\\Platforms') |
+ |
+ # Note 1033 is code for the english language. |
+ ui_xml_dir = os.path.join(msbuild_dir, 'Microsoft.Cpp\\v4.0\\1033') |
+ |
+ win32_dir = os.path.join(install_dir, 'Win32') |
+ ppapi_dir = os.path.join(install_dir, PEPPER_PLATFORM_NAME) |
+ patch_dir = os.path.join(SCRIPT_DIR, 'PPAPI_Patch') |
+ |
+ if not os.path.exists(win32_dir): |
+ raise Exception('Win32 platform is not installed on this machine!') |
+ |
+ for template_creation in PLATFORM_FILES: |
+ CreateTemplateFile( |
+ os.path.join(win32_dir, template_creation[0]), |
+ os.path.join(patch_dir, template_creation[1]), |
+ os.path.join(ppapi_dir, template_creation[2])) |
+ |
+ for template_creation in UI_FILES: |
+ CreateTemplateFile( |
+ os.path.join(ui_xml_dir, template_creation[0]), |
+ os.path.join(patch_dir, template_creation[1]), |
+ os.path.join(ppapi_dir, template_creation[2])) |
+ |
+ for file_name in COPY_FILES: |
+ copy_from = os.path.join(patch_dir, file_name) |
+ copy_to = os.path.join(ppapi_dir, file_name) |
+ if not os.path.exists(os.path.dirname(copy_to)): |
+ os.makedirs(os.path.dirname(copy_to)) |
+ shutil.copyfile(copy_from, copy_to) |
+ |
+ shutil.copyfile( |
+ os.path.join(win32_dir, 'Microsoft.Build.CPPTasks.Win32.dll'), |
+ os.path.join(ppapi_dir, 'Microsoft.Build.CPPTasks.PPAPI.dll')) |
+ |
+ |
+def main(): |
+ parser = optparse.OptionParser(usage='Usage: %prog [options]') |
+ parser.add_option('-b', '--msbuild-path', dest='msbuild_path', |
+ default=DEFAULT_MS_BUILD_DIRECTORY, |
+ help='Provide the path to the MSBuild directory', metavar='PATH') |
+ (options, args) = parser.parse_args() |
+ CreatePPAPI(options.msbuild_path) |
+ |
+if __name__ == '__main__': |
+ main() |