aboutsummaryrefslogtreecommitdiffstats
path: root/syz-ci
diff options
context:
space:
mode:
authorLiz Prucka <lizprucka@google.com>2023-12-28 10:12:13 -0600
committerAleksandr Nogikh <nogikh@google.com>2024-01-15 11:02:38 +0000
commit2a7bcc7f9f751f2ec13586584e8e25b8f6817e8c (patch)
treef9e2ebb839c7f4750d9e9236659c9eaefdb1e935 /syz-ci
parent659da5e58b9a9c032a4127591796722120aa0c2f (diff)
syz-ci/manager: separate build and coverage dirs
Fix to [4f9b680](https://github.com/google/syzkaller/commit/4f9b680bf7d56a0023c4ec0e87207c77de7d276a), which broke kernel builds by changing build directory when kernel_src_suffix is used.
Diffstat (limited to 'syz-ci')
-rw-r--r--syz-ci/manager.go76
1 files changed, 39 insertions, 37 deletions
diff --git a/syz-ci/manager.go b/syz-ci/manager.go
index d21a2a67f..dfa6940b5 100644
--- a/syz-ci/manager.go
+++ b/syz-ci/manager.go
@@ -69,24 +69,25 @@ func init() {
// - latest: latest known good kernel build
// - current: currently used kernel build
type Manager struct {
- name string
- workDir string
- kernelDir string
- currentDir string
- latestDir string
- configTag string
- configData []byte
- cfg *Config
- repo vcs.Repo
- mgrcfg *ManagerConfig
- managercfg *mgrconfig.Config
- cmd *ManagerCmd
- dash ManagerDashapi
- debugStorage bool
- storage *asset.Storage
- stop chan struct{}
- debug bool
- lastBuild *dashapi.Build
+ name string
+ workDir string
+ kernelBuildDir string
+ kernelSrcDir string
+ currentDir string
+ latestDir string
+ configTag string
+ configData []byte
+ cfg *Config
+ repo vcs.Repo
+ mgrcfg *ManagerConfig
+ managercfg *mgrconfig.Config
+ cmd *ManagerCmd
+ dash ManagerDashapi
+ debugStorage bool
+ storage *asset.Storage
+ stop chan struct{}
+ debug bool
+ lastBuild *dashapi.Build
}
type ManagerDashapi interface {
@@ -136,22 +137,23 @@ func createManager(cfg *Config, mgrcfg *ManagerConfig, stop chan struct{},
}
mgr := &Manager{
- name: mgrcfg.managercfg.Name,
- workDir: filepath.Join(dir, "workdir"),
- kernelDir: path.Join(kernelDir, mgrcfg.KernelSrcSuffix),
- currentDir: filepath.Join(dir, "current"),
- latestDir: filepath.Join(dir, "latest"),
- configTag: hash.String(configData),
- configData: configData,
- cfg: cfg,
- repo: repo,
- mgrcfg: mgrcfg,
- managercfg: mgrcfg.managercfg,
- dash: dash,
- storage: assetStorage,
- debugStorage: !cfg.AssetStorage.IsEmpty() && cfg.AssetStorage.Debug,
- stop: stop,
- debug: debug,
+ name: mgrcfg.managercfg.Name,
+ workDir: filepath.Join(dir, "workdir"),
+ kernelSrcDir: path.Join(kernelDir, mgrcfg.KernelSrcSuffix),
+ kernelBuildDir: kernelDir,
+ currentDir: filepath.Join(dir, "current"),
+ latestDir: filepath.Join(dir, "latest"),
+ configTag: hash.String(configData),
+ configData: configData,
+ cfg: cfg,
+ repo: repo,
+ mgrcfg: mgrcfg,
+ managercfg: mgrcfg.managercfg,
+ dash: dash,
+ storage: assetStorage,
+ debugStorage: !cfg.AssetStorage.IsEmpty() && cfg.AssetStorage.Debug,
+ stop: stop,
+ debug: debug,
}
os.RemoveAll(mgr.currentDir)
@@ -334,7 +336,7 @@ func (mgr *Manager) build(kernelCommit *vcs.Commit) error {
TargetOS: mgr.managercfg.TargetOS,
TargetArch: mgr.managercfg.TargetVMArch,
VMType: mgr.managercfg.Type,
- KernelDir: mgr.kernelDir,
+ KernelDir: mgr.kernelBuildDir,
OutputDir: tmpDir,
Compiler: mgr.mgrcfg.Compiler,
Linker: mgr.mgrcfg.Linker,
@@ -533,7 +535,7 @@ func (mgr *Manager) createTestConfig(imageDir string, info *BuildInfo) (*mgrconf
if err := instance.SetConfigImage(mgrcfg, imageDir, true); err != nil {
return nil, err
}
- mgrcfg.KernelSrc = mgr.kernelDir
+ mgrcfg.KernelSrc = mgr.kernelSrcDir
if err := mgrconfig.Complete(mgrcfg); err != nil {
return nil, fmt.Errorf("bad manager config: %w", err)
}
@@ -570,7 +572,7 @@ func (mgr *Manager) writeConfig(buildTag string) (string, error) {
// Strictly saying this is somewhat racy as builder can concurrently
// update the source, or even delete and re-clone. If this causes
// problems, we need to make a copy of sources after build.
- mgrcfg.KernelSrc = mgr.kernelDir
+ mgrcfg.KernelSrc = mgr.kernelSrcDir
if err := mgrconfig.Complete(mgrcfg); err != nil {
return "", fmt.Errorf("bad manager config: %w", err)
}