ifchange.go | 4 +++- main.go | 2 ++ diff --git a/ifchange.go b/ifchange.go index 1ad18baa0b768967745461efd01fc1d9d17055b5477c203ee296ae15df38f767..a1148ac4aeb929335491498d1cfe4e1842fd7c9573ee1479c4285d4bf04f89a7 100644 --- a/ifchange.go +++ b/ifchange.go @@ -180,7 +180,9 @@ } func ifchange(tgts []string, forced, traced bool) (bool, error) { jsInit() - defer jsAcquire("ifchange exiting") + if !IsTopRedo { + defer jsAcquire("ifchange exiting") + } defer Jobs.Wait() seen := buildDependants(tgts) oodTgtsClear() diff --git a/main.go b/main.go index 862d2dde6b147366d11bc3b44b747ea8be3f18ea40123b1f90e0d7aa6e7681f6..c5d044ca08a5af683cdda1da3ee9a7e85b589b84f98771e2cba3f531970e8b6c 100644 --- a/main.go +++ b/main.go @@ -40,6 +40,7 @@ var ( Cwd string BuildUUID string + IsTopRedo bool // is it the top redo instance ) func mustSetenv(key, value string) { @@ -229,6 +230,7 @@ tgts := flag.Args() BuildUUID = os.Getenv(EnvBuildUUID) tgtsWasEmpty := len(tgts) == 0 if BuildUUID == "" { + IsTopRedo = true raw := new([16]byte) if _, err = io.ReadFull(rand.Reader, raw[:]); err != nil { log.Fatalln(err)