HydraIssues

hydraperforcewatcher: p4 print CombinedOutput makes a missing .hydrabuild.yaml look like a broken one
open bug Project: experiencenet Reporter: 31 Aug 2026 12:25

Description

pkg/perforce/perforce.go:47 run() uses cmd.CombinedOutput(). PrintContent (same file, line 132) relies on a non-nil error to detect a missing file.

For a file that does not exist, p4 print -q writes ' - no such file(s).' to STDERR and exits 0. Verified on the galloromeins scale:

p4 print -q //galloromeinsmuseum/main/.hydrabuild.yaml # exit=0, stdout empty, message on stderr

So PrintContent returns the stderr text as if it were file content. buildconfig.Parse then fails and the watcher logs:

WARN invalid .hydrabuild.yaml err="parsing build config: yaml: unmarshal errors: line 1: cannot unmarshal !!str //gallo... into buildconfig.BuildConfig"

The gallo-romeins stream has no .hydrabuild.yaml at all, so the correct behaviour is to log nothing. The warning reads as if the contributor shipped a malformed config and sent me looking in the wrong place while diagnosing #609.

Fix: separate stdout from stderr in run() (or add a print-specific path), and treat the 'no such file(s).' marker as not-found rather than as content.

Session Context

Venue
gallo-romeins-museum