python/mozbuild/mozbuild/config.py
author Gregory Szorc <gps@mozilla.com>
Tue, 06 Nov 2012 16:58:13 -0800
changeset 120337 4f96fdb5e4f9b9e101e2e3c5f535bff8e0fe8f6c
permissions -rw-r--r--
Bug 808336 - Part 2: Discover mach settings providers via decorators; r=jhammel With this patch, mach is now decoupled from the build system and is truly a generic command dispatching framework.

# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this file,
# You can obtain one at http://mozilla.org/MPL/2.0/.

from __future__ import unicode_literals

import multiprocessing

from mach.config import (
    ConfigProvider,
    PositiveIntegerType,
)

from mach.decorators import SettingsProvider


@SettingsProvider
class BuildConfig(ConfigProvider):
    """The configuration for mozbuild."""

    def __init__(self, settings):
        self.settings = settings

    @classmethod
    def _register_settings(cls):
        def register(section, option, type_cls, **kwargs):
            cls.register_setting(section, option, type_cls, domain='mozbuild',
                **kwargs)

        register('build', 'threads', PositiveIntegerType,
            default=multiprocessing.cpu_count())