Skip to content

Commit

Permalink
feat(dockerfile-llb-frontend): Use WellKnownKernelPath in build output (
Browse files Browse the repository at this point in the history
#732)

Reviewed-by: Cezar Craciunoiu <[email protected]>
Approved-by: Cezar Craciunoiu <[email protected]>
  • Loading branch information
craciunoiuc authored Aug 21, 2023
2 parents 55392fd + 7e720db commit ad78cba
Show file tree
Hide file tree
Showing 3 changed files with 109 additions and 3 deletions.
10 changes: 8 additions & 2 deletions tools/dockerfile-llb-frontend/build/build.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ import (
"github.com/moby/buildkit/exporter/containerimage/exptypes"
"github.com/moby/buildkit/frontend/gateway/client"
"github.com/moby/buildkit/solver/result"
"kraftkit.sh/oci"
"kraftkit.sh/tools/dockerfile-llb-frontend/image"
"kraftkit.sh/unikraft/app"
)
Expand Down Expand Up @@ -213,6 +214,7 @@ var defaultSteps = [...]step{
{name: "source kraftkit image", fn: sourceKraftkitImage},
{name: "add unikraft app", fn: addUnikraftApp},
{name: "run kraftkit build", fn: execKraftkitBuild},
{name: "create kernel directory", fn: createKernelDirectory},
{name: "copy unikernel image", fn: copyUnikernelImage},
}

Expand Down Expand Up @@ -251,11 +253,15 @@ func execKraftkitBuild(base llb.State, config Configuration) llb.State {
Root()
}

// This creates the /unikraft/bin directory (corresponds to our WellKnownKernelPath)
func createKernelDirectory(base llb.State, _ Configuration) llb.State {
return base.File(llb.Mkdir(oci.WellKnownKernelPath, 0o755, llb.WithParents(true)))
}

// We don't want kraftkit nor the base app files in the final image.
// We use this to pluck the desired output.
func copyUnikernelImage(base llb.State, config Configuration) llb.State {
return llb.Scratch().
File(llb.Copy(base, outputPath(config.AppName, config), outputName(config.AppName, config)))
return base.File(llb.Copy(base, outputPath(config.AppName, config), oci.WellKnownKernelPath))
}

func fileFromResult(ctx context.Context, result *result.Result[client.Reference], filename string) ([]byte, error) {
Expand Down
28 changes: 28 additions & 0 deletions tools/dockerfile-llb-frontend/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,12 @@ require (

require (
api.zip v0.1.5 // indirect
github.com/AdaLogics/go-fuzz-headers v0.0.0-20230106234847-43070de90fa1 // indirect
github.com/AdamKorcz/go-118-fuzz-build v0.0.0-20221215162035-5330a85ea652 // indirect
github.com/AlecAivazis/survey/v2 v2.3.7 // indirect
github.com/Masterminds/semver/v3 v3.2.1 // indirect
github.com/Microsoft/go-winio v0.6.1 // indirect
github.com/Microsoft/hcsshim v0.10.0-rc.8 // indirect
github.com/acorn-io/baaah v0.0.0-20230522221318-afcc93619e30 // indirect
github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect
github.com/atotto/clipboard v0.1.4 // indirect
Expand All @@ -30,26 +33,38 @@ require (
github.com/cli/go-gh v1.2.1 // indirect
github.com/cli/safeexec v1.0.1 // indirect
github.com/compose-spec/compose-go v1.17.0 // indirect
github.com/containerd/cgroups v1.1.0 // indirect
github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81 // indirect
github.com/containerd/continuity v0.4.1 // indirect
github.com/containerd/fifo v1.1.0 // indirect
github.com/containerd/go-cni v1.1.9 // indirect
github.com/containerd/nerdctl v1.4.0 // indirect
github.com/containerd/stargz-snapshotter/estargz v0.14.3 // indirect
github.com/containerd/ttrpc v1.2.2 // indirect
github.com/containerd/typeurl/v2 v2.1.1 // indirect
github.com/containernetworking/cni v1.1.2 // indirect
github.com/containernetworking/plugins v1.3.0 // indirect
github.com/coreos/go-iptables v0.6.0 // indirect
github.com/cyphar/filepath-securejoin v0.2.3 // indirect
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/dgraph-io/badger/v3 v3.2103.5 // indirect
github.com/dgraph-io/ristretto v0.1.1 // indirect
github.com/docker/cli v24.0.2+incompatible // indirect
github.com/docker/distribution v2.8.2+incompatible // indirect
github.com/docker/docker v24.0.4+incompatible // indirect
github.com/docker/docker-credential-helpers v0.7.0 // indirect
github.com/docker/go-connections v0.4.0 // indirect
github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c // indirect
github.com/docker/go-units v0.5.0 // indirect
github.com/docker/libtrust v0.0.0-20160708172513-aabc10ec26b7 // indirect
github.com/dustin/go-humanize v1.0.1 // indirect
github.com/erikgeiser/promptkit v0.8.0 // indirect
github.com/fatih/color v1.15.0 // indirect
github.com/firecracker-microvm/firecracker-go-sdk v1.0.0 // indirect
github.com/fsnotify/fsnotify v1.6.0 // indirect
github.com/genuinetools/reg v0.16.1 // indirect
github.com/go-logr/logr v1.2.4 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
github.com/go-ole/go-ole v1.2.6 // indirect
github.com/go-openapi/analysis v0.21.2 // indirect
github.com/go-openapi/errors v0.20.2 // indirect
Expand All @@ -69,6 +84,8 @@ require (
github.com/golang/protobuf v1.5.3 // indirect
github.com/golang/snappy v0.0.4 // indirect
github.com/google/flatbuffers v23.1.21+incompatible // indirect
github.com/google/go-cmp v0.5.9 // indirect
github.com/google/go-containerregistry v0.15.2 // indirect
github.com/google/gofuzz v1.2.0 // indirect
github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect
github.com/google/uuid v1.3.0 // indirect
Expand All @@ -87,7 +104,11 @@ require (
github.com/mattn/go-runewidth v0.0.14 // indirect
github.com/mattn/go-shellwords v1.0.12 // indirect
github.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d // indirect
github.com/mitchellh/go-homedir v1.1.0 // indirect
github.com/mitchellh/mapstructure v1.5.0 // indirect
github.com/moby/locker v1.0.1 // indirect
github.com/moby/sys/mountinfo v0.6.2 // indirect
github.com/moby/sys/sequential v0.5.0 // indirect
github.com/moby/sys/signal v0.7.0 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.2 // indirect
Expand All @@ -96,7 +117,12 @@ require (
github.com/muesli/reflow v0.3.0 // indirect
github.com/muesli/termenv v0.15.2 // indirect
github.com/oklog/ulid v1.3.1 // indirect
github.com/opencontainers/runc v1.1.7 // indirect
github.com/opencontainers/runtime-spec v1.1.0-rc.2 // indirect
github.com/opencontainers/selinux v1.11.0 // indirect
github.com/opentracing/opentracing-go v1.2.0 // indirect
github.com/pelletier/go-toml v1.9.5 // indirect
github.com/peterhellberg/link v1.0.0 // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect
github.com/power-devops/perfstat v0.0.0-20221212215047-62379fc7944b // indirect
Expand All @@ -111,6 +137,7 @@ require (
github.com/tklauser/go-sysconf v0.3.11 // indirect
github.com/tklauser/numcpus v0.6.0 // indirect
github.com/tonistiigi/fsutil v0.0.0-20230629203738-36ef4d8c0dbb // indirect
github.com/vbatts/tar-split v0.11.3 // indirect
github.com/vishvananda/netlink v1.2.1-beta.2 // indirect
github.com/vishvananda/netns v0.0.4 // indirect
github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect
Expand Down Expand Up @@ -141,6 +168,7 @@ require (
k8s.io/apiserver v0.27.3 // indirect
k8s.io/klog/v2 v2.90.1 // indirect
k8s.io/utils v0.0.0-20230505201702-9f6742963106 // indirect
oras.land/oras-go/v2 v2.2.1 // indirect
sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect
sigs.k8s.io/structured-merge-diff/v4 v4.2.3 // indirect
sigs.k8s.io/yaml v1.3.0 // indirect
Expand Down
Loading

0 comments on commit ad78cba

Please sign in to comment.