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