diff options
| author | Florent Revest <revest@chromium.org> | 2024-10-02 16:02:12 +0200 |
|---|---|---|
| committer | Aleksandr Nogikh <nogikh@google.com> | 2024-10-14 19:43:42 +0000 |
| commit | 484e362fcff09b8b74162eefd0c3bfd67e829d94 (patch) | |
| tree | 7db4c1f87a6c37073084a6b806978495297f6d25 /pkg/instance/instance.go | |
| parent | 2e5c6a5c1c62461b69c6f50a123885b9910fce04 (diff) | |
pkg/build: use the build environment in clean() calls
This unifies the build() and clean() interfaces such that if a custom
compiler or make binary is provided in the manager or bisection config,
they can be taken into account by the clean() interface.
Diffstat (limited to 'pkg/instance/instance.go')
| -rw-r--r-- | pkg/instance/instance.go | 35 |
1 files changed, 24 insertions, 11 deletions
diff --git a/pkg/instance/instance.go b/pkg/instance/instance.go index e1e222a3f..b21bbed9e 100644 --- a/pkg/instance/instance.go +++ b/pkg/instance/instance.go @@ -30,6 +30,7 @@ import ( type Env interface { BuildSyzkaller(string, string) (string, error) + CleanKernel(*BuildKernelConfig) error BuildKernel(*BuildKernelConfig) (string, build.ImageDetails, error) Test(numVMs int, reproSyz, reproOpts, reproC []byte) ([]EnvTestResult, error) } @@ -135,19 +136,13 @@ func (env *env) BuildSyzkaller(repoURL, commit string) (string, error) { return buildLog, nil } -func (env *env) BuildKernel(buildCfg *BuildKernelConfig) ( - string, build.ImageDetails, error) { - if env.buildSem != nil { - env.buildSem.Wait() - defer env.buildSem.Signal() - } - imageDir := filepath.Join(env.cfg.Workdir, "image") - params := build.Params{ +func (env *env) buildParamsFromCfg(buildCfg *BuildKernelConfig) build.Params { + return build.Params{ TargetOS: env.cfg.TargetOS, TargetArch: env.cfg.TargetVMArch, VMType: env.cfg.Type, KernelDir: env.cfg.KernelSrc, - OutputDir: imageDir, + OutputDir: filepath.Join(env.cfg.Workdir, "image"), Make: buildCfg.MakeBin, Compiler: buildCfg.CompilerBin, Linker: buildCfg.LinkerBin, @@ -158,20 +153,38 @@ func (env *env) BuildKernel(buildCfg *BuildKernelConfig) ( Config: buildCfg.KernelConfig, BuildCPUs: buildCfg.BuildCPUs, } +} + +func (env *env) BuildKernel(buildCfg *BuildKernelConfig) ( + string, build.ImageDetails, error) { + if env.buildSem != nil { + env.buildSem.Wait() + defer env.buildSem.Signal() + } + params := env.buildParamsFromCfg(buildCfg) details, err := build.Image(params) if err != nil { return "", details, err } - if err := SetConfigImage(env.cfg, imageDir, true); err != nil { + if err := SetConfigImage(env.cfg, params.OutputDir, true); err != nil { return "", details, err } - kernelConfigFile := filepath.Join(imageDir, "kernel.config") + kernelConfigFile := filepath.Join(params.OutputDir, "kernel.config") if !osutil.IsExist(kernelConfigFile) { kernelConfigFile = "" } return kernelConfigFile, details, nil } +func (env *env) CleanKernel(buildCfg *BuildKernelConfig) error { + if env.buildSem != nil { + env.buildSem.Wait() + defer env.buildSem.Signal() + } + params := env.buildParamsFromCfg(buildCfg) + return build.Clean(params) +} + func SetConfigImage(cfg *mgrconfig.Config, imageDir string, reliable bool) error { cfg.KernelObj = filepath.Join(imageDir, "obj") cfg.Image = filepath.Join(imageDir, "image") |
