OLD | NEW |
1 # This Source Code Form is subject to the terms of the Mozilla Public | 1 # This Source Code Form is subject to the terms of the Mozilla Public |
2 # License, v. 2.0. If a copy of the MPL was not distributed with this | 2 # License, v. 2.0. If a copy of the MPL was not distributed with this |
3 # file, You can obtain one at http://mozilla.org/MPL/2.0/. | 3 # file, You can obtain one at http://mozilla.org/MPL/2.0/. |
4 | 4 |
5 from __future__ import print_function | 5 from __future__ import print_function |
6 | 6 |
7 import os | 7 import os |
8 import operator | 8 import operator |
9 import re | 9 import re |
10 import codecs | 10 import codecs |
(...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
178 | 178 |
179 def update_metadata(metadata, version): | 179 def update_metadata(metadata, version): |
180 """Replace version number in metadata file "manually". | 180 """Replace version number in metadata file "manually". |
181 | 181 |
182 The ConfigParser would mess up the order of lines. | 182 The ConfigParser would mess up the order of lines. |
183 """ | 183 """ |
184 with open(metadata.option_source('general', 'version'), 'r+b') as fp: | 184 with open(metadata.option_source('general', 'version'), 'r+b') as fp: |
185 rawMetadata = fp.read() | 185 rawMetadata = fp.read() |
186 rawMetadata = re.sub( | 186 rawMetadata = re.sub( |
187 r'^(\s*version\s*=\s*).*', r'\g<1>%s' % version, | 187 r'^(\s*version\s*=\s*).*', r'\g<1>%s' % version, |
188 rawMetadata, flags=re.I | re.M | 188 rawMetadata, flags=re.I | re.M, |
189 ) | 189 ) |
190 | 190 |
191 fp.seek(0) | 191 fp.seek(0) |
192 fp.write(rawMetadata) | 192 fp.write(rawMetadata) |
193 fp.truncate() | 193 fp.truncate() |
194 | 194 |
195 | 195 |
196 def create_build(platform, base_dir, target_path, version, key_file=None): | 196 def create_build(platform, base_dir, target_path, version, key_file=None): |
197 """Create a build for the target platform and version.""" | 197 """Create a build for the target platform and version.""" |
198 if platform == 'edge': | 198 if platform == 'edge': |
199 import buildtools.packagerEdge as packager | 199 import buildtools.packagerEdge as packager |
200 else: | 200 else: |
201 import buildtools.packagerChrome as packager | 201 import buildtools.packagerChrome as packager |
202 | 202 |
203 metadata = readMetadata(base_dir, platform) | 203 metadata = readMetadata(base_dir, platform) |
204 update_metadata(metadata, version) | 204 update_metadata(metadata, version) |
205 | 205 |
206 build_path = os.path.join( | 206 build_path = os.path.join( |
207 target_path, | 207 target_path, |
208 getDefaultFileName(metadata, version, | 208 getDefaultFileName(metadata, version, |
209 get_extension(platform, key_file is not None)) | 209 get_extension(platform, key_file is not None)), |
210 ) | 210 ) |
211 | 211 |
212 packager.createBuild(base_dir, type=platform, outFile=build_path, | 212 packager.createBuild(base_dir, type=platform, outFile=build_path, |
213 releaseBuild=True, keyFile=key_file) | 213 releaseBuild=True, keyFile=key_file) |
214 | 214 |
215 return build_path | 215 return build_path |
216 | 216 |
217 | 217 |
218 def release_commit(base_dir, extension_name, version, platforms): | 218 def release_commit(base_dir, extension_name, version, platforms): |
219 """Create a release commit with a representative message.""" | 219 """Create a release commit with a representative message.""" |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
263 used_key_file = None | 263 used_key_file = None |
264 if platform == 'chrome': | 264 if platform == 'chrome': |
265 # Currently, only chrome builds are provided by us as signed | 265 # Currently, only chrome builds are provided by us as signed |
266 # packages. Create an unsigned package in base_dir which should be | 266 # packages. Create an unsigned package in base_dir which should be |
267 # uploaded to the Chrome Web Store | 267 # uploaded to the Chrome Web Store |
268 create_build(platform, baseDir, baseDir, version) | 268 create_build(platform, baseDir, baseDir, version) |
269 used_key_file = keyFile | 269 used_key_file = keyFile |
270 | 270 |
271 downloads.append( | 271 downloads.append( |
272 create_build(platform, baseDir, downloads_repo, version, | 272 create_build(platform, baseDir, downloads_repo, version, |
273 used_key_file) | 273 used_key_file), |
274 ) | 274 ) |
275 | 275 |
276 # Only create one commit, one tag and one source archive for all | 276 # Only create one commit, one tag and one source archive for all |
277 # platforms | 277 # platforms |
278 archive_path = os.path.join( | 278 archive_path = os.path.join( |
279 downloads_repo, | 279 downloads_repo, |
280 'adblockplus-{}-source.tgz'.format(release_identifier), | 280 'adblockplus-{}-source.tgz'.format(release_identifier), |
281 ) | 281 ) |
282 create_sourcearchive(baseDir, archive_path) | 282 create_sourcearchive(baseDir, archive_path) |
283 downloads.append(archive_path) | 283 downloads.append(archive_path) |
284 try: | 284 try: |
285 release_commit(baseDir, extension_name, version, target_platforms) | 285 release_commit(baseDir, extension_name, version, target_platforms) |
286 except subprocess.CalledProcessError as e: | 286 except subprocess.CalledProcessError as e: |
287 if not (re_release and 'nothing changed' in e.output): | 287 if not (re_release and 'nothing changed' in e.output): |
288 raise | 288 raise |
289 | 289 |
290 release_tag(baseDir, release_identifier, extension_name) | 290 release_tag(baseDir, release_identifier, extension_name) |
291 | 291 |
292 # Now add the downloads and commit | 292 # Now add the downloads and commit |
293 subprocess.check_call(['hg', 'add', '-R', downloads_repo] + downloads) | 293 subprocess.check_call(['hg', 'add', '-R', downloads_repo] + downloads) |
294 release_commit(downloads_repo, extension_name, version, target_platforms) | 294 release_commit(downloads_repo, extension_name, version, target_platforms) |
295 | 295 |
296 # Push all changes | 296 # Push all changes |
297 subprocess.check_call(['hg', 'push', '-R', baseDir]) | 297 subprocess.check_call(['hg', 'push', '-R', baseDir]) |
298 subprocess.check_call(['hg', 'push', '-R', downloads_repo]) | 298 subprocess.check_call(['hg', 'push', '-R', downloads_repo]) |
OLD | NEW |