diff --git a/builder/step_partition_image.go b/builder/step_partition_image.go index af00a8b..1261bd5 100644 --- a/builder/step_partition_image.go +++ b/builder/step_partition_image.go @@ -54,7 +54,7 @@ func partitionDOS(ui packer.Ui, config *Config) multistep.StepAction { for i, partition := range config.ImageConfig.ImagePartitions { line := fmt.Sprintf( "%s%d: type=%s", - config.ImageConfig.ImagePath, + partition.Name, //config.ImageConfig.ImagePath, i+1, partition.Type, ) @@ -67,9 +67,15 @@ func partitionDOS(ui packer.Ui, config *Config) multistep.StepAction { line += fmt.Sprintf(", size=%s", partition.Size) } + if partition.Name != "" { + line += fmt.Sprintf(", name=%s", partition.Name) + } + lines = append(lines, line) } + ui.Error(fmt.Sprintf("** DEBUG: %s", strings.Join(lines, "\n"))) + cmd := exec.Command("sfdisk", config.ImageConfig.ImagePath) stdout, err := cmd.StdoutPipe() @@ -79,6 +85,13 @@ func partitionDOS(ui packer.Ui, config *Config) multistep.StepAction { } defer stdout.Close() + stderr, err := cmd.StderrPipe() + if err != nil { + ui.Error(fmt.Sprintf("error while getting stderr pipe %v", err)) + return multistep.ActionHalt + } + defer stderr.Close() + stdin, err := cmd.StdinPipe() if err != nil { ui.Error(fmt.Sprintf("error while getting stdin pipe %v", err)) @@ -100,11 +113,15 @@ func partitionDOS(ui packer.Ui, config *Config) multistep.StepAction { stdin.Close() if err := cmd.Wait(); err != nil { - out, _ := io.ReadAll(stdout) + joined := io.MultiReader(stderr, stdout) + out, _ := io.ReadAll(joined) ui.Error(fmt.Sprintf("error sfdisk %v: %s", err, string(out))) return multistep.ActionHalt } + out, _ := io.ReadAll(stdout) + ui.Message(string(out)) + return multistep.ActionContinue }