# Copyright 2014 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 file was generated from
# scripts/tools/buildbot_tool_templates/master.cfg
# by "../../build/scripts/tools/buildbot-tool gen .".
# DO NOT EDIT BY HAND!


import os

import master_site_config

# This module comes from scripts/, which must be in the PYTHONPATH.
from master import master_gen

# BuildmasterConfig must be defined; it is how buildbot gets the config
# info for the master.

BuildmasterConfig = {}

master_gen.PopulateBuildmasterConfig(
    BuildmasterConfig,
    os.path.join(os.path.dirname(os.path.abspath(__file__)), 'builders.pyl'),
    master_site_config.GYP)
