[gnome-ostree] build: Add --status-json-file argument



commit 833e6b84f7bf87161109ea1586c45bb5f28d50c3
Author: Colin Walters <walters verbum org>
Date:   Thu Aug 16 08:45:56 2012 -0400

    build: Add --status-json-file argument
    
    This can be used by the web interface.

 src/ostbuild/pyostbuild/builtin_build.py |   23 +++++++++++++++++++++++
 1 files changed, 23 insertions(+), 0 deletions(-)
---
diff --git a/src/ostbuild/pyostbuild/builtin_build.py b/src/ostbuild/pyostbuild/builtin_build.py
index 1350b7d..ce89d78 100755
--- a/src/ostbuild/pyostbuild/builtin_build.py
+++ b/src/ostbuild/pyostbuild/builtin_build.py
@@ -114,6 +114,9 @@ class OstbuildBuild(builtins.Builtin):
     def _build_one_component(self, component, architecture):
         basename = component['name']
 
+        self._write_status({'status': 'building',
+                            'target': basename})
+
         buildname = '%s/%s/%s' % (self.snapshot['prefix'], basename, architecture)
         build_ref = 'components/%s' % (buildname, )
 
@@ -318,11 +321,24 @@ class OstbuildBuild(builtins.Builtin):
         os.unlink(related_tmppath)
         shutil.rmtree(compose_rootdir)
 
+    def _write_status(self, data):
+        if not self.args.status_json_path:
+            return
+        (fd, temppath) = tempfile.mkstemp(suffix='.tmp', prefix='status-json-',
+                                          dir=os.path.dirname(self.args.status_json_path))
+        os.close(fd)
+        f = open(temppath, 'w')
+        json.dump(data, f, indent=4, sort_keys=True)
+        f.close()
+        os.rename(temppath, self.args.status_json_path)
+
     def execute(self, argv):
         parser = argparse.ArgumentParser(description=self.short_description)
         parser.add_argument('--prefix')
         parser.add_argument('--src-snapshot')
         parser.add_argument('--patches-path')
+        parser.add_argument('--status-json-path',
+                            help="Write data to this JSON file as build progresses")
         parser.add_argument('--force-rebuild', action='store_true')
         parser.add_argument('--skip-vcs-matches', action='store_true')
         parser.add_argument('--no-compose', action='store_true')
@@ -339,6 +355,8 @@ class OstbuildBuild(builtins.Builtin):
 
         log("Using source snapshot: %s" % (os.path.basename(self.snapshot_path), ))
 
+        self._write_status({'state': 'build-starting'})
+
         self.buildopts = BuildOptions()
         self.buildopts.shell_on_failure = args.shell_on_failure
         self.buildopts.force_rebuild = args.force_rebuild
@@ -413,6 +431,9 @@ class OstbuildBuild(builtins.Builtin):
                                   'runtime': runtime_ref,
                                   'devel': buildroot_ref}
 
+                self._write_status({'status': 'composing',
+                                    'target': target['name']})
+
                 if target_component_type == 'runtime':
                     target_components = runtime_components
                 else:
@@ -438,4 +459,6 @@ class OstbuildBuild(builtins.Builtin):
         for target in targets_list:
             self._compose_one_target(target, component_build_revs)
 
+        self._write_status({'status': 'complete'})
+
 builtins.register(OstbuildBuild)



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]