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/bisect | |
| 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/bisect')
| -rw-r--r-- | pkg/bisect/bisect.go | 36 | ||||
| -rw-r--r-- | pkg/bisect/bisect_test.go | 4 |
2 files changed, 23 insertions, 17 deletions
diff --git a/pkg/bisect/bisect.go b/pkg/bisect/bisect.go index 9515126dc..a0dd29bb5 100644 --- a/pkg/bisect/bisect.go +++ b/pkg/bisect/bisect.go @@ -101,7 +101,8 @@ type env struct { // can allows us to. flaky bool // A cache of already performed revision tests. - results map[string]*testResult + results map[string]*testResult + buildCfg instance.BuildKernelConfig } const MaxNumTests = 20 // number of tests we do per commit @@ -173,6 +174,17 @@ func runImpl(cfg *Config, repo vcs.Repo, inst instance.Env) (*Result, error) { inst: inst, startTime: time.Now(), confidence: 1.0, + buildCfg: instance.BuildKernelConfig{ + CompilerBin: cfg.DefaultCompiler, + MakeBin: cfg.Make, + LinkerBin: cfg.Linker, + CcacheBin: cfg.Ccache, + UserspaceDir: cfg.Kernel.Userspace, + CmdlineFile: cfg.Kernel.Cmdline, + SysctlFile: cfg.Kernel.Sysctl, + KernelConfig: cfg.Kernel.Config, + BuildCPUs: cfg.BuildCPUs, + }, } head, err := repo.HeadCommit() if err != nil { @@ -242,8 +254,7 @@ func (env *env) bisect() (*Result, error) { } cfg := env.cfg - if err := build.Clean(cfg.Manager.TargetOS, cfg.Manager.TargetVMArch, - cfg.Manager.Type, cfg.Manager.KernelSrc); err != nil { + if err := env.inst.CleanKernel(&env.buildCfg); err != nil { return nil, fmt.Errorf("kernel clean failed: %w", err) } env.logf("building syzkaller on %v", cfg.Syzkaller.Commit) @@ -606,22 +617,13 @@ func (env *env) build() (*vcs.Commit, string, error) { } env.logf("testing commit %v %v", current.Hash, env.cfg.CompilerType) buildStart := time.Now() - mgr := env.cfg.Manager - if err := build.Clean(mgr.TargetOS, mgr.TargetVMArch, mgr.Type, mgr.KernelSrc); err != nil { + buildCfg := env.buildCfg + buildCfg.CompilerBin = bisectEnv.Compiler + buildCfg.KernelConfig = bisectEnv.KernelConfig + if err := env.inst.CleanKernel(&buildCfg); err != nil { return current, "", fmt.Errorf("kernel clean failed: %w", err) } - kern := &env.cfg.Kernel - _, imageDetails, err := env.inst.BuildKernel(&instance.BuildKernelConfig{ - CompilerBin: bisectEnv.Compiler, - MakeBin: env.cfg.Make, - LinkerBin: env.cfg.Linker, - CcacheBin: env.cfg.Ccache, - UserspaceDir: kern.Userspace, - CmdlineFile: kern.Cmdline, - SysctlFile: kern.Sysctl, - KernelConfig: bisectEnv.KernelConfig, - BuildCPUs: env.cfg.BuildCPUs, - }) + _, imageDetails, err := env.inst.BuildKernel(&buildCfg) if imageDetails.CompilerID != "" { env.logf("compiler: %v", imageDetails.CompilerID) } diff --git a/pkg/bisect/bisect_test.go b/pkg/bisect/bisect_test.go index cb5e51c5b..6731eb235 100644 --- a/pkg/bisect/bisect_test.go +++ b/pkg/bisect/bisect_test.go @@ -35,6 +35,10 @@ func (env *testEnv) BuildSyzkaller(repo, commit string) (string, error) { return "", nil } +func (env *testEnv) CleanKernel(buildCfg *instance.BuildKernelConfig) error { + return nil +} + func (env *testEnv) BuildKernel(buildCfg *instance.BuildKernelConfig) (string, build.ImageDetails, error) { commit := env.headCommit() configHash := hash.String(buildCfg.KernelConfig) |
