aboutsummaryrefslogtreecommitdiffstats
path: root/pkg/instance
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2018-06-21 17:45:53 +0200
committerDmitry Vyukov <dvyukov@google.com>2018-06-22 16:40:45 +0200
commitea804a7120e0b87dabd3f24227f9550332c42c79 (patch)
treeab4a2a07ca204e6756219af41edecd2ba1d4919c /pkg/instance
parent8c9738f9c7a89b865866092a7b48cc0b6c1d34c9 (diff)
pkg/build: pave way for multi-OS support
Unify kernel and image build, that distinction is really uninteresting. Define interface that each OS needs to implement. Add gvisor stub.
Diffstat (limited to 'pkg/instance')
-rw-r--r--pkg/instance/instance.go17
1 files changed, 8 insertions, 9 deletions
diff --git a/pkg/instance/instance.go b/pkg/instance/instance.go
index 2294fed9b..cec79459a 100644
--- a/pkg/instance/instance.go
+++ b/pkg/instance/instance.go
@@ -79,16 +79,15 @@ func (env *Env) BuildSyzkaller(repo, commit string) error {
func (env *Env) BuildKernel(compilerBin, userspaceDir, cmdlineFile, sysctlFile string, kernelConfig []byte) error {
cfg := env.cfg
- if err := build.Build(cfg.KernelSrc, compilerBin, kernelConfig); err != nil {
- return osutil.PrependContext("kernel build failed", err)
- }
- cfg.KernelObj = cfg.KernelSrc
- cfg.Image = filepath.Join(cfg.Workdir, "syz-image")
- cfg.SSHKey = filepath.Join(cfg.Workdir, "syz-key")
- if err := build.CreateImage(cfg.TargetOS, cfg.TargetVMArch, cfg.Type,
- cfg.KernelSrc, userspaceDir, cmdlineFile, sysctlFile, cfg.Image, cfg.SSHKey); err != nil {
- return osutil.PrependContext("image build failed", err)
+ imageDir := filepath.Join(cfg.Workdir, "image")
+ if err := build.Image(cfg.TargetOS, cfg.TargetVMArch, cfg.Type,
+ cfg.KernelSrc, imageDir, compilerBin, userspaceDir,
+ cmdlineFile, sysctlFile, kernelConfig); err != nil {
+ return err
}
+ cfg.KernelObj = filepath.Join(imageDir, "obj")
+ cfg.Image = filepath.Join(imageDir, "image")
+ cfg.SSHKey = filepath.Join(imageDir, "key")
return nil
}