diff options
-rw-r--r-- | brep/build | 9 | ||||
-rw-r--r-- | brep/build.cxx | 6 | ||||
-rw-r--r-- | brep/build.xml | 2 | ||||
-rw-r--r-- | mod/mod-build-log.cxx | 19 | ||||
-rw-r--r-- | mod/mod-build-task.cxx | 30 |
5 files changed, 53 insertions, 13 deletions
@@ -104,7 +104,9 @@ namespace brep // Create the build object with the testing state, non-existent status, // the timestamp set to now and the forced flag set to false. // - build (string name, version, string configuration); + build (string name, version, + string configuration, + string machine, string machine_summary); build_id id; @@ -126,6 +128,11 @@ namespace brep // optional<result_status> status; + // Present only if the state is 'testing' or 'tested'. + // + optional<string> machine; + optional<string> machine_summary; + // Note that the logs are stored as std::string/TEXT which is Ok since // they are UTF-8 and our database is UTF-8. // diff --git a/brep/build.cxx b/brep/build.cxx index 48235f5..d795ba6 100644 --- a/brep/build.cxx +++ b/brep/build.cxx @@ -33,14 +33,16 @@ namespace brep // build // build:: - build (string pnm, version pvr, string cfg) + build (string pnm, version pvr, string cfg, string mnm, string msm) : id (package_id (move (pnm), pvr), move (cfg)), package_name (id.package.name), package_version (move (pvr)), configuration (id.configuration), state (build_state::testing), timestamp (timestamp_type::clock::now ()), - forced (false) + forced (false), + machine (move (mnm)), + machine_summary (move (msm)) { } } diff --git a/brep/build.xml b/brep/build.xml index 2a222f4..8d9178a 100644 --- a/brep/build.xml +++ b/brep/build.xml @@ -13,6 +13,8 @@ <column name="timestamp" type="BIGINT" null="false"/> <column name="forced" type="BOOLEAN" null="false"/> <column name="status" type="TEXT" null="true"/> + <column name="machine" type="TEXT" null="true"/> + <column name="machine_summary" type="TEXT" null="true"/> <primary-key> <column name="package_name"/> <column name="package_version_epoch"/> diff --git a/mod/mod-build-log.cxx b/mod/mod-build-log.cxx index 5342e3e..543292a 100644 --- a/mod/mod-build-log.cxx +++ b/mod/mod-build-log.cxx @@ -197,9 +197,25 @@ handle (request& rq, response& rs) // ostream& os (rs.content (200, "text/plain;charset=utf-8", false)); + assert (b->machine && b->machine_summary); + + os << "package: " << b->package_name << endl + << "version: " << b->package_version << endl + << "config: " << b->configuration << endl + << "machine: " << *b->machine << " (" << *b->machine_summary << ")" + << endl + << "target: " << (i->target + ? i->target->string () + : "default") << endl << endl; + if (op.empty ()) { for (const auto& r: b->results) + os << r.operation << ": " << r.status << endl; + + os << endl; + + for (const auto& r: b->results) os << r.log; } else @@ -213,7 +229,8 @@ handle (request& rq, response& rs) if (i == r.end ()) config_expired ("no operation"); - os << i->log; + os << op << ": " << i->status << endl << endl + << i->log; } return true; diff --git a/mod/mod-build-task.cxx b/mod/mod-build-task.cxx index 63ea327..1c88759 100644 --- a/mod/mod-build-task.cxx +++ b/mod/mod-build-task.cxx @@ -106,7 +106,7 @@ handle (request& rq, response& rs) struct config_machine { const build_config* config; - const machine_header_manifest* machine; + machine_header_manifest* machine; }; using config_machines = map<const char*, config_machine, compare_c_string>; @@ -346,6 +346,7 @@ handle (request& rq, response& rs) if (!configs.empty ()) { config_machine& cm (configs.begin ()->second); + machine_header_manifest& mh (*cm.machine); build_id bid (move (id), cm.config->name); shared_ptr<build> b (build_db_->find<build> (bid)); @@ -357,7 +358,9 @@ handle (request& rq, response& rs) { b = make_shared<build> (move (bid.package.name), move (pv.version), - move (bid.configuration)); + move (bid.configuration), + mh.name, + move (mh.summary)); build_db_->persist (b); } @@ -389,6 +392,8 @@ handle (request& rq, response& rs) b->results.empty ()); b->state = build_state::testing; + b->machine = mh.name; + b->machine_summary = move (mh.summary); b->timestamp = timestamp::clock::now (); build_db_->update (b); @@ -474,6 +479,14 @@ handle (request& rq, response& rs) ? forced_rebuild_expiration : normal_rebuild_expiration)) { + auto i (cfg_machines.find (b->id.configuration.c_str ())); + + // Only actual package configurations are loaded (see above). + // + assert (i != cfg_machines.end ()); + const config_machine& cm (i->second); + const machine_header_manifest& mh (*cm.machine); + // Load the package (if still present). // transaction pt (package_db_->begin (), false); @@ -495,6 +508,11 @@ handle (request& rq, response& rs) assert (b->status); b->state = build_state::testing; + b->machine = mh.name; + + // Can't move from, as may need it on the next iteration. + // + b->machine_summary = mh.summary; // Mark the section as loaded, so results are updated. // @@ -505,13 +523,7 @@ handle (request& rq, response& rs) build_db_->update (b); - auto i (cfg_machines.find (b->id.configuration.c_str ())); - - // Only actual package configurations are loaded (see above). - // - assert (i != cfg_machines.end ()); - - tsm = task (move (b), move (p), i->second); + tsm = task (move (b), move (p), cm); } } |