diff --git a/internal/pkg/container/build.go b/internal/pkg/container/build.go index 87c6ae3e..a1b8a200 100644 --- a/internal/pkg/container/build.go +++ b/internal/pkg/container/build.go @@ -42,6 +42,12 @@ func Build(name string, buildForce bool) error { wwlog.Printf(wwlog.DEBUG, "Building VNFS image: '%s' -> '%s'\n", rootfsPath, imagePath) cmd := fmt.Sprintf("cd %s; find . | cpio --quiet -o -H newc | gzip -c > \"%s\"", rootfsPath, imagePath) + // use pigz if available + err = exec.Command("/bin/sh", "-c", "command -v pigz").Run() + if err == nil { + cmd = fmt.Sprintf("cd %s; find . | cpio --quiet -o -H newc | pigz -c > \"%s\"", rootfsPath, imagePath) + } + wwlog.Printf(wwlog.DEBUG, "RUNNING: %s\n", cmd) err = exec.Command("/bin/sh", "-c", cmd).Run() if err != nil { return errors.New("Failed building VNFS") diff --git a/internal/pkg/kernel/kernel.go b/internal/pkg/kernel/kernel.go index 41e0c0b5..2fa8387e 100644 --- a/internal/pkg/kernel/kernel.go +++ b/internal/pkg/kernel/kernel.go @@ -100,7 +100,13 @@ func Build(kernelVersion string, root string) (string, error) { wwlog.Printf(wwlog.VERBOSE, "Building Kernel driver image\n") if _, err := os.Stat(kernelDrivers); err == nil { cmd := fmt.Sprintf("cd /; find .%s | cpio --quiet -o -H newc | gzip -c > \"%s\"", kernelDrivers, driversDestination) - err := exec.Command("/bin/sh", "-c", cmd).Run() + // use pigz if available + err := exec.Command("/bin/sh", "-c", "command -v pigz").Run() + if err == nil { + cmd = fmt.Sprintf("cd /; find .%s | cpio --quiet -o -H newc | pigz -c > \"%s\"", kernelDrivers, driversDestination) + } + wwlog.Printf(wwlog.DEBUG, "RUNNING: %s\n", cmd) + err = exec.Command("/bin/sh", "-c", cmd).Run() if err != nil { return "", err } diff --git a/internal/pkg/overlay/overlay.go b/internal/pkg/overlay/overlay.go index 64ee02fa..eb29f043 100644 --- a/internal/pkg/overlay/overlay.go +++ b/internal/pkg/overlay/overlay.go @@ -255,6 +255,11 @@ func buildOverlay(nodeList []node.NodeInfo, overlayType string) error { wwlog.Printf(wwlog.VERBOSE, "Finished generating overlay directory for: %s\n", n.Id.Get()) cmd := fmt.Sprintf("cd \"%s\"; find . | cpio --quiet -o -H newc | gzip -c > \"%s\"", tmpDir, OverlayFile) + // use pigz if available + err = exec.Command("/bin/sh", "-c", "command -v pigz").Run() + if err == nil { + cmd = fmt.Sprintf("cd \"%s\"; find . | cpio --quiet -o -H newc | pigz -c > \"%s\"", tmpDir, OverlayFile) + } wwlog.Printf(wwlog.DEBUG, "RUNNING: %s\n", cmd) err = exec.Command("/bin/sh", "-c", cmd).Run() if err != nil {