From a1f6a9abbe6406d5a7d84c39d4afc402fd233f85 Mon Sep 17 00:00:00 2001 From: Joseph Myers Date: Thu, 1 Dec 2016 00:09:25 +0000 Subject: [PATCH] Make build-many-glibcs.py support running as a bot. This patch makes build-many-glibcs.py support a "bot" action, for repeatedly running a checkout and build cycle. Two new configuration variables are used in bot-config.json. "delay" indicates the time to sleep after each bot-cycle round (regardless of whether that round actually ran any builds); "run" is a boolean, which is false if the bot should just exit (the point of this is that you can edit bot-config.json to set this to false to cause a running bot to exit cleanly between builds) and true if the bot should run. The bot does not exit if the bot-cycle process exits with error status (that can occur when sourceware's load limiting means anonymous version control access fails, for example), just sleeps until it's time to try again. The script is changed to flush stdout before running a subprocess in bot-cycle, so that when output is redirected (as expected for a bot) the status messages from bot-cycle appear in their proper position in its redirected output relative to the output from the subprocesses run, and to copy the logs directory before running builds in bot-cycle so that the logs from at least one complete build are always available for looking at how something failed, even while the next build is running. * scripts/build-many-glibcs.py: Add bot to usage message. Import time module. (Context.__init__): Initialize self.logsdir_old. (Context.run_builds): Handle bot action. (Context.bot_cycle): Copy logs directory before running builds. (Context.bot_run_self): Take argument for whether to check subprocess result. Flush stdout before running subprocess. (Context.bot): New function. (get_parser): Allow bot action. --- ChangeLog | 12 +++++++++ scripts/build-many-glibcs.py | 52 ++++++++++++++++++++++++++++-------- 2 files changed, 53 insertions(+), 11 deletions(-) diff --git a/ChangeLog b/ChangeLog index 65227cce5a..17d5aeb515 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +2016-12-01 Joseph Myers + + * scripts/build-many-glibcs.py: Add bot to usage message. Import + time module. + (Context.__init__): Initialize self.logsdir_old. + (Context.run_builds): Handle bot action. + (Context.bot_cycle): Copy logs directory before running builds. + (Context.bot_run_self): Take argument for whether to check + subprocess result. Flush stdout before running subprocess. + (Context.bot): New function. + (get_parser): Allow bot action. + 2016-11-30 Joseph Myers * scripts/build-many-glibcs.py: Add bot-cycle to usage message. diff --git a/scripts/build-many-glibcs.py b/scripts/build-many-glibcs.py index 658a22e65f..d089b0c7a5 100755 --- a/scripts/build-many-glibcs.py +++ b/scripts/build-many-glibcs.py @@ -23,13 +23,14 @@ This script takes as arguments a directory name (containing a src subdirectory with sources of the relevant toolchain components) and a description of what to do: 'checkout', to check out sources into that directory, 'bot-cycle', to run a series of checkout and build steps, -'host-libraries', to build libraries required by the toolchain, -'compilers', to build cross-compilers for various configurations, or -'glibcs', to build glibc for various configurations and run the -compilation parts of the testsuite. Subsequent arguments name the -versions of components to check out (--