diff options
Diffstat (limited to 'pkg/build')
| -rw-r--r-- | pkg/build/android.go | 6 | ||||
| -rw-r--r-- | pkg/build/build.go | 10 | ||||
| -rw-r--r-- | pkg/build/cuttlefish.go | 6 | ||||
| -rw-r--r-- | pkg/build/darwin.go | 2 | ||||
| -rw-r--r-- | pkg/build/freebsd.go | 6 | ||||
| -rw-r--r-- | pkg/build/fuchsia.go | 2 | ||||
| -rw-r--r-- | pkg/build/gvisor.go | 2 | ||||
| -rw-r--r-- | pkg/build/linux.go | 19 | ||||
| -rw-r--r-- | pkg/build/netbsd.go | 4 | ||||
| -rw-r--r-- | pkg/build/openbsd.go | 2 | ||||
| -rw-r--r-- | pkg/build/test.go | 2 |
11 files changed, 28 insertions, 33 deletions
diff --git a/pkg/build/android.go b/pkg/build/android.go index be6301be0..e5f19a451 100644 --- a/pkg/build/android.go +++ b/pkg/build/android.go @@ -179,11 +179,11 @@ func (a android) embedImages(w io.Writer, srcDir string, imageNames ...string) e return nil } -func (a android) clean(kernelDir, targetArch string) error { - if err := osutil.RemoveAll(filepath.Join(kernelDir, "out")); err != nil { +func (a android) clean(params Params) error { + if err := osutil.RemoveAll(filepath.Join(params.KernelDir, "out")); err != nil { return fmt.Errorf("failed to clean 'out' directory: %w", err) } - if err := osutil.RemoveAll(filepath.Join(kernelDir, "dist")); err != nil { + if err := osutil.RemoveAll(filepath.Join(params.KernelDir, "dist")); err != nil { return fmt.Errorf("failed to clean 'dist' directory: %w", err) } return nil diff --git a/pkg/build/build.go b/pkg/build/build.go index 764cc1ed5..b84adb20b 100644 --- a/pkg/build/build.go +++ b/pkg/build/build.go @@ -23,7 +23,7 @@ import ( "github.com/google/syzkaller/sys/targets" ) -// Params is input arguments for the Image function. +// Params is input arguments for the Image and Clean functions. type Params struct { TargetOS string TargetArch string @@ -113,12 +113,12 @@ func Image(params Params) (details ImageDetails, err error) { return } -func Clean(targetOS, targetArch, vmType, kernelDir string) error { - builder, err := getBuilder(targetOS, targetArch, vmType) +func Clean(params Params) error { + builder, err := getBuilder(params.TargetOS, params.TargetArch, params.VMType) if err != nil { return err } - return builder.clean(kernelDir, targetArch) + return builder.clean(params) } type KernelError struct { @@ -146,7 +146,7 @@ func (e InfraError) Error() string { type builder interface { build(params Params) (ImageDetails, error) - clean(kernelDir, targetArch string) error + clean(params Params) error } func getBuilder(targetOS, targetArch, vmType string) (builder, error) { diff --git a/pkg/build/cuttlefish.go b/pkg/build/cuttlefish.go index bf345c2bc..18e1df178 100644 --- a/pkg/build/cuttlefish.go +++ b/pkg/build/cuttlefish.go @@ -165,9 +165,9 @@ func (c cuttlefish) build(params Params) (ImageDetails, error) { return details, nil } -func (c cuttlefish) clean(kernelDir, targetArch string) error { - if err := osutil.RemoveAll(filepath.Join(kernelDir, "out")); err != nil { +func (c cuttlefish) clean(params Params) error { + if err := osutil.RemoveAll(filepath.Join(params.KernelDir, "out")); err != nil { return err } - return osutil.RemoveAll(filepath.Join(kernelDir, "dist")) + return osutil.RemoveAll(filepath.Join(params.KernelDir, "dist")) } diff --git a/pkg/build/darwin.go b/pkg/build/darwin.go index fbfbc0adc..93aff6925 100644 --- a/pkg/build/darwin.go +++ b/pkg/build/darwin.go @@ -14,7 +14,7 @@ func (ctx darwin) build(params Params) (ImageDetails, error) { return ImageDetails{}, fmt.Errorf("pkg/build: darwin.build not implemented") } -func (ctx darwin) clean(kernelDir, targetArch string) error { +func (ctx darwin) clean(params Params) error { // TODO(HerrSpace): Implement this. return fmt.Errorf("pkg/build: darwin.build not implemented") } diff --git a/pkg/build/freebsd.go b/pkg/build/freebsd.go index 86d6f52ef..2d8ea0f77 100644 --- a/pkg/build/freebsd.go +++ b/pkg/build/freebsd.go @@ -119,9 +119,9 @@ sudo mdconfig -d -u ${md#md} return ImageDetails{}, nil } -func (ctx freebsd) clean(kernelDir, targetArch string) error { - objPrefix := filepath.Join(kernelDir, "obj") - _, err := ctx.make(kernelDir, objPrefix, runtime.NumCPU(), "cleanworld") +func (ctx freebsd) clean(params Params) error { + objPrefix := filepath.Join(params.KernelDir, "obj") + _, err := ctx.make(params.KernelDir, objPrefix, runtime.NumCPU(), "cleanworld") return err } diff --git a/pkg/build/fuchsia.go b/pkg/build/fuchsia.go index 759d6b842..c33bfab12 100644 --- a/pkg/build/fuchsia.go +++ b/pkg/build/fuchsia.go @@ -94,7 +94,7 @@ func (fu fuchsia) build(params Params) (ImageDetails, error) { return ImageDetails{}, nil } -func (fu fuchsia) clean(kernelDir, targetArch string) error { +func (fu fuchsia) clean(params Params) error { // We always do clean build because incremental build is frequently broken. // So no need to clean separately. return nil diff --git a/pkg/build/gvisor.go b/pkg/build/gvisor.go index 49d78f2c7..077932938 100644 --- a/pkg/build/gvisor.go +++ b/pkg/build/gvisor.go @@ -95,7 +95,7 @@ func (gvisor gvisor) build(params Params) (ImageDetails, error) { return ImageDetails{}, osutil.CopyFile(outBinary, filepath.Join(params.OutputDir, "obj", sysTarget.KernelObject)) } -func (gvisor) clean(kernelDir, targetArch string) error { +func (gvisor) clean(params Params) error { // Let's assume that bazel always properly handles build without cleaning (until proven otherwise). return nil } diff --git a/pkg/build/linux.go b/pkg/build/linux.go index 5728005da..73baed5d8 100644 --- a/pkg/build/linux.go +++ b/pkg/build/linux.go @@ -14,7 +14,6 @@ import ( "path" "path/filepath" "regexp" - "runtime" "time" "github.com/google/syzkaller/pkg/debugtracer" @@ -141,8 +140,8 @@ func (linux) createImage(params Params, kernelPath string) error { return nil } -func (linux) clean(kernelDir, targetArch string) error { - return runMakeImpl(targetArch, "", "", "", "", kernelDir, runtime.NumCPU(), []string{"distclean"}) +func (linux) clean(params Params) error { + return runMake(params, "distclean") } func (linux) writeFile(file string, data []byte) error { @@ -152,10 +151,11 @@ func (linux) writeFile(file string, data []byte) error { return osutil.SandboxChown(file) } -func runMakeImpl(arch, compiler, linker, ccache, makeBin, kernelDir string, jobs int, extraArgs []string) error { - target := targets.Get(targets.Linux, arch) - args := LinuxMakeArgs(target, compiler, linker, ccache, "", jobs) +func runMake(params Params, extraArgs ...string) error { + target := targets.Get(targets.Linux, params.TargetArch) + args := LinuxMakeArgs(target, params.Compiler, params.Linker, params.Ccache, "", params.BuildCPUs) args = append(args, extraArgs...) + makeBin := params.Make if makeBin == "" { makeBin = "make" } @@ -163,7 +163,7 @@ func runMakeImpl(arch, compiler, linker, ccache, makeBin, kernelDir string, jobs if err := osutil.Sandbox(cmd, true, true); err != nil { return err } - cmd.Dir = kernelDir + cmd.Dir = params.KernelDir cmd.Env = append([]string{}, os.Environ()...) // This makes the build [more] deterministic: // 2 builds from the same sources should result in the same vmlinux binary. @@ -181,11 +181,6 @@ func runMakeImpl(arch, compiler, linker, ccache, makeBin, kernelDir string, jobs return err } -func runMake(params Params, extraArgs ...string) error { - return runMakeImpl(params.TargetArch, params.Compiler, params.Linker, - params.Ccache, params.Make, params.KernelDir, params.BuildCPUs, extraArgs) -} - func LinuxMakeArgs(target *targets.Target, compiler, linker, ccache, buildDir string, jobs int) []string { args := []string{ "-j", fmt.Sprint(jobs), diff --git a/pkg/build/netbsd.go b/pkg/build/netbsd.go index 567fa122c..8a6c4d216 100644 --- a/pkg/build/netbsd.go +++ b/pkg/build/netbsd.go @@ -86,8 +86,8 @@ func (ctx netbsd) build(params Params) (ImageDetails, error) { filepath.Join(compileDir, "netbsd")) } -func (ctx netbsd) clean(kernelDir, targetArch string) error { - _, err := osutil.RunCmd(10*time.Minute, kernelDir, "./build.sh", "-m", targetArch, +func (ctx netbsd) clean(params Params) error { + _, err := osutil.RunCmd(10*time.Minute, params.KernelDir, "./build.sh", "-m", params.TargetArch, "-U", "-j"+strconv.Itoa(runtime.NumCPU()), "cleandir") return err } diff --git a/pkg/build/openbsd.go b/pkg/build/openbsd.go index bcc16dc8c..fb94b8a60 100644 --- a/pkg/build/openbsd.go +++ b/pkg/build/openbsd.go @@ -54,7 +54,7 @@ func (ctx openbsd) build(params Params) (ImageDetails, error) { return ImageDetails{}, nil } -func (ctx openbsd) clean(kernelDir, targetArch string) error { +func (ctx openbsd) clean(params Params) error { // Building clean is fast enough and incremental builds in face of // changing config files don't work. Instead of optimizing for the // case where humans have to think, let's bludgeon it with a diff --git a/pkg/build/test.go b/pkg/build/test.go index a4f59d562..248bfe248 100644 --- a/pkg/build/test.go +++ b/pkg/build/test.go @@ -9,6 +9,6 @@ func (tb test) build(params Params) (ImageDetails, error) { return ImageDetails{}, nil } -func (tb test) clean(string, string) error { +func (tb test) clean(Params) error { return nil } |
