hydra-eval-jobs: Fix building against the latest unstable Nix
[?]
Jan 12, 2014, 4:37 PM
5X6FHW3SHOE5R37WJPLKNVJM6VWFT6SNRMC5OFFCCW3IGC4ORY2QCDependencies
- [2]
PMNWRTGJAdd multiple output support - [3]
DPYJFBXUhydra-eval-jobs: Support meta.license being a list - [4]
5MNUNZWR* Store meta.maintainers. - [5]
ZTQEU5QSHydra: Add support for maxSilent meta attribute (also already added timeout, but not implemented the actual timeout for the build yet) - [6]
3PNG7NIBRemove trailing whitespace - [7]
JTHWA6AMRename aggregate members to constituents - [8]
7YCFGMZB* Report evaluation errors per job, and don't bail out if a job fails - [9]
YGRLM2SK* Export all relevant info about the derivation. - [10]
KD5237CU* eval-jobs now efficiently evaluates all Hydra jobs from a - [11]
FMJMW4PU - [12]
POPU2ATH* hydra_scheduler: use eval-jobs. - [13]
4LWGZL33 - [14]
A63IHCMX* Register GC roots properly. - [15]
HVXL2XUZ - [16]
AEKIREIH* Updated hydra_eval_jobs for the new evaluator. - [*]
4N5APGRG* Start of a helper tool to evaluate job expressions efficiently.
Change contents
- replacement in src/c/hydra-eval-jobs.cc at line 92
static string queryMetaFieldString(MetaInfo & meta, const string & name)static string queryMetaStrings(EvalState & state, DrvInfo & drv, const string & name) - replacement in src/c/hydra-eval-jobs.cc at line 94[4.296]→[4.296:417](∅→∅),[4.417]→[4.800:801](∅→∅),[4.801]→[4.422:713](∅→∅),[4.422]→[4.422:713](∅→∅),[4.713]→[4.306:312](∅→∅),[4.306]→[4.306:312](∅→∅),[4.312]→[4.714:730](∅→∅),[4.730]→[3.0:386](∅→∅)
MetaValue value = meta[name];if (value.type != MetaValue::tpString) return "";return value.stringValue;}static int queryMetaFieldInt(MetaInfo & meta, const string & name, int def){MetaValue value = meta[name];if (value.type == MetaValue::tpInt) return value.intValue;if (value.type == MetaValue::tpString) {int n;if (string2Int(value.stringValue, n)) return n;}return def;}static string queryMetaField(MetaInfo & meta, const string & name){string res;MetaValue value = meta[name];if (value.type == MetaValue::tpString)res = value.stringValue;else if (value.type == MetaValue::tpStrings) {foreach (Strings::const_iterator, i, value.stringValues) {if (res.size() != 0) res += ", ";res += *i;Value * v = drv.queryMeta(name);if (v) {state.forceValue(*v);if (v->type == tString)return v->string.s;else if (v->type == tList) {string res = "";for (unsigned int n = 0; n < v->list.length; ++n) {Value v2(*v->list.elems[n]);state.forceValue(v2);if (v2.type == tString) {if (res.size() != 0) res += ", ";res += v2.string.s;}}return res; - replacement in src/c/hydra-eval-jobs.cc at line 112
return res;return ""; - replacement in src/c/hydra-eval-jobs.cc at line 128
DrvInfo drv;DrvInfo drv(state); - replacement in src/c/hydra-eval-jobs.cc at line 134
DrvInfo::Outputs outputs = drv.queryOutputs(state);DrvInfo::Outputs outputs = drv.queryOutputs(); - replacement in src/c/hydra-eval-jobs.cc at line 139[4.158]→[4.56:125](∅→∅),[4.276]→[4.759:983](∅→∅),[4.983]→[3.419:486](∅→∅),[3.486]→[4.1056:1131](∅→∅),[4.1056]→[4.1056:1131](∅→∅),[4.1131]→[3.487:562](∅→∅)
xmlAttrs["drvPath"] = drvPath = drv.queryDrvPath(state);MetaInfo meta = drv.queryMetaInfo(state);xmlAttrs["description"] = queryMetaFieldString(meta, "description");xmlAttrs["longDescription"] = queryMetaFieldString(meta, "longDescription");xmlAttrs["license"] = queryMetaField(meta, "license");xmlAttrs["homepage"] = queryMetaFieldString(meta, "homepage");xmlAttrs["maintainers"] = queryMetaField(meta, "maintainers");xmlAttrs["drvPath"] = drvPath = drv.queryDrvPath();xmlAttrs["description"] = drv.queryMetaString("description");xmlAttrs["longDescription"] = drv.queryMetaString("longDescription");xmlAttrs["license"] = queryMetaStrings(state, drv, "license");xmlAttrs["homepage"] = drv.queryMetaString("homepage");xmlAttrs["maintainers"] = queryMetaStrings(state, drv, "maintainers"); - replacement in src/c/hydra-eval-jobs.cc at line 146
int prio = queryMetaFieldInt(meta, "schedulingPriority", 100);xmlAttrs["schedulingPriority"] = int2String(prio);xmlAttrs["schedulingPriority"] = int2String(drv.queryMetaInt("schedulingPriority", 100)); - replacement in src/c/hydra-eval-jobs.cc at line 148
int timeout = queryMetaFieldInt(meta, "timeout", 36000);xmlAttrs["timeout"] = int2String(timeout);xmlAttrs["timeout"] = int2String(drv.queryMetaInt("timeout", 36000)); - replacement in src/c/hydra-eval-jobs.cc at line 150
int maxsilent = queryMetaFieldInt(meta, "maxSilent", 3600);xmlAttrs["maxSilent"] = int2String(maxsilent);xmlAttrs["maxSilent"] = int2String(drv.queryMetaInt("maxSilent", 3600));