Serialize read/missing makefiles
diff --git a/serialize.go b/serialize.go
index 9c5a9a3..7bcff03 100644
--- a/serialize.go
+++ b/serialize.go
@@ -88,11 +88,13 @@
}
type SerializableGraph struct {
- Nodes []*SerializableDepNode
- Vars map[string]SerializableVar
- Tsvs []SerializableTargetSpecificVar
- Targets []string
- Roots []string
+ Nodes []*SerializableDepNode
+ Vars map[string]SerializableVar
+ Tsvs []SerializableTargetSpecificVar
+ Targets []string
+ Roots []string
+ ReadMks []string
+ MissingMks []string
}
func encGob(v interface{}) string {
@@ -207,22 +209,24 @@
return r
}
-func MakeSerializableGraph(nodes []*DepNode, vars Vars, roots []string) SerializableGraph {
+func MakeSerializableGraph(g DepGraph, roots []string) SerializableGraph {
ns := NewDepNodesSerializer()
- ns.SerializeDepNodes(nodes)
- v := MakeSerializableVars(vars)
+ ns.SerializeDepNodes(g.nodes)
+ v := MakeSerializableVars(g.vars)
return SerializableGraph{
- Nodes: ns.nodes,
- Vars: v,
- Tsvs: ns.tsvs,
- Targets: ns.targets,
- Roots: roots,
+ Nodes: ns.nodes,
+ Vars: v,
+ Tsvs: ns.tsvs,
+ Targets: ns.targets,
+ Roots: roots,
+ ReadMks: g.readMks,
+ MissingMks: g.missingMks,
}
}
-func DumpDepGraphAsJson(nodes []*DepNode, vars Vars, filename string, roots []string) {
- g := MakeSerializableGraph(nodes, vars, roots)
- o, err := json.MarshalIndent(g, " ", " ")
+func DumpDepGraphAsJson(g DepGraph, filename string, roots []string) {
+ sg := MakeSerializableGraph(g, roots)
+ o, err := json.MarshalIndent(sg, " ", " ")
if err != nil {
panic(err)
}
@@ -233,17 +237,17 @@
f.Write(o)
}
-func DumpDepGraph(nodes []*DepNode, vars Vars, filename string, roots []string) {
+func DumpDepGraph(g DepGraph, filename string, roots []string) {
f, err := os.Create(filename)
if err != nil {
panic(err)
}
e := gob.NewEncoder(f)
startTime := time.Now()
- g := MakeSerializableGraph(nodes, vars, roots)
+ sg := MakeSerializableGraph(g, roots)
LogStats("serialize prepare time: %q", time.Now().Sub(startTime))
startTime = time.Now()
- e.Encode(g)
+ e.Encode(sg)
LogStats("serialize output time: %q", time.Now().Sub(startTime))
}
@@ -488,16 +492,21 @@
showSerializedTargetsStats(g.Targets)
}
-func DeserializeGraph(g SerializableGraph) ([]*DepNode, Vars) {
+func DeserializeGraph(g SerializableGraph) DepGraph {
if katiLogFlag || katiStatsFlag {
showSerializedGraphStats(g)
}
nodes := DeserializeNodes(g)
vars := DeserializeVars(g.Vars)
- return nodes, vars
+ return DepGraph{
+ nodes: nodes,
+ vars: vars,
+ readMks: g.ReadMks,
+ missingMks: g.MissingMks,
+ }
}
-func LoadDepGraphFromJson(filename string) ([]*DepNode, Vars) {
+func LoadDepGraphFromJson(filename string) DepGraph {
f, err := os.Open(filename)
if err != nil {
panic(err)
@@ -512,7 +521,7 @@
return DeserializeGraph(g)
}
-func LoadDepGraph(filename string) ([]*DepNode, Vars) {
+func LoadDepGraph(filename string) DepGraph {
f, err := os.Open(filename)
if err != nil {
panic(err)