Index: slave/skia_slave_scripts/apply_patch.py |
diff --git a/slave/skia_slave_scripts/apply_patch.py b/slave/skia_slave_scripts/apply_patch.py |
deleted file mode 100644 |
index 6d334aa6f825fe8235a3696f19454e4f52c275a1..0000000000000000000000000000000000000000 |
--- a/slave/skia_slave_scripts/apply_patch.py |
+++ /dev/null |
@@ -1,84 +0,0 @@ |
-#!/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. |
- |
- |
-""" Apply a diff to patch a Skia checkout. """ |
- |
- |
-from ast import literal_eval |
-from build_step import BuildStep, BuildStepFailure |
-from py.utils import shell_utils |
-from py.utils.git_utils import GIT |
-import os |
-import shutil |
-import sys |
-import tempfile |
-import urllib |
-import urllib2 |
- |
- |
-if os.name == 'nt': |
- SVN = 'svn.bat' |
-else: |
- SVN = 'svn' |
- |
- |
-class ApplyPatch(BuildStep): |
- def _Run(self): |
- if self._args['patch'] == 'None': |
- raise BuildStepFailure('No patch given!') |
- |
- # patch is a tuple of the form (int, str), where patch[0] is the "level" of |
- # the patch and patch[1] is the URL of the diff. |
- patch_level, encoded_patch_url = literal_eval(self._args['patch'].decode()) |
- patch_url = urllib.quote(encoded_patch_url, safe="%/:=&?~+!$,;'@()*[]") |
- print 'Patch level: %d' % patch_level |
- print 'Diff file URL:' |
- print patch_url |
- |
- # Write the patch file into a temporary directory. Unfortunately, temporary |
- # files created by the tempfile module don't behave properly on Windows, so |
- # we create a temporary directory and write the file inside it. |
- temp_dir = tempfile.mkdtemp() |
- try: |
- patch_file_name = os.path.join(temp_dir, 'skiabot_patch') |
- patch_file = open(patch_file_name, 'wb') |
- try: |
- if 'svn' in patch_url: |
- # TODO(borenet): Create an svn_utils module and use it instead. It |
- # would be nice to find a way to share |
- # https://skia.googlesource.com/skia/+/master/tools/svn.py |
- patch_contents = shell_utils.run([SVN, 'cat', patch_url], echo=False) |
- else: |
- patch_contents = urllib2.urlopen(patch_url).read() |
- if not patch_contents: |
- raise Exception('Got an empty patch!') |
- patch_file.write(patch_contents) |
- finally: |
- patch_file.close() |
- print 'Saved patch to %s' % patch_file.name |
- |
- def get_patch_cmd(level, patch_filename): |
- return [GIT, 'apply', '-p%d' % level, '-v', '--ignore-space-change', |
- '--ignore-whitespace', patch_filename] |
- |
- try: |
- # First, check that the patch can be applied at the given level. |
- shell_utils.run(get_patch_cmd(patch_level, patch_file.name) + |
- ['--check']) |
- except shell_utils.CommandFailedException as e: |
- # If the patch can't be applied at the requested level, try 0 or 1, |
- # depending on what we just tried. |
- print e |
- patch_level = (patch_level + 1) % 2 |
- print 'Trying patch level %d instead...' % patch_level |
- shell_utils.run(get_patch_cmd(patch_level, patch_file.name)) |
- |
- finally: |
- shutil.rmtree(temp_dir) |
- |
- |
-if '__main__' == __name__: |
- sys.exit(BuildStep.RunBuildStep(ApplyPatch)) |