aboutsummaryrefslogtreecommitdiffstats
path: root/pkg/build
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/build')
-rw-r--r--pkg/build/android.go6
-rw-r--r--pkg/build/build.go10
-rw-r--r--pkg/build/cuttlefish.go6
-rw-r--r--pkg/build/darwin.go2
-rw-r--r--pkg/build/freebsd.go6
-rw-r--r--pkg/build/fuchsia.go2
-rw-r--r--pkg/build/gvisor.go2
-rw-r--r--pkg/build/linux.go19
-rw-r--r--pkg/build/netbsd.go4
-rw-r--r--pkg/build/openbsd.go2
-rw-r--r--pkg/build/test.go2
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
}