Skip to content

Commit

Permalink
Display buildkit and runc version in nerdctl
Browse files Browse the repository at this point in the history
Fixes#1082

Signed-off-by: Manu Gupta <manugupt1@gmail.com>
  • Loading branch information
manugupt1 committed Jul 9, 2022
1 parent 1a8f30b commit 3c349da
Showing 1 changed file with 48 additions and 1 deletion.
49 changes: 48 additions & 1 deletion pkg/infoutil/infoutil.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import (
"context"
"fmt"
"os"
"os/exec"
"runtime"
"strings"
"time"
Expand All @@ -28,10 +29,12 @@ import (
"github.com/containerd/containerd"
ptypes "github.com/containerd/containerd/protobuf/types"
"github.com/containerd/containerd/services/introspection"
"github.com/containerd/nerdctl/pkg/buildkitutil"
"github.com/containerd/nerdctl/pkg/inspecttypes/dockercompat"
"github.com/containerd/nerdctl/pkg/inspecttypes/native"
"github.com/containerd/nerdctl/pkg/logging"
"github.com/containerd/nerdctl/pkg/version"
"github.com/sirupsen/logrus"
)

func NativeDaemonInfo(ctx context.Context, client *containerd.Client) (*native.DaemonInfo, error) {
Expand Down Expand Up @@ -133,8 +136,9 @@ func ServerVersion(ctx context.Context, client *containerd.Client) (*dockercompa
Version: daemonVersion.Version,
Details: map[string]string{"GitCommit": daemonVersion.Revision},
},
getBuildKitVersion(),
getRuncVersion(),
},
// TODO: add runc version
}
return v, nil
}
Expand All @@ -151,6 +155,49 @@ func ServerSemVer(ctx context.Context, client *containerd.Client) (*semver.Versi
return sv, nil
}

func getBuildKitVersion() dockercompat.ComponentVersion {
buildctlBinary, err := buildkitutil.BuildctlBinary()
if err != nil {
logrus.Warnf("unable to determine buildkit version: %s", err.Error())
return dockercompat.ComponentVersion{Name: "buildkit"}
}

stdout, err := exec.Command(buildctlBinary, "--version").Output()
if err != nil {
logrus.Warnf("unable to determine buildkit version: %s", err.Error())
return dockercompat.ComponentVersion{Name: "buildkit"}
}

versionStr := strings.Fields(strings.TrimSpace(string(stdout)))

return dockercompat.ComponentVersion{
Name: "buildkit",
Version: versionStr[2],
Details: map[string]string{"GitCommit": versionStr[3]},
}
}

func getRuncVersion() dockercompat.ComponentVersion {
stdout, err := exec.Command("runc", "--version").Output()
if err != nil {
logrus.Warnf("unable to determine runc version: %s", err.Error())
return dockercompat.ComponentVersion{Name: "runc"}
}

var versionList = strings.Split(string(stdout), "\n")

return dockercompat.ComponentVersion{
Name: "runc",
Version: strings.Fields(versionList[0])[2],
Details: map[string]string{
"GitCommit": strings.Fields(versionList[1])[1],
"spec": strings.Fields(versionList[2])[1],
"go": strings.Fields(versionList[3])[1],
"libseccomp": strings.Fields(versionList[4])[1],
},
}
}

//BlockIOWeight return whether Block IO weight is supported or not
func BlockIOWeight(cgroupManager string) bool {
var info *dockercompat.Info
Expand Down

0 comments on commit 3c349da

Please sign in to comment.