def test_faster_recursive_make(self): substs = list(BASE_SUBSTS) + [ ('BUILD_BACKENDS', 'FasterMake+RecursiveMake'), ] with self.do_test_backend( get_backend_class('FasterMake+RecursiveMake'), substs=substs) as config: buildid = mozpath.join(config.topobjdir, 'config', 'buildid') ensureParentDir(buildid) with open(buildid, 'w') as fh: fh.write('20100101012345\n') build = MozbuildObject(config.topsrcdir, None, None, config.topobjdir) overrides = [ 'install_manifest_depends=', 'MOZ_JAR_MAKER_FILE_FORMAT=flat', 'TEST_MOZBUILD=1', ] with self.line_handler() as handle_make_line: build._run_make(directory=config.topobjdir, target=overrides, silent=False, line_handler=handle_make_line) self.validate(config)
def test_faster_make(self): substs = list(BASE_SUBSTS) + [ ('MOZ_BUILD_APP', 'dummy_app'), ('MOZ_WIDGET_TOOLKIT', 'dummy_widget'), ] with self.do_test_backend(RecursiveMakeBackend, FasterMakeBackend, substs=substs) as config: buildid = mozpath.join(config.topobjdir, 'config', 'buildid') ensureParentDir(buildid) with open(buildid, 'w') as fh: fh.write('20100101012345\n') build = MozbuildObject(config.topsrcdir, None, None, config.topobjdir) overrides = [ 'TEST_MOZBUILD=1', ] with self.line_handler() as handle_make_line: build._run_make(directory=mozpath.join(config.topobjdir, 'faster'), target=overrides, silent=False, line_handler=handle_make_line) self.validate(config)
def test_faster_make(self): substs = list(BASE_SUBSTS) + [ ("MOZ_BUILD_APP", "dummy_app"), ("MOZ_WIDGET_TOOLKIT", "dummy_widget"), ] with self.do_test_backend(RecursiveMakeBackend, FasterMakeBackend, substs=substs) as config: buildid = mozpath.join(config.topobjdir, "config", "buildid") ensureParentDir(buildid) with open(buildid, "w") as fh: fh.write("20100101012345\n") build = MozbuildObject(config.topsrcdir, None, None, config.topobjdir) build._config_environment = config overrides = [ "TEST_MOZBUILD=1", ] with self.line_handler() as handle_make_line: build._run_make( directory=mozpath.join(config.topobjdir, "faster"), target=overrides, silent=False, line_handler=handle_make_line, ) self.validate(config)
def test_faster_recursive_make(self): substs = list(BASE_SUBSTS) + [ ("BUILD_BACKENDS", "FasterMake+RecursiveMake"), ] with self.do_test_backend( get_backend_class("FasterMake+RecursiveMake"), substs=substs) as config: buildid = mozpath.join(config.topobjdir, "config", "buildid") ensureParentDir(buildid) with open(buildid, "w") as fh: fh.write("20100101012345\n") build = MozbuildObject(config.topsrcdir, None, None, config.topobjdir) build._config_environment = config overrides = [ "install_manifest_depends=", "MOZ_JAR_MAKER_FILE_FORMAT=flat", "TEST_MOZBUILD=1", ] with self.line_handler() as handle_make_line: build._run_make( directory=config.topobjdir, target=overrides, silent=False, line_handler=handle_make_line, ) self.validate(config)
def _init(self): CommonBackend._init(self) log_manager = LoggingManager() self._cmd = MozbuildObject(self.environment.topsrcdir, ConfigSettings(), log_manager, self.environment.topobjdir) self._install_mapping = {} self.manifest_handler = ChromeManifestHandler()
def _get_resolver(self): topobjdir = tempfile.mkdtemp() self._temp_dirs.append(topobjdir) with open(os.path.join(topobjdir, 'all-tests.json'), 'wt') as fh: fh.write(ALL_TESTS_JSON) o = MozbuildObject(self.FAKE_TOPSRCDIR, None, None, topobjdir=topobjdir) return o._spawn(TestResolver)
def _init(self): CommonBackend._init(self) if not util.check_top_objdir(self.environment.topobjdir): raise Exception() # The database we're going to dump out to. self._db = [] # The cache for per-directory flags self._flags = {} log_manager = LoggingManager() self._cmd = MozbuildObject(self.environment.topsrcdir, ConfigSettings(), log_manager, self.environment.topobjdir)
def _get_resolver(self): topobjdir = tempfile.mkdtemp() self._temp_dirs.append(topobjdir) with open(os.path.join(topobjdir, 'all-tests.pkl'), 'wb') as fh: pickle.dump(ALL_TESTS, fh) with open(os.path.join(topobjdir, 'test-defaults.pkl'), 'wb') as fh: pickle.dump(TEST_DEFAULTS, fh) o = MozbuildObject(self.FAKE_TOPSRCDIR, None, None, topobjdir=topobjdir) # Monkey patch the test resolver to avoid tests failing to find make # due to our fake topscrdir. TestResolver._run_make = lambda *a, **b: None return o._spawn(TestResolver)
def test_recursive_make(self): substs = list(BASE_SUBSTS) with self.do_test_backend(RecursiveMakeBackend, substs=substs) as config: build = MozbuildObject(config.topsrcdir, None, None, config.topobjdir) overrides = [ 'install_manifest_depends=', 'MOZ_JAR_MAKER_FILE_FORMAT=flat', 'TEST_MOZBUILD=1', ] with self.line_handler() as handle_make_line: build._run_make(directory=config.topobjdir, target=overrides, silent=False, line_handler=handle_make_line) self.validate(config)
def _get_resolver(self): topobjdir = tempfile.mkdtemp() self._temp_dirs.append(topobjdir) with open(os.path.join(topobjdir, 'all-tests.json'), 'wt') as fh: fh.write(ALL_TESTS_JSON) o = MozbuildObject(self.FAKE_TOPSRCDIR, None, None, topobjdir=topobjdir) # Monkey patch the test resolver to avoid tests failing to find make # due to our fake topscrdir. TestResolver._run_make = lambda *a, **b: None return o._spawn(TestResolver)
def main(argv=sys.argv[1:]): """Used when the runner is directly called from the shell """ _setup_path() from mozbuild.mozconfig import MozconfigLoader from mozbuild.base import MachCommandBase, MozbuildObject from mozperftest import PerftestArgumentParser from mozboot.util import get_state_dir from mach.logging import LoggingManager mozconfig = SRC_ROOT / "browser" / "config" / "mozconfig" if mozconfig.exists(): os.environ["MOZCONFIG"] = str(mozconfig) if "--xpcshell-mozinfo" in argv: mozinfo = argv[argv.index("--xpcshell-mozinfo") + 1] topobjdir = Path(mozinfo).parent else: topobjdir = None config = MozbuildObject( str(SRC_ROOT), None, LoggingManager(), topobjdir=topobjdir, mozconfig=MozconfigLoader.AUTODETECT, ) config.topdir = config.topsrcdir config.cwd = os.getcwd() config.state_dir = get_state_dir() # This monkey patch forces mozbuild to reuse # our configuration when it tries to re-create # it from the environment. def _here(*args, **kw): return config MozbuildObject.from_environment = _here mach_cmd = MachCommandBase(config) parser = PerftestArgumentParser(description="vanilla perftest") args = parser.parse_args(args=argv) run_tests(mach_cmd, **dict(args._get_kwargs()))
def test_mozconfig_opt_in(self): """Auto clobber iff AUTOCLOBBER is in the environment.""" topsrcdir = self.get_topsrcdir() topobjdir = self.get_tempdir() obj_clobber = os.path.join(topobjdir, 'CLOBBER') with open(obj_clobber, 'a'): pass dummy_file = os.path.join(topobjdir, 'dummy_file') with open(dummy_file, 'a'): pass self.assertTrue(os.path.exists(dummy_file)) old_time = os.path.getmtime(os.path.join(topsrcdir, 'CLOBBER')) - 60 os.utime(obj_clobber, (old_time, old_time)) # Check auto clobber is off by default env = dict(os.environ) if env.get('AUTOCLOBBER', False): del env['AUTOCLOBBER'] mbo = MozbuildObject(topsrcdir, None, None, topobjdir) build = mbo._spawn(BuildDriver) status = build._check_clobber(build.mozconfig, env) self.assertEqual(status, True) self.assertTrue(os.path.exists(dummy_file)) # Check auto clobber opt-in works env['AUTOCLOBBER'] = '1' status = build._check_clobber(build.mozconfig, env) self.assertFalse(status) self.assertFalse(os.path.exists(dummy_file))
def _init(self): CommonBackend._init(self) if not util.check_top_objdir(self.environment.topobjdir): raise Exception() # The database we're going to dump out to. self._db = OrderedDict() # The cache for per-directory flags self._flags = {} log_manager = LoggingManager() self._cmd = MozbuildObject(self.environment.topsrcdir, ConfigSettings(), log_manager, self.environment.topobjdir) self._envs = {} self._includes = defaultdict(list) self._defines = defaultdict(list) self._local_flags = defaultdict(dict) self._extra_includes = defaultdict(list) self._gyp_dirs = set() self._dist_include_testing = '-I%s' % mozpath.join( self.environment.topobjdir, 'dist', 'include', 'testing')
def environment(self, verbose=False): import platform print('platform:\n\t%s' % platform.platform()) print('python version:\n\t%s' % sys.version) print('python prefix:\n\t%s' % sys.prefix) print('mach cwd:\n\t%s' % self.context.cwd) print('os cwd:\n\t%s' % os.getcwd()) print('mach directory:\n\t%s' % self.context.topdir) print('state directory:\n\t%s' % self.context.state_dir) mb = MozbuildObject(self.context.topdir, self.context.settings, self.context.log_manager) mozconfig = None try: mozconfig = mb.mozconfig print('mozconfig path:\n\t%s' % mozconfig['path']) except MozconfigFindException as e: print('Unable to find mozconfig: %s' % e.message) return 1 except MozconfigLoadException as e: print('Error loading mozconfig: %s' % e.path) print(e.message) if e.output: print('mozconfig evaluation output:') for line in e.output: print(line) return 1 print('object directory:\n\t%s' % mb.topobjdir) if mozconfig: print('mozconfig configure args:') if mozconfig['configure_args']: for arg in mozconfig['configure_args']: print('\t%s' % arg) print('mozconfig extra make args:') if mozconfig['make_extra']: for arg in mozconfig['make_extra']: print('\t%s' % arg) print('mozconfig make flags:') if mozconfig['make_flags']: for arg in mozconfig['make_flags']: print('\t%s' % arg) config = None try: config = mb.config_environment except Exception: pass if config: print('config topsrcdir:\n\t%s' % config.topsrcdir) print('config topobjdir:\n\t%s' % config.topobjdir) if verbose: print('config substitutions:') for k in sorted(config.substs): print('\t%s: %s' % (k, config.substs[k])) print('config defines:') for k in sorted(config.defines): print('\t%s' % k)
def get_base(self): settings = ConfigSettings() settings.register_provider(BuildConfig) return MozbuildObject(topsrcdir, settings, log_manager)
def get_base(self, topobjdir=None): return MozbuildObject(topsrcdir, None, log_manager, topobjdir=topobjdir)
def get_base(self): return MozbuildObject(topsrcdir, None, log_manager)