aboutsummaryrefslogtreecommitdiffstats
path: root/pkg/build/gvisor.go
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2018-06-21 17:58:12 +0200
committerDmitry Vyukov <dvyukov@google.com>2018-06-22 16:40:45 +0200
commitc97f0d7a863bbb63de5dca44ad75c5ae7b4a154d (patch)
tree75f9f638714eaab50b73250bdceadd860e48556b /pkg/build/gvisor.go
parent91f52697d10d451839cd60ffcd6323e99af14011 (diff)
pkg/build: add gvisor support
Diffstat (limited to 'pkg/build/gvisor.go')
-rw-r--r--pkg/build/gvisor.go19
1 files changed, 19 insertions, 0 deletions
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
}