diff options
Diffstat (limited to 'src/nix-store/dotgraph.cc')
-rw-r--r-- | src/nix-store/dotgraph.cc | 128 |
1 files changed, 64 insertions, 64 deletions
diff --git a/src/nix-store/dotgraph.cc b/src/nix-store/dotgraph.cc index a333d7351010..8735cf9b667b 100644 --- a/src/nix-store/dotgraph.cc +++ b/src/nix-store/dotgraph.cc @@ -20,8 +20,8 @@ static string nextColour() { static int n = 0; static string colours[] = - { "black", "red", "green", "blue" - , "magenta", "burlywood" }; + { "black", "red", "green", "blue" + , "magenta", "burlywood" }; return colours[n++ % (sizeof(colours) / sizeof(string))]; } @@ -29,7 +29,7 @@ static string nextColour() static string makeEdge(const string & src, const string & dst) { format f = format("%1% -> %2% [color = %3%];\n") - % dotQuote(src) % dotQuote(dst) % dotQuote(nextColour()); + % dotQuote(src) % dotQuote(dst) % dotQuote(nextColour()); return f.str(); } @@ -38,8 +38,8 @@ static string makeNode(const string & id, const string & label, const string & colour) { format f = format("%1% [label = %2%, shape = box, " - "style = filled, fillcolor = %3%];\n") - % dotQuote(id) % dotQuote(label) % dotQuote(colour); + "style = filled, fillcolor = %3%];\n") + % dotQuote(id) % dotQuote(label) % dotQuote(colour); return f.str(); } @@ -65,51 +65,51 @@ void printClosure(const Path & nePath, const StoreExpr & fs) PathSet doneSet; for (PathSet::iterator i = workList.begin(); i != workList.end(); ++i) { - cout << makeEdge(pathLabel(nePath, *i), nePath); + cout << makeEdge(pathLabel(nePath, *i), nePath); } while (!workList.empty()) { - Path path = *(workList.begin()); - workList.erase(path); - - if (doneSet.find(path) == doneSet.end()) { - doneSet.insert(path); - - ClosureElems::const_iterator elem = fs.closure.elems.find(path); - if (elem == fs.closure.elems.end()) - throw Error(format("bad closure, missing path ‘%1%’") % path); - - for (StringSet::const_iterator i = elem->second.refs.begin(); - i != elem->second.refs.end(); ++i) - { - workList.insert(*i); - cout << makeEdge(pathLabel(nePath, *i), pathLabel(nePath, path)); - } - - cout << makeNode(pathLabel(nePath, path), - symbolicName(path), "#ff0000"); - } + Path path = *(workList.begin()); + workList.erase(path); + + if (doneSet.find(path) == doneSet.end()) { + doneSet.insert(path); + + ClosureElems::const_iterator elem = fs.closure.elems.find(path); + if (elem == fs.closure.elems.end()) + throw Error(format("bad closure, missing path ‘%1%’") % path); + + for (StringSet::const_iterator i = elem->second.refs.begin(); + i != elem->second.refs.end(); ++i) + { + workList.insert(*i); + cout << makeEdge(pathLabel(nePath, *i), pathLabel(nePath, path)); + } + + cout << makeNode(pathLabel(nePath, path), + symbolicName(path), "#ff0000"); + } } } #endif -void printDotGraph(const PathSet & roots) +void printDotGraph(ref<Store> store, const PathSet & roots) { PathSet workList(roots); PathSet doneSet; - + cout << "digraph G {\n"; while (!workList.empty()) { - Path path = *(workList.begin()); - workList.erase(path); + Path path = *(workList.begin()); + workList.erase(path); - if (doneSet.find(path) != doneSet.end()) continue; + if (doneSet.find(path) != doneSet.end()) continue; doneSet.insert(path); cout << makeNode(path, symbolicName(path), "#ff0000"); - + PathSet references; store->queryReferences(path, references); @@ -121,42 +121,42 @@ void printDotGraph(const PathSet & roots) cout << makeEdge(*i, path); } } - - -#if 0 - StoreExpr ne = storeExprFromPath(path); - - string label, colour; - - if (ne.type == StoreExpr::neDerivation) { - for (PathSet::iterator i = ne.derivation.inputs.begin(); - i != ne.derivation.inputs.end(); ++i) - { - workList.insert(*i); - cout << makeEdge(*i, path); - } - - label = "derivation"; - colour = "#00ff00"; - for (StringPairs::iterator i = ne.derivation.env.begin(); - i != ne.derivation.env.end(); ++i) - if (i->first == "name") label = i->second; - } - - else if (ne.type == StoreExpr::neClosure) { - label = "<closure>"; - colour = "#00ffff"; - printClosure(path, ne); - } - - else abort(); - - cout << makeNode(path, label, colour); + + +#if 0 + StoreExpr ne = storeExprFromPath(path); + + string label, colour; + + if (ne.type == StoreExpr::neDerivation) { + for (PathSet::iterator i = ne.derivation.inputs.begin(); + i != ne.derivation.inputs.end(); ++i) + { + workList.insert(*i); + cout << makeEdge(*i, path); + } + + label = "derivation"; + colour = "#00ff00"; + for (StringPairs::iterator i = ne.derivation.env.begin(); + i != ne.derivation.env.end(); ++i) + if (i->first == "name") label = i->second; + } + + else if (ne.type == StoreExpr::neClosure) { + label = "<closure>"; + colour = "#00ffff"; + printClosure(path, ne); + } + + else abort(); + + cout << makeNode(path, label, colour); #endif } cout << "}\n"; } - + } |