diff options
author | Daniel Narvaez <dwnarvaez@gmail.com> | 2012-12-25 17:39:56 (GMT) |
---|---|---|
committer | Daniel Narvaez <dwnarvaez@gmail.com> | 2012-12-25 17:39:56 (GMT) |
commit | 3022a9c90a374a9c6ba402b6aede0a503bf6315e (patch) | |
tree | 86129b34ecb5655a7b22f2bb1cc4e45d734fd01c /devbot | |
parent | 1226f3dabfef23217d6052b42e18eb7340f5a7f4 (diff) |
Allow the config to require a full build
Diffstat (limited to 'devbot')
-rw-r--r-- | devbot/build.py | 5 | ||||
-rw-r--r-- | devbot/config.py | 9 | ||||
-rw-r--r-- | devbot/state.py | 15 |
3 files changed, 27 insertions, 2 deletions
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 |