[SCM] WebKit Debian packaging branch, webkit-1.2, updated. upstream/1.1.90-6072-g9a69373
eric at webkit.org
eric at webkit.org
Wed Apr 7 23:07:05 UTC 2010
The following commit has been merged in the webkit-1.2 branch:
commit ed80fcf6e18c8357467b493e760e53e5f6eb9bcc
Author: eric at webkit.org <eric at webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date: Mon Oct 26 22:34:19 2009 +0000
2009-10-23 Eric Seidel <eric at webkit.org>
Reviewed by Adam Barth.
bugzilla-tool commit-queue does not notice modifications to committers.py
https://bugs.webkit.org/show_bug.cgi?id=30084
* Scripts/bugzilla-tool:
- Make commit-queue re-exec itself instead of using while(1).
- Add a --is-relaunch parameter to commit-queue to bypass initialization on re-launch.
- Add a _next_patch() method which calls exec() (and could eventually call update-webkit too).
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@50105 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/WebKitTools/ChangeLog b/WebKitTools/ChangeLog
index 44615df..fb41b7b 100644
--- a/WebKitTools/ChangeLog
+++ b/WebKitTools/ChangeLog
@@ -1,3 +1,15 @@
+2009-10-23 Eric Seidel <eric at webkit.org>
+
+ Reviewed by Adam Barth.
+
+ bugzilla-tool commit-queue does not notice modifications to committers.py
+ https://bugs.webkit.org/show_bug.cgi?id=30084
+
+ * Scripts/bugzilla-tool:
+ - Make commit-queue re-exec itself instead of using while(1).
+ - Add a --is-relaunch parameter to commit-queue to bypass initialization on re-launch.
+ - Add a _next_patch() method which calls exec() (and could eventually call update-webkit too).
+
2009-10-22 Eric Seidel <eric at webkit.org>
Reviewed by Adam Barth.
diff --git a/WebKitTools/Scripts/bugzilla-tool b/WebKitTools/Scripts/bugzilla-tool
index bb4e76f..5bcc8cf 100755
--- a/WebKitTools/Scripts/bugzilla-tool
+++ b/WebKitTools/Scripts/bugzilla-tool
@@ -649,6 +649,7 @@ class CheckTreeStatus(Command):
class LandPatchesFromCommitQueue(Command):
def __init__(self):
options = [
+ make_option("--is-relaunch", action="store_true", dest="is_relaunch", default=False, help="Internal: Used by the queue to indicate that it's relaunching itself."),
make_option("--no-confirm", action="store_false", dest="confirm", default=True, help="Do not ask the user for confirmation before running the queue. Dangerous!"),
make_option("--status-host", action="store", type="string", dest="status_host", default=StatusBot.default_host, help="Do not ask the user for confirmation before running the queue. Dangerous!"),
]
@@ -680,16 +681,25 @@ class LandPatchesFromCommitQueue(Command):
wake_time = datetime.now() + timedelta(seconds=cls.seconds_to_sleep)
return "%s Sleeping until %s (%s)." % (message, wake_time.strftime(cls.log_date_format), cls.sleep_duration_text)
- @classmethod
- def _sleep(cls, message):
- log(cls._sleep_message(message))
- time.sleep(cls.seconds_to_sleep)
+ def _sleep(self, message):
+ log(self._sleep_message(message))
+ time.sleep(self.seconds_to_sleep)
+ self._next_patch()
def _update_status_and_sleep(self, message):
status_message = self._sleep_message(message)
self.status_bot.update_status(status_message)
log(status_message)
time.sleep(self.seconds_to_sleep)
+ self._next_patch()
+
+ def _next_patch(self):
+ # Re-exec this script to catch any updates to the script.
+ # Make sure that the re-execed commit-queue does not wait for the user.
+ args = sys.argv[:]
+ if args.count("--is-relaunch") == 0:
+ args.append("--is-relaunch")
+ os.execvp(sys.argv[0], args)
@staticmethod
def _open_log_file(log_path):
@@ -710,58 +720,55 @@ class LandPatchesFromCommitQueue(Command):
log_file.close()
def execute(self, options, args, tool):
- log("CAUTION: commit-queue will discard all local changes in %s" % tool.scm().checkout_root)
- if options.confirm:
- response = raw_input("Are you sure? Type 'yes' to continue: ")
- if (response != 'yes'):
- error("User declined.")
+ if not options.is_relaunch:
+ log("CAUTION: commit-queue will discard all local changes in %s" % tool.scm().checkout_root)
+ if options.confirm:
+ response = raw_input("Are you sure? Type 'yes' to continue: ")
+ if (response != 'yes'):
+ error("User declined.")
queue_log = self._add_log_to_output_tee(self.queue_log_path)
- log("Running WebKit Commit Queue. %s" % datetime.now().strftime(self.log_date_format))
+ if not options.is_relaunch:
+ log("Running WebKit Commit Queue. %s" % datetime.now().strftime(self.log_date_format))
self.status_bot = StatusBot(host=options.status_host)
- while (True):
- # Either of these calls could throw URLError which shouldn't stop the queue.
- # We catch all exceptions just in case.
- try:
- # Fetch patches instead of just bug ids to that we validate reviewer/committer flags on every patch.
- patches = tool.bugs.fetch_patches_from_commit_queue(reject_invalid_patches=True)
- if not len(patches):
- self._update_status_and_sleep("Empty queue.")
- continue
- patch_ids = map(lambda patch: patch['id'], patches)
- first_bug_id = patches[0]['bug_id']
- log("%s in commit queue [%s]" % (pluralize('patch', len(patches)), ", ".join(patch_ids)))
-
- red_builders_names = tool.buildbot.red_core_builders_names()
- if red_builders_names:
- red_builders_names = map(lambda name: '"%s"' % name, red_builders_names) # Add quotes around the names.
- self._update_status_and_sleep("Builders [%s] are red. See http://build.webkit.org." % ", ".join(red_builders_names))
- continue
-
- self.status_bot.update_status("Landing patches from bug %s." % first_bug_id, bug_id=first_bug_id)
- except Exception, e:
- # Don't try tell the status bot, in case telling it causes an exception.
- self._sleep("Exception while checking queue and bots: %s." % e)
- continue
-
- # Try to land patches on the first bug in the queue before looping
- bug_log_path = os.path.join(self.bug_logs_directory, "%s.log" % first_bug_id)
- bug_log = self._add_log_to_output_tee(bug_log_path)
- bugzilla_tool_path = __file__ # re-execute this script
- bugzilla_tool_args = [bugzilla_tool_path, 'land-patches', '--force-clean', '--commit-queue', '--quiet', first_bug_id]
- try:
- WebKitLandingScripts.run_and_throw_if_fail(bugzilla_tool_args)
- except ScriptError, e:
- # Unexpected failure! Mark the patch as commit-queue- and comment in the bug.
- # exit(2) is a special exit code we use to indicate that the error was already handled by land-patches and we should keep looping anyway.
- if e.exit_code != 2:
- tool.bugs.reject_patch_from_commit_queue(patch['id'], "Unexpected failure when landing patch! Please file a bug against bugzilla-tool.\n%s" % e.message_with_output())
- self._remove_log_from_output_tee(bug_log)
-
- log("Finished WebKit Commit Queue. %s" % datetime.now().strftime(self.log_date_format))
- self._remove_log_from_output_tee(queue_log)
+ # Either of these calls could throw URLError which shouldn't stop the queue.
+ # We catch all exceptions just in case.
+ try:
+ # Fetch patches instead of just bug ids to that we validate reviewer/committer flags on every patch.
+ patches = tool.bugs.fetch_patches_from_commit_queue(reject_invalid_patches=True)
+ if not len(patches):
+ self._update_status_and_sleep("Empty queue.")
+ patch_ids = map(lambda patch: patch['id'], patches)
+ first_bug_id = patches[0]['bug_id']
+ log("%s in commit queue [%s]" % (pluralize('patch', len(patches)), ", ".join(patch_ids)))
+
+ red_builders_names = tool.buildbot.red_core_builders_names()
+ if red_builders_names:
+ red_builders_names = map(lambda name: '"%s"' % name, red_builders_names) # Add quotes around the names.
+ self._update_status_and_sleep("Builders [%s] are red. See http://build.webkit.org." % ", ".join(red_builders_names))
+
+ self.status_bot.update_status("Landing patches from bug %s." % first_bug_id, bug_id=first_bug_id)
+ except Exception, e:
+ # Don't try tell the status bot, in case telling it causes an exception.
+ self._sleep("Exception while checking queue and bots: %s." % e)
+
+ # Try to land patches on the first bug in the queue before looping
+ bug_log_path = os.path.join(self.bug_logs_directory, "%s.log" % first_bug_id)
+ bug_log = self._add_log_to_output_tee(bug_log_path)
+ bugzilla_tool_path = __file__ # re-execute this script
+ bugzilla_tool_args = [bugzilla_tool_path, 'land-patches', '--force-clean', '--commit-queue', '--quiet', first_bug_id]
+ try:
+ WebKitLandingScripts.run_and_throw_if_fail(bugzilla_tool_args)
+ except ScriptError, e:
+ # Unexpected failure! Mark the patch as commit-queue- and comment in the bug.
+ # exit(2) is a special exit code we use to indicate that the error was already handled by land-patches and we should keep looping anyway.
+ if e.exit_code != 2:
+ tool.bugs.reject_patch_from_commit_queue(patch['id'], "Unexpected failure when landing patch! Please file a bug against bugzilla-tool.\n%s" % e.message_with_output())
+ self._remove_log_from_output_tee(bug_log)
+ # self._remove_log_from_output_tee(queue_log) # implicit in the exec()
+ self._next_patch()
class NonWrappingEpilogIndentedHelpFormatter(IndentedHelpFormatter):
--
WebKit Debian packaging
More information about the Pkg-webkit-commits
mailing list