From 3022a9c90a374a9c6ba402b6aede0a503bf6315e Mon Sep 17 00:00:00 2001 From: Daniel Narvaez Date: Tue, 25 Dec 2012 17:39:56 +0000 Subject: Allow the config to require a full build --- (limited to 'devbot') diff --git a/devbot/build.py b/devbot/build.py index 640ba01..06d6874 100644 --- a/devbot/build.py +++ b/devbot/build.py @@ -48,6 +48,11 @@ def build(): _ccache_reset() + if state.full_build_is_required(): + clean() + + state.full_build_touch() + for module in config.load_modules(): if state.built_module_is_unchanged(module): print "\n* Skipping unchanged module %s *" % module.name diff --git a/devbot/config.py b/devbot/config.py index dba6709..3a396cd 100644 --- a/devbot/config.py +++ b/devbot/config.py @@ -247,7 +247,14 @@ def _read_index(dir_name, extra=[]): with open(os.path.join(index_dir, "index.json")) as f: files.extend(json.load(f)) return [os.path.join(index_dir, json_file) for json_file in files] - + +def get_full_build(): + config = None + with open(os.path.join(config_dir, "config.json")) as f: + config = json.load(f) + + return config["full_build"] + def load_packages(): packages = {} diff --git a/devbot/state.py b/devbot/state.py index 3cb3e42..b44652f 100644 --- a/devbot/state.py +++ b/devbot/state.py @@ -6,6 +6,7 @@ from devbot import config from devbot import git _BUILT_MODULES = "builtmodules" +_FULL_BUILD = "fullbuild" _SYSTEM_CHECK = "syscheck" def _get_state_path(name): @@ -76,13 +77,25 @@ def system_check_touch(): system_check["commit"] = _get_root_commit_id() _save_state(_SYSTEM_CHECK, system_check) +def full_build_is_required(): + full_build = _load_state(_FULL_BUILD) + if not full_build: + return True + + return not (full_build["last"] == config.get_full_build()) + +def full_build_touch(): + full_build = _load_state(_FULL_BUILD, {}) + full_build["last"] = config.get_full_build() + _save_state(_FULL_BUILD, full_build) + def clean(): _state = None print "Deleting state" try: - for name in _BUILT_MODULES, _SYSTEM_CHECK: + for name in _BUILT_MODULES, _SYSTEM_CHECK, _FULL_BUILD: os.unlink(_get_state_path(name)) except OSError: pass -- cgit v0.9.1