diff options
| author | Dmitry Vyukov <dvyukov@google.com> | 2018-06-21 17:45:53 +0200 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2018-06-22 16:40:45 +0200 |
| commit | ea804a7120e0b87dabd3f24227f9550332c42c79 (patch) | |
| tree | ab4a2a07ca204e6756219af41edecd2ba1d4919c /pkg/instance | |
| parent | 8c9738f9c7a89b865866092a7b48cc0b6c1d34c9 (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.go | 17 |
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 } |
