blob: 4d1c2d53e2f319ad58ea306bd53678e6784f7dc0 [file] [log] [blame]
# Copyright 2015 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.
"""This SingleBranchScheduler download necessary emulator package and include it in build properties
"""
import os, sys
import gcs_oauth2_boto_plugin
import StringIO
from boto import boto
from twisted.python import log
from twisted.internet import defer, utils
from buildbot.schedulers.timed import Periodic
from buildbot.schedulers.basic import SingleBranchScheduler
google_storage = 'gs'
class EmulatorSingleBranchScheduler(SingleBranchScheduler):
"""Augmented 'SingleBranchScheduler' that adds emu_image properties"""
# Overrides 'SingleBranchScheduler.addBuildsetForChanges'
@defer.inlineCallbacks
def addBuildsetForChanges(self, *args, **kwargs):
for x in ['windows', 'linux', 'mac']:
if x in self.name:
emu_cache_file = 'emulator_%s_poller.cache' % x
try:
with open(emu_cache_file, 'r') as f:
content = f.read().splitlines()
emu_revision = content[0]
emu_file = ','.join(content[1:])
except:
log.msg("%s: Error - emulator cache file not available, cancel build" % self.name)
cancel_build = True
try:
with open('sys_image_lmp_mr1_poller.cache', 'r') as f:
content = f.read().splitlines()
lmp_mr1_revision = content[0]
lmp_mr1_file = ','.join(content[1:])
except:
lmp_mr1_revision = 'None'
lmp_mr1_file = ''
try:
with open('sys_image_mnc_poller.cache', 'r') as f:
content = f.read().splitlines()
mnc_revision = content[0]
mnc_file = ','.join(content[1:])
except:
mnc_revision = 'None'
mnc_file = ''
try:
with open('sys_image_nyc_poller.cache', 'r') as f:
content = f.read().splitlines()
nyc_revision = content[0]
nyc_file = ','.join(content[1:])
except:
nyc_revision = 'None'
nyc_file = ''
try:
with open('sys_image_lmp_poller.cache', 'r') as f:
content = f.read().splitlines()
lmp_revision = content[0]
lmp_file = ','.join(content[1:])
except:
lmp_revision = 'None'
lmp_file = ''
try:
with open('sys_image_klp_poller.cache', 'r') as f:
content = f.read().splitlines()
klp_revision = content[0]
klp_file = ','.join(content[1:])
except:
klp_revision = 'None'
klp_file = ''
self.properties.setProperty('mnc_revision', mnc_revision, 'Scheduler')
self.properties.setProperty('mnc_system_image', mnc_file, 'Scheduler')
self.properties.setProperty('lmp_mr1_revision', lmp_mr1_revision, 'Scheduler')
self.properties.setProperty('lmp_mr1_system_image', lmp_mr1_file, 'Scheduler')
self.properties.setProperty('nyc_revision', nyc_revision, 'Scheduler')
self.properties.setProperty('nyc_system_image', nyc_file, 'Scheduler')
self.properties.setProperty('klp_revision', klp_revision, 'Scheduler')
self.properties.setProperty('klp_system_image', klp_file, 'Scheduler')
self.properties.setProperty('lmp_revision', lmp_revision, 'Scheduler')
self.properties.setProperty('lmp_system_image', lmp_file, 'Scheduler')
self.properties.setProperty('emu_revision', emu_revision, 'Scheduler')
self.properties.setProperty('emulator_image', emu_file, 'Scheduler')
self.properties.setProperty('got_revision', '%s-%s-%s-%s-%s' % (emu_revision, mnc_revision, lmp_mr1_revision, nyc_revision.split('-')[0], lmp_revision), 'Scheduler')
self.properties.setProperty('logs_dir', os.path.join(os.getcwd(), 'slave_logs', ''), 'Scheduler')
rv = yield SingleBranchScheduler.addBuildsetForChanges(
self,
*args,
**kwargs)
defer.returnValue(rv)