From 2360d8212e5551fc9955790c5e4daa322b49d968 Mon Sep 17 00:00:00 2001 From: "phoglund@webrtc.org" Date: Wed, 21 Mar 2012 08:19:02 +0000 Subject: [PATCH] Added a new Android NDK bot. BUG= TEST= Review URL: https://webrtc-codereview.appspot.com/458001 git-svn-id: http://webrtc.googlecode.com/svn/trunk@1920 4adac7df-926f-26a2-2b94-8c16560cd09d --- tools/continuous_build/master.cfg | 13 +++++ .../continuous_build/webrtc_buildbot/utils.py | 48 +++++++++++++------ tools/quality_tracking/dashboard/index.yaml | 16 +++++++ 3 files changed, 63 insertions(+), 14 deletions(-) create mode 100644 tools/quality_tracking/dashboard/index.yaml diff --git a/tools/continuous_build/master.cfg b/tools/continuous_build/master.cfg index e4521e5daf..2eba7e2812 100755 --- a/tools/continuous_build/master.cfg +++ b/tools/continuous_build/master.cfg @@ -30,6 +30,7 @@ c = BuildmasterConfig = {} from buildbot.buildslave import BuildSlave c['slaves'] = [BuildSlave('android', 'pass', max_builds=1), + BuildSlave('android-ndk', 'pass', max_builds=1), BuildSlave('chromeos', 'pass', max_builds=1), BuildSlave('linux-chrome', 'pass', max_builds=1), BuildSlave('linux-clang', 'pass', max_builds=1), @@ -83,6 +84,7 @@ webrtc_scheduler = Scheduler(name='all', branch=None, treeStableTimer=5*60, 'Linux64DBG-GCC4.6', 'LinuxVideoTest', 'Android', + 'AndroidNDK', 'ChromeOS' ]) chrome_scheduler = Scheduler(name='chrome', branch=None, treeStableTimer=60*60, @@ -221,6 +223,10 @@ android_factory = utils.WebRTCAndroidFactory( utils.BuildStatusOracle('android_factory')) android_factory.EnableBuild(product='toro') +android_ndk_factory = utils.WebRTCAndroidNDKFactory( + utils.BuildStatusOracle('android_ndk_factory')) +android_ndk_factory.EnableBuild() + ############## Mac factories ####################################### mac_factory_32_dbg = utils.WebRTCMacFactory( utils.BuildStatusOracle('mac_factory_32_dbg')) @@ -337,6 +343,12 @@ android_builder_1 = { 'builddir': 'android', 'factory': android_factory, } +android_builder_ndk = { + 'name': 'AndroidNDK', + 'slavename': 'android-ndk', + 'builddir': 'android-ndk', + 'factory': android_ndk_factory, + } linux_builder_gcc_4_6 = { 'name': 'Linux64DBG-GCC4.6', 'slavename': 'linux-slave-gcc-4.6', @@ -357,6 +369,7 @@ c['builders'] = [ linux_builder_gcc_4_6, linux_builder_video, android_builder_1, + android_builder_ndk, chromeos_builder, linux_builder_chrome, ] diff --git a/tools/continuous_build/webrtc_buildbot/utils.py b/tools/continuous_build/webrtc_buildbot/utils.py index 343b2e247d..ab819f2a96 100755 --- a/tools/continuous_build/webrtc_buildbot/utils.py +++ b/tools/continuous_build/webrtc_buildbot/utils.py @@ -200,9 +200,17 @@ class WebRTCFactory(factory.BuildFactory): """ self.AddCommonTestRunStep(test) + def AddGclientConfigStep(self): + """Helper method for adding a gclient config step.""" + self.AddCommonStep(['gclient', 'config', WEBRTC_SVN_LOCATION], + workdir=WEBRTC_BUILD_DIR, + descriptor='gclient_config') + def AddGclientSyncStep(self, force_sync): - """Helper method for invoking gclient sync. Will retry if the operation - fails. Runs in the bot's build directory (e.g. one step above trunk). + """Helper method for invoking gclient sync. + + Will retry if the operation fails. Runs in the bot's build directory + (e.g. one step above trunk). Args: force_sync: If the sync should be forced, i.e. update even for @@ -414,9 +422,27 @@ class WebRTCAndroidFactory(WebRTCFactory): cmd = 'svn checkout %s external/webrtc' % WEBRTC_SVN_LOCATION self.AddCommonStep(cmd, descriptor='svn (checkout)') - cmd = ('source build/envsetup.sh && lunch full_%s-eng ' - '&& mmm external/webrtc showcommands' % product) - self.AddCommonStep(cmd, descriptor='build') + cmd = ('source build/envsetup.sh && lunch full_%s-eng ' % product) + self.AddCommonStep(cmd, descriptor='make_android') + + cmd = 'source build/envsetup.sh && mmm external/webrtc showcommands' + self.AddCommonStep(cmd, descriptor='make_webrtc') + + +class WebRTCAndroidNDKFactory(WebRTCFactory): + """Sets up the Android NDK build.""" + + def __init__(self, build_status_oracle): + WebRTCFactory.__init__(self, build_status_oracle) + + def EnableBuild(self): + self.AddSmartCleanStep() + self.AddGclientConfigStep() + self.AddGclientSyncStep(force_sync=True) + cmd = 'source ./build/android/envsetup.sh && gclient runhooks' + self.AddCommonStep(cmd, descriptor='gen_android_makefiles') + cmd = 'source ./build/android/envsetup.sh && make -j8' + self.AddCommonStep(cmd, descriptor='make') class WebRTCChromeFactory(WebRTCFactory): @@ -487,9 +513,7 @@ class WebRTCLinuxFactory(WebRTCFactory): for gyp_define in MEMORY_TOOLS_GYP_DEFINES: self.gyp_params.append('-D' + gyp_define) else: - self.AddCommonStep(['gclient', 'config', WEBRTC_SVN_LOCATION], - workdir=WEBRTC_BUILD_DIR, - descriptor='gclient_config') + self.AddGclientConfigStep() self.AddGclientSyncStep(force_sync=False) if chrome_os: @@ -656,9 +680,7 @@ class WebRTCMacFactory(WebRTCFactory): else: self.build_type = build_type self.AddSmartCleanStep() - self.AddCommonStep(['gclient', 'config', WEBRTC_SVN_LOCATION], - workdir=WEBRTC_BUILD_DIR, - descriptor='gclient_config') + self.AddGclientConfigStep() self.AddGclientSyncStep(force_sync=True) if self.build_type == 'make' or self.build_type == 'both': @@ -741,9 +763,7 @@ class WebRTCWinFactory(WebRTCFactory): # Now do the clean + build. self.AddSmartCleanStep() - self.AddCommonStep(['gclient', 'config', WEBRTC_SVN_LOCATION], - descriptor='gclient_config', - workdir=WEBRTC_BUILD_DIR) + self.AddGclientConfigStep() self.AddGclientSyncStep(force_sync=True) if self.configuration == 'Debug' or self.configuration == 'both': diff --git a/tools/quality_tracking/dashboard/index.yaml b/tools/quality_tracking/dashboard/index.yaml new file mode 100644 index 0000000000..7a20411e9b --- /dev/null +++ b/tools/quality_tracking/dashboard/index.yaml @@ -0,0 +1,16 @@ +indexes: + +# AUTOGENERATED + +# This index.yaml is automatically updated whenever the dev_appserver +# detects that a new type of query is run. If you want to manage the +# index.yaml file manually, remove the above marker line (the line +# saying "# AUTOGENERATED"). If you want to manage some indexes +# manually, move them above the marker line. The index.yaml file is +# automatically uploaded to the admin console when you next deploy +# your application using appcfg.py. + +- kind: CoverageData + properties: + - name: report_category + - name: date