From ea804a7120e0b87dabd3f24227f9550332c42c79 Mon Sep 17 00:00:00 2001 From: Dmitry Vyukov Date: Thu, 21 Jun 2018 17:45:53 +0200 Subject: 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. --- pkg/instance/instance.go | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) (limited to 'pkg/instance') 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 } -- cgit mrf-deployment