/*
-goredo -- redo implementation on pure Go
-Copyright (C) 2020 Sergey Matveev <stargrave@stargrave.org>
+goredo -- djb's redo implementation on pure Go
+Copyright (C) 2020-2021 Sergey Matveev <stargrave@stargrave.org>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
trace(CDebug, "collecting deps")
seen := map[string]struct{}{}
deps := map[string]map[string]struct{}{}
- for _, tgt := range tgts {
- for _, tgt := range collectDeps(Cwd, tgt, 0, deps) {
- seen[tgt] = struct{}{}
+ for _, tgtInitial := range tgts {
+ for _, tgt := range collectDeps(Cwd, tgtInitial, 0, deps) {
+ if tgt != tgtInitial {
+ seen[tgt] = struct{}{}
+ }
}
}
if len(seen) == 0 {
Jobs.Wait()
close(errs)
if !ok {
- trace(CDebug, "alwayses failed, skipping depdendants")
+ trace(CDebug, "alwayses failed, skipping dependants")
return nil
}
var err error
for _, tgt := range tgts {
if _, ok := seen[tgt]; ok {
- trace(CDebug, "%s was already build as a dependenant", tgt)
+ trace(CDebug, "%s was already build as a dependant", tgt)
continue
}
ood = true