trace(CDebug, "building %d alwayses: %v", len(seen), seen)
errs := make(chan error, len(seen))
for tgt, _ := range seen {
- if err := runScript(tgt, errs); err != nil {
+ if err := runScript(tgt, errs, false); err != nil {
trace(CErr, "always run error: %s, skipping dependants", err)
return nil
}
if !ood {
continue
}
- if err := runScript(tgt, errs); err != nil {
+ if err := runScript(tgt, errs, false); err != nil {
trace(CErr, "dependant error: %s, skipping dependants", err)
return nil
}
goto RebuildDeps
}
-func ifchange(tgts []string, forced bool) (bool, error) {
+func ifchange(tgts []string, forced, traced bool) (bool, error) {
jsInit()
defer jsAcquire("ifchange exiting")
defer Jobs.Wait()
trace(CDebug, "%s is source, not redoing", tgt)
continue
}
- if err = runScript(tgt, errs); err != nil {
+ if err = runScript(tgt, errs, traced); err != nil {
return false, err
}
jobs++
if Debug || os.Getenv(EnvLogPid) == "1" {
MyPid = os.Getpid()
}
+ var traced bool
if *flagTrace {
- Trace = true
+ traced = true
} else {
- Trace = os.Getenv(EnvTrace) == "1"
+ traced = os.Getenv(EnvTrace) == "1"
}
// Those are internal envs
switch cmdName {
case "redo":
for _, tgt := range tgts {
- ok, err = ifchange([]string{tgt}, true)
+ ok, err = ifchange([]string{tgt}, true, traced)
if err != nil || !ok {
break
}
}
case "redo-ifchange":
- ok, err = ifchange(tgts, false)
+ ok, err = ifchange(tgts, false, traced)
writeDeps(fdDep, tgts)
case "redo-ifcreate":
if fdDep == nil {
)
var (
- Trace bool = false
NoSync bool = false
StderrKeep bool = false
StderrSilent bool = false
return err
}
-func runScript(tgtOrig string, errs chan error) error {
+func runScript(tgtOrig string, errs chan error, traced bool) error {
cwd, tgt := cwdAndTgt(tgtOrig)
redoDir := path.Join(cwd, RedoDir)
if err := mkdirs(redoDir); err != nil {
} else {
// Shell
cmdName = "/bin/sh"
- if Trace {
+ if traced {
args = append(args, "-ex")
} else {
args = append(args, "-e")