From c97f0d7a863bbb63de5dca44ad75c5ae7b4a154d Mon Sep 17 00:00:00 2001 From: Dmitry Vyukov Date: Thu, 21 Jun 2018 17:58:12 +0200 Subject: pkg/build: add gvisor support --- pkg/build/gvisor.go | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'pkg/build/gvisor.go') diff --git a/pkg/build/gvisor.go b/pkg/build/gvisor.go index 8649e7e65..b96d55cf0 100644 --- a/pkg/build/gvisor.go +++ b/pkg/build/gvisor.go @@ -3,13 +3,32 @@ package build +import ( + "path/filepath" + "time" + + "github.com/google/syzkaller/pkg/osutil" +) + type gvisor struct{} func (gvisor) build(targetArch, vmType, kernelDir, outputDir, compiler, userspaceDir, cmdlineFile, sysctlFile string, config []byte) error { + if err := osutil.MkdirAll(outputDir); err != nil { + return err + } + if _, err := osutil.RunCmd(20*time.Minute, kernelDir, compiler, "build", "--verbose_failures", "--sandbox_debug", "runsc"); err != nil { + return err + } + runsc := filepath.Join(kernelDir, "bazel-bin", "runsc", "linux_amd64_pure_stripped", "runsc") + if err := osutil.CopyFile(runsc, filepath.Join(outputDir, "image")); err != nil { + return err + } + osutil.RunCmd(10*time.Minute, kernelDir, compiler, "shutdown") return nil } func (gvisor) clean(kernelDir string) error { + // Let's assume that bazel always properly handles build without cleaning (until proven otherwise). return nil } -- cgit mrf-deployment