Chromium Code Reviews| Index: visual_studio/NativeClientVSAddIn/create_package.py |
| diff --git a/visual_studio/NativeClientVSAddIn/create_package.py b/visual_studio/NativeClientVSAddIn/create_package.py |
| index da135b89a85fabb24c3fdb19aedcba9fe884c605..51b859969631c60ed1ae73d02fdbc825f6d5eb93 100644 |
| --- a/visual_studio/NativeClientVSAddIn/create_package.py |
| +++ b/visual_studio/NativeClientVSAddIn/create_package.py |
| @@ -1,124 +1,124 @@ |
| -#!/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. |
| - |
| -"""Takes the output of the build step and zips the distributable package. |
| - |
| -This script assumes the build script has been run to compile the add-in. |
| -It zips up all files required for the add-in installation and places the |
| -result in out/NativeClientVSAddin.zip |
| -""" |
| - |
| -import os |
| -import re |
| -import fileinput |
| -import win32api |
| -import shutil |
| -import zipfile |
| - |
| -SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__)) |
| - |
| -# Root output directory. |
| -BUILD_OUTPUT_DIRECTORY = os.path.join( |
| - SCRIPT_DIR, |
| - "../../out/NativeClientVSAddIn") |
| - |
| -# Directory that contains the build assemblies. |
| -ASSEMBLY_DIRECTORY = os.path.join(BUILD_OUTPUT_DIRECTORY, "Debug") |
| - |
| -# Directory containing static installer resources. |
| -RESOURCE_DIRECTORY = os.path.join(SCRIPT_DIR, "InstallerResources") |
| - |
| -# Base name of the final zip file. |
| -OUTPUT_NAME = os.path.join(BUILD_OUTPUT_DIRECTORY, "NativeClientVSAddIn.zip") |
| - |
| -# AddIn metadata file path. We will modify this with the version #. |
| -ADDIN_METADATA = os.path.join(RESOURCE_DIRECTORY, "NativeClientVSAddIn.AddIn") |
| - |
| -# AddIn dll file path. We will obtain our add-in version from this. |
| -ADDIN_ASSEMBLY = os.path.join(ASSEMBLY_DIRECTORY, "NativeClientVSAddIn.dll") |
| - |
| -# Regex list to exclude from the zip. If a file path matches any of the |
| -# expressions during a call to AddFolderToZip it is excluded from the zip file. |
| -EXCLUDES = [ |
| - '.*\.svn.*', # Exclude .svn directories. |
| - # Exclude .AddIn file for now since we need to modify it with version info. |
| - re.escape(ADDIN_METADATA)] |
| - |
| -# List of source/destination pairs to include in zip file. |
| -FILE_LIST = [ |
| - (ADDIN_ASSEMBLY, ''), |
| - (os.path.join(ASSEMBLY_DIRECTORY, "NaCl.Build.CPPTasks.dll"), 'NaCl')] |
| - |
| - |
| -def AddFolderToZip(path, zip_file): |
| - """Adds an entire folder and sub folders to an open zipfile object. |
| - |
| - The zip_file must already be open and it is not closed by this function. |
| - |
| - Args: |
| - path: Folder to add. |
| - zipfile: Already open zip file. |
| - |
| - Returns: |
| - Nothing. |
| - """ |
| - # Ensure the path ends in trailing slash. |
| - path = path.rstrip("/\\") + "\\" |
| - for dir_path, dir_names, files in os.walk(path): |
| - for file in files: |
| - read_path = os.path.join(dir_path, file) |
| - |
| - # If the file path matches an exclude, don't include it. |
| - if any(re.search(expr, read_path) is not None for expr in EXCLUDES): |
| - continue |
| - |
| - zip_based_dir = dir_path[len(path):] |
| - write_path = os.path.join(zip_based_dir, file) |
| - zip_file.write(read_path, write_path, zipfile.ZIP_DEFLATED) |
| - |
| - |
| -def AddVersionModifiedAddinFile(zip_file): |
| - """Modifies the .AddIn file with the build version and adds to the zip. |
| - |
| - The version number is obtained from the NativeClientAddIn.dll assembly which |
| - is built during the build process. |
| - |
| - Args: |
| - zip_file: Already open zip file. |
| - """ |
| - info = win32api.GetFileVersionInfo(ADDIN_ASSEMBLY, "\\") |
| - ms = info['FileVersionMS'] |
| - ls = info['FileVersionLS'] |
| - version = "[%i.%i.%i.%i]" % ( |
| - win32api.HIWORD(ms), win32api.LOWORD(ms), |
| - win32api.HIWORD(ls), win32api.LOWORD(ls)) |
| - print "\nNaCl VS Add-in Build version: %s\n" % (version) |
| - |
| - metadata_filename = os.path.basename(ADDIN_METADATA) |
| - modified_file = os.path.join(ASSEMBLY_DIRECTORY, metadata_filename) |
| - |
| - # Copy the metadata file to new location and modify the version info. |
| - with open(ADDIN_METADATA, 'r') as source_file: |
| - with open(modified_file, 'w') as dest_file: |
| - for line in source_file: |
| - dest_file.write(line.replace("[REPLACE_ADDIN_VERSION]", version)) |
| - |
| - zip_file.write(modified_file, metadata_filename, zipfile.ZIP_DEFLATED) |
| - |
| - |
| -def main(): |
| - # Zip the package. |
| - out_file = zipfile.ZipFile(OUTPUT_NAME, 'w') |
| - for source_dest in FILE_LIST: |
| - file_name = os.path.basename(source_dest[0]) |
| - dest = os.path.join(source_dest[1], file_name) |
| - out_file.write(source_dest[0], dest, zipfile.ZIP_DEFLATED) |
| - AddFolderToZip(RESOURCE_DIRECTORY, out_file) |
| - AddVersionModifiedAddinFile(out_file) |
| - out_file.close() |
| - |
| - |
| -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
same
|
| +# Use of this source code is governed by a BSD-style license that can be |
| +# found in the LICENSE file. |
| + |
| +"""Takes the output of the build step and zips the distributable package. |
| + |
| +This script assumes the build script has been run to compile the add-in. |
| +It zips up all files required for the add-in installation and places the |
| +result in out/NativeClientVSAddin.zip |
| +""" |
| + |
| +import os |
| +import re |
| +import fileinput |
| +import win32api |
| +import shutil |
| +import zipfile |
| + |
| +SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__)) |
| + |
| +# Root output directory. |
| +BUILD_OUTPUT_DIRECTORY = os.path.join( |
| + SCRIPT_DIR, |
| + "../../out/NativeClientVSAddIn") |
| + |
| +# Directory that contains the build assemblies. |
| +ASSEMBLY_DIRECTORY = os.path.join(BUILD_OUTPUT_DIRECTORY, "Debug") |
| + |
| +# Directory containing static installer resources. |
| +RESOURCE_DIRECTORY = os.path.join(SCRIPT_DIR, "InstallerResources") |
| + |
| +# Base name of the final zip file. |
| +OUTPUT_NAME = os.path.join(BUILD_OUTPUT_DIRECTORY, "NativeClientVSAddIn.zip") |
| + |
| +# AddIn metadata file path. We will modify this with the version #. |
| +ADDIN_METADATA = os.path.join(RESOURCE_DIRECTORY, "NativeClientVSAddIn.AddIn") |
| + |
| +# AddIn dll file path. We will obtain our add-in version from this. |
| +ADDIN_ASSEMBLY = os.path.join(ASSEMBLY_DIRECTORY, "NativeClientVSAddIn.dll") |
| + |
| +# Regex list to exclude from the zip. If a file path matches any of the |
| +# expressions during a call to AddFolderToZip it is excluded from the zip file. |
| +EXCLUDES = [ |
| + '.*\.svn.*', # Exclude .svn directories. |
| + # Exclude .AddIn file for now since we need to modify it with version info. |
| + re.escape(ADDIN_METADATA)] |
| + |
| +# List of source/destination pairs to include in zip file. |
| +FILE_LIST = [ |
| + (ADDIN_ASSEMBLY, ''), |
| + (os.path.join(ASSEMBLY_DIRECTORY, "NaCl.Build.CPPTasks.dll"), 'NaCl')] |
| + |
| + |
| +def AddFolderToZip(path, zip_file): |
| + """Adds an entire folder and sub folders to an open zipfile object. |
| + |
| + The zip_file must already be open and it is not closed by this function. |
| + |
| + Args: |
| + path: Folder to add. |
| + zipfile: Already open zip file. |
| + |
| + Returns: |
| + Nothing. |
| + """ |
| + # Ensure the path ends in trailing slash. |
| + path = path.rstrip("/\\") + "\\" |
| + for dir_path, dir_names, files in os.walk(path): |
| + for file in files: |
| + read_path = os.path.join(dir_path, file) |
| + |
| + # If the file path matches an exclude, don't include it. |
| + if any(re.search(expr, read_path) is not None for expr in EXCLUDES): |
| + continue |
| + |
| + zip_based_dir = dir_path[len(path):] |
| + write_path = os.path.join(zip_based_dir, file) |
| + zip_file.write(read_path, write_path, zipfile.ZIP_DEFLATED) |
| + |
| + |
| +def AddVersionModifiedAddinFile(zip_file): |
| + """Modifies the .AddIn file with the build version and adds to the zip. |
| + |
| + The version number is obtained from the NativeClientAddIn.dll assembly which |
| + is built during the build process. |
| + |
| + Args: |
| + zip_file: Already open zip file. |
| + """ |
| + info = win32api.GetFileVersionInfo(ADDIN_ASSEMBLY, "\\") |
| + ms = info['FileVersionMS'] |
| + ls = info['FileVersionLS'] |
| + version = "[%i.%i.%i.%i]" % ( |
| + win32api.HIWORD(ms), win32api.LOWORD(ms), |
| + win32api.HIWORD(ls), win32api.LOWORD(ls)) |
| + print "\nNaCl VS Add-in Build version: %s\n" % (version) |
| + |
| + metadata_filename = os.path.basename(ADDIN_METADATA) |
| + modified_file = os.path.join(ASSEMBLY_DIRECTORY, metadata_filename) |
| + |
| + # Copy the metadata file to new location and modify the version info. |
| + with open(ADDIN_METADATA, 'r') as source_file: |
| + with open(modified_file, 'w') as dest_file: |
| + for line in source_file: |
| + dest_file.write(line.replace("[REPLACE_ADDIN_VERSION]", version)) |
| + |
| + zip_file.write(modified_file, metadata_filename, zipfile.ZIP_DEFLATED) |
| + |
| + |
| +def main(): |
| + # Zip the package. |
| + out_file = zipfile.ZipFile(OUTPUT_NAME, 'w') |
| + for source_dest in FILE_LIST: |
| + file_name = os.path.basename(source_dest[0]) |
| + dest = os.path.join(source_dest[1], file_name) |
| + out_file.write(source_dest[0], dest, zipfile.ZIP_DEFLATED) |
| + AddFolderToZip(RESOURCE_DIRECTORY, out_file) |
| + AddVersionModifiedAddinFile(out_file) |
| + out_file.close() |
| + |
| + |
| +if __name__ == '__main__': |
| + main() |