]> Cypherpunks.ru repositories - goredo.git/blobdiff - buildlog.go
Download link for 2.6.2 release
[goredo.git] / buildlog.go
index 956cf4fdc9aa353b5abfca806e19cc8ae19c56ac..f04efa41e2bf269251b2c56824eaa4d3e48e9581 100644 (file)
@@ -1,19 +1,17 @@
-/*
-goredo -- djb's redo implementation on pure Go
-Copyright (C) 2020-2023 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
-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 <http://www.gnu.org/licenses/>.
-*/
+// goredo -- djb's redo implementation on pure Go
+// Copyright (C) 2020-2024 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
+// 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 <http://www.gnu.org/licenses/>.
 
 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)