Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(112)

Side by Side Diff: visual_studio/NativeClientVSAddIn/create_package.py

Issue 11266051: Add PNaCl support for VS addin. (Closed) Base URL: http://nativeclient-sdk.googlecode.com/svn/trunk/src
Patch Set: Add pnacl-translate phase Created 8 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 5
6 """Takes the output of the build step and turns it into a compressed 6 """Takes the output of the build step and turns it into a compressed
7 archive ready for distribution. 7 archive ready for distribution.
8 8
9 This script assumes the build script has been run to compile the add-in. 9 This script assumes the build script has been run to compile the add-in.
10 It zips up all files required for the add-in installation and places the 10 It zips up all files required for the add-in installation and places the
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
42 ADDIN_METADATA = join(RESOURCE_DIRECTORY, 'NativeClientVSAddIn.AddIn') 42 ADDIN_METADATA = join(RESOURCE_DIRECTORY, 'NativeClientVSAddIn.AddIn')
43 43
44 # AddIn dll file path. We will obtain our add-in version from this. 44 # AddIn dll file path. We will obtain our add-in version from this.
45 ADDIN_ASSEMBLY = join(ASSEMBLY_DIRECTORY, 'NativeClientVSAddIn.dll') 45 ADDIN_ASSEMBLY = join(ASSEMBLY_DIRECTORY, 'NativeClientVSAddIn.dll')
46 46
47 # Regex list to exclude from the archive. If a file path matches any of the 47 # Regex list to exclude from the archive. If a file path matches any of the
48 # expressions during a call to AddFolderToArchive it is excluded from the 48 # expressions during a call to AddFolderToArchive it is excluded from the
49 # archive file. 49 # archive file.
50 EXCLUDES = [ 50 EXCLUDES = [
51 r'\.svn', # Exclude .svn directories. 51 r'\.svn', # Exclude .svn directories.
52 r'\.swp', # Exclude .svn directories.
binji 2012/10/29 18:08:59 is this comment correct? swp is svn?
52 r'examples\\.*\\chrome_data', 53 r'examples\\.*\\chrome_data',
53 r'examples\\.*\\Debug', 54 r'examples\\.*\\Debug',
54 r'examples\\.*\\newlib', 55 r'examples\\.*\\newlib',
55 r'examples\\.*\\win', 56 r'examples\\.*\\win',
56 r'examples\\.*\\ipch', 57 r'examples\\.*\\ipch',
57 r'examples\\.*\\*.sdf', 58 r'examples\\.*\\*.sdf',
58 r'examples\\.*\\*.suo', 59 r'examples\\.*\\*.suo',
59 # Exclude .AddIn file for now since we need to modify it with version info. 60 # Exclude .AddIn file for now since we need to modify it with version info.
60 re.escape(ADDIN_METADATA)] 61 re.escape(ADDIN_METADATA)]
61 62
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
120 121
121 WriteFileToArchive(archive, modified_file, metadata_filename) 122 WriteFileToArchive(archive, modified_file, metadata_filename)
122 123
123 124
124 def Error(msg): 125 def Error(msg):
125 sys.stderr.write(msg + '\n') 126 sys.stderr.write(msg + '\n')
126 sys.exit(1) 127 sys.exit(1)
127 128
128 129
129 def WriteFileToArchive(archive, filename, archive_name): 130 def WriteFileToArchive(archive, filename, archive_name):
131 archive_name = join('vs_addin', archive_name)
132 if archive_name.replace('\\', '/') in archive.getnames():
133 print 'Skipping: %s' % archive_name
134 return
130 print 'Adding: %s' % archive_name 135 print 'Adding: %s' % archive_name
131 archive_name = join('vs_addin', archive_name)
132 archive.add(filename, archive_name) 136 archive.add(filename, archive_name)
133 137
134 138
139 def CopyWithReplacement(src, dest, replacements):
140 if os.path.exists(dest):
141 shutil.rmtree(dest)
142 os.makedirs(dest)
143 src_basename = os.path.basename(src)
144 dest_basename = os.path.basename(dest)
145 for filename in os.listdir(src):
146 srcfile = join(src, filename)
147 # skip non-files, in particular .svn folders.
148 if not os.path.isfile(srcfile):
149 continue
150 destfile = join(dest, filename.replace(src_basename, dest_basename))
151 with open(srcfile, "rb") as f:
152 data = f.read()
153 for pat, subst in replacements.iteritems():
154 data = data.replace(pat, subst)
155 with open(destfile, "wb") as f:
156 f.write(data)
157
158
135 def main(): 159 def main():
136 if not os.path.exists(BUILD_DIR): 160 if not os.path.exists(BUILD_DIR):
137 Error("build dir not found: %s" % BUILD_DIR) 161 Error("build dir not found: %s" % BUILD_DIR)
138 162
139 archive = tarfile.open(OUTPUT_NAME, 'w:gz') 163 archive = tarfile.open(OUTPUT_NAME, 'w:gz')
140 for source_dest in FILE_LIST: 164 for source_dest in FILE_LIST:
141 file_name = os.path.basename(source_dest[0]) 165 file_name = os.path.basename(source_dest[0])
142 dest = join(source_dest[1], file_name) 166 dest = join(source_dest[1], file_name)
143 WriteFileToArchive(archive, source_dest[0], dest) 167 WriteFileToArchive(archive, source_dest[0], dest)
144 168
145 AddFolderToArchive(RESOURCE_DIRECTORY, archive) 169 AddFolderToArchive(RESOURCE_DIRECTORY, archive)
146 170
147 # Duplicate the NaCl64 platform but rename it to NaCl32 171 # Duplicate the NaCl64 platform but rename it to NaCl32
148 src64 = join(RESOURCE_DIRECTORY, 'NaCl64') 172 src64 = join(RESOURCE_DIRECTORY, 'NaCl64')
149 dest32 = join(BUILD_DIR, 'NaCl32')
150 if os.path.exists(dest32):
151 shutil.rmtree(dest32)
152 os.makedirs(dest32)
153 for filename in os.listdir(src64):
154 srcfile = join(src64, filename)
155 # skip non-files, in particular .svn folders.
156 if not os.path.isfile(srcfile):
157 continue
158 destfile = join(dest32, filename.replace('NaCl64', 'NaCl32'))
159 data = open(srcfile, "rb").read()
160 data = data.replace("x86_64", "i686")
161 data = data.replace("64", "32")
162 open(destfile, "wb").write(data)
163 173
164 AddFolderToArchive(join(BUILD_DIR, "NaCl32"), archive, "NaCl32") 174 dest = join(BUILD_DIR, 'NaCl32')
175 CopyWithReplacement(src64, dest, {'x86_64': 'i686', '64': '32'})
176 AddFolderToArchive(dest, archive, "NaCl32")
177
178 replacements = {
179 'NaCl64': 'PNaCl',
180 'x86_64': 'i686',
181 '64': '32',
182 '.nexe': '.pexe',
183 'nacl_link.xml': 'pnacl_link.xml',
184 '$(ProjectName)_$(PlatformArchitecture)': '$(ProjectName)',
185 }
186
187 dest = join(BUILD_DIR, 'PNaCl')
188 CopyWithReplacement(src64, dest, replacements)
189 AddFolderToArchive(dest, archive, "PNaCl")
165 190
166 AddVersionModifiedAddinFile(archive) 191 AddVersionModifiedAddinFile(archive)
167 archive.close() 192 archive.close()
168 193
169 194
170 if __name__ == '__main__': 195 if __name__ == '__main__':
171 main() 196 main()
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698