From ce54fa1868a889f481d95686b5fec415c18312ba Mon Sep 17 00:00:00 2001 From: Daniel Jones Date: Sun, 28 Jul 2013 21:16:50 -0700 Subject: [PATCH] Fix expanded bracketed sigils. --- expand.go | 4 ++-- mk.go | 9 ++++++--- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/expand.go b/expand.go index 0af4595..8baafb5 100644 --- a/expand.go +++ b/expand.go @@ -126,8 +126,8 @@ func expandSigil(input string, vars map[string][]string) ([]string, int) { return []string{"$" + input}, len(input) } - varname = input[w:j] - offset = j + 1 + varname = input[w : w+j] + offset = w + j + 1 } else { // try to match a variable name i := 0 diff --git a/mk.go b/mk.go index 84ee880..4d057bc 100644 --- a/mk.go +++ b/mk.go @@ -98,7 +98,7 @@ func mkNodePrereqs(g *graph, u *node, e *edge, prereqs []*node, dryrun bool, for i := range prereqs { prereqs[i].mutex.Lock() switch prereqs[i].status { - case nodeStatusReady: + case nodeStatusReady, nodeStatusNop: go mkNode(g, prereqs[i], dryrun, required) fallthrough case nodeStatusStarted: @@ -134,7 +134,7 @@ func mkNodePrereqs(g *graph, u *node, e *edge, prereqs []*node, dryrun bool, func mkNode(g *graph, u *node, dryrun bool, required bool) { // try to claim on this node u.mutex.Lock() - if u.status != nodeStatusReady { + if u.status != nodeStatusReady && u.status != nodeStatusNop { u.mutex.Unlock() return } else { @@ -151,6 +151,7 @@ func mkNode(g *graph, u *node, dryrun bool, required bool) { for i := range u.listeners { u.listeners[i] <- u.status } + u.listeners = u.listeners[0:0] }() // there's no fucking rules, dude @@ -188,7 +189,9 @@ func mkNode(g *graph, u *node, dryrun bool, required bool) { uptodate := true if !e.r.attributes.virtual { u.updateTimestamp() - if u.exists || required { + if !u.exists && required { + uptodate = false + } else if u.exists || required { for i := range prereqs { if u.t.Before(prereqs[i].t) || prereqs[i].status == nodeStatusDone { uptodate = false