X-Git-Url: http://www.git.cypherpunks.ru/?a=blobdiff_plain;f=buildlog.go;h=f04efa41e2bf269251b2c56824eaa4d3e48e9581;hb=HEAD;hp=956cf4fdc9aa353b5abfca806e19cc8ae19c56ac;hpb=3f8ee87bd625a38b57a0a38e3c34bb26fe6e1b8e;p=goredo.git diff --git a/buildlog.go b/buildlog.go index 956cf4f..f04efa4 100644 --- a/buildlog.go +++ b/buildlog.go @@ -1,19 +1,17 @@ -/* -goredo -- djb's redo implementation on pure Go -Copyright (C) 2020-2023 Sergey Matveev - -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 -the Free Software Foundation, version 3 of the License. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ +// goredo -- djb's redo implementation on pure Go +// Copyright (C) 2020-2024 Sergey Matveev +// +// 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 +// the Free Software Foundation, version 3 of the License. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . package main @@ -75,7 +73,8 @@ func init() { } func parseBuildLogRec(tgt *Tgt) (map[string][]string, error) { - fd, err := os.Open(path.Join(tgt.h, RedoDir, tgt.t+LogRecSuffix)) + h, t := path.Split(tgt.a) + fd, err := os.Open(path.Join(h, RedoDir, t+LogRecSuffix)) if err != nil { return nil, ErrLine(err) } @@ -93,15 +92,15 @@ func depthPrefix(depth int) string { } func showBuildLogSub(sub *BuildLogJob, depth int) error { - if _, ok := buildLogSeen[sub.tgt.a]; ok { + if _, ok := buildLogSeen[sub.tgt.rel]; ok { return nil } - buildLogSeen[sub.tgt.a] = struct{}{} + buildLogSeen[sub.tgt.rel] = struct{}{} dp := depthPrefix(depth) fmt.Printf( "%s%s%s\n", sub.rec["Started"][0], dp, - colourize(CRedo, "redo "+sub.tgt.String()), + colourize(CRedo, "redo "+sub.tgt.rel), ) if err := showBuildLog(sub.tgt, sub.rec, depth+1); err != nil { return err @@ -114,14 +113,14 @@ func showBuildLogSub(sub *BuildLogJob, depth int) error { fmt.Printf( "%s%s%s (code: %d) (%d.%ds)\n\n", sub.rec["Finished"][0], dp, - colourize(CErr, "err "+sub.tgt.String()), + colourize(CErr, "err "+sub.tgt.rel), sub.exitCode, durationSec, durationNsec, ) } else { fmt.Printf( "%s%s%s (%d.%ds)\n\n", sub.rec["Finished"][0], dp, - colourize(CRedo, "done "+sub.tgt.String()), + colourize(CRedo, "done "+sub.tgt.rel), durationSec, durationNsec, ) } @@ -179,7 +178,8 @@ func showBuildLog(tgt *Tgt, buildLogRec map[string][]string, depth int) error { return err } } - fd, err := os.Open(path.Join(tgt.h, RedoDir, tgt.t+LogSuffix)) + tgtH, tgtT := path.Split(tgt.a) + fd, err := os.Open(path.Join(tgtH, RedoDir, tgtT+LogSuffix)) if err != nil { return ErrLine(err) } @@ -196,8 +196,8 @@ func showBuildLog(tgt *Tgt, buildLogRec map[string][]string, depth int) error { defer fd.Close() subs := make([]*BuildLogJob, 0, len(buildLogRec["Ifchange"])) for _, depPath := range buildLogRec["Ifchange"] { - dep := NewTgt(path.Join(tgt.h, depPath)) - if dep.a == tgt.a { + dep := NewTgt(path.Join(tgtH, depPath)) + if dep.rel == tgt.rel { continue } rec, err := parseBuildLogRec(dep)