Clean up load logging, capture build output via slog, use cmake --build

This commit is contained in:
Ian Gulliver
2026-04-11 22:38:16 +09:00
parent 5f2268f5e1
commit 846d6bb201

View File

@@ -204,25 +204,28 @@ func boardSerial(id [8]byte) string {
id[0], id[1], id[2], id[3], id[4], id[5], id[6], id[7]) id[0], id[1], id[2], id[3], id[4], id[5], id[6], id[7])
} }
func buildFirmware(buildDir string) error { func runCmd(name string, args ...string) error {
slog.Info("configuring") cmd := exec.Command(name, args...)
cmake := exec.Command("cmake", "-S", filepath.Join(filepath.Dir(buildDir)), "-B", buildDir) out, err := cmd.CombinedOutput()
cmake.Stdout = os.Stdout if len(out) > 0 {
cmake.Stderr = os.Stderr for _, line := range strings.Split(strings.TrimSpace(string(out)), "\n") {
if err := cmake.Run(); err != nil { slog.Info(name, "msg", line)
return fmt.Errorf("cmake failed: %w", err)
} }
}
slog.Info("building") if err != nil {
cmd := exec.Command("make", "-C", buildDir) return fmt.Errorf("%s failed: %w", name, err)
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
if err := cmd.Run(); err != nil {
return fmt.Errorf("build failed: %w", err)
} }
return nil return nil
} }
func buildFirmware(buildDir string) error {
srcDir := filepath.Dir(buildDir)
if err := runCmd("cmake", "-S", srcDir, "-B", buildDir); err != nil {
return err
}
return runCmd("cmake", "--build", buildDir)
}
func cmdLoad(args []string) error { func cmdLoad(args []string) error {
fs := flag.NewFlagSet("load", flag.ExitOnError) fs := flag.NewFlagSet("load", flag.ExitOnError)
tf := addTargetFlags(fs) tf := addTargetFlags(fs)
@@ -297,7 +300,7 @@ func cmdLoad(args []string) error {
errs := make([]error, len(devices)) errs := make([]error, len(devices))
var wg sync.WaitGroup var wg sync.WaitGroup
for i := range devices { for i := range devices {
log := slog.With("serial", devices[i].serial) log := slog.With("dev", devices[i].target.name, "serial", devices[i].serial)
wg.Go(func() { wg.Go(func() {
log.Info("flashing", "uf2", devices[i].fw.name) log.Info("flashing", "uf2", devices[i].fw.name)
errs[i] = flashDevice(devices[i].target.client, devices[i].fw.uf2, *dryRun, log) errs[i] = flashDevice(devices[i].target.client, devices[i].fw.uf2, *dryRun, log)