aboutsummaryrefslogtreecommitdiffstats
path: root/pkg/kernel/kernel.go
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2017-06-20 19:56:13 +0200
committerDmitry Vyukov <dvyukov@google.com>2017-06-20 19:59:42 +0200
commite39114dc0cfa7566dd2472e3e33a64586692d6cc (patch)
tree9b33e98b6f7ab35af40c49f1c204733c17a49bda /pkg/kernel/kernel.go
parent5cc5b2714e61b1d64d463328308fbe231ab8387f (diff)
pkg/kernel: move partial config functionality into a separate function
Move partial config functionality into BuildWithPartConfig. It is used only for syz-gce which will be removed soon. Provide a better interface for new continuous build system.
Diffstat (limited to 'pkg/kernel/kernel.go')
-rw-r--r--pkg/kernel/kernel.go52
1 files changed, 30 insertions, 22 deletions
diff --git a/pkg/kernel/kernel.go b/pkg/kernel/kernel.go
index 77e6f6c1f..c38020b59 100644
--- a/pkg/kernel/kernel.go
+++ b/pkg/kernel/kernel.go
@@ -25,35 +25,43 @@ import (
"github.com/google/syzkaller/pkg/osutil"
)
-func Build(dir, compiler, config string, fullConfig bool) error {
+func Build(dir, compiler, config string) error {
+ if err := fileutil.CopyFile(config, filepath.Join(dir, ".config")); err != nil {
+ return fmt.Errorf("failed to write config file: %v", err)
+ }
+ return build(dir, compiler)
+}
+
+// TODO(dvyukov): this is only for syz-gce, remove when syz-gce is deleted.
+func BuildWithPartConfig(dir, compiler, config string) error {
const timeout = 10 * time.Minute // default timeout for command invocations
- if fullConfig {
- if err := ioutil.WriteFile(filepath.Join(dir, ".config"), []byte(config), 0600); err != nil {
- return fmt.Errorf("failed to write config file: %v", err)
- }
- } else {
- os.Remove(filepath.Join(dir, ".config"))
- configFile := filepath.Join(dir, "syz.config")
- if err := ioutil.WriteFile(configFile, []byte(config), 0600); err != nil {
- return fmt.Errorf("failed to write config file: %v", err)
- }
- defer os.Remove(configFile)
- if _, err := osutil.RunCmd(timeout, dir, "make", "defconfig"); err != nil {
- return err
- }
- if _, err := osutil.RunCmd(timeout, dir, "make", "kvmconfig"); err != nil {
- return err
- }
- if _, err := osutil.RunCmd(timeout, dir, "scripts/kconfig/merge_config.sh", "-n", ".config", configFile); err != nil {
- return err
- }
+ os.Remove(filepath.Join(dir, ".config"))
+ configFile := filepath.Join(dir, "syz.config")
+ if err := ioutil.WriteFile(configFile, []byte(config), 0600); err != nil {
+ return fmt.Errorf("failed to write config file: %v", err)
+ }
+ defer os.Remove(configFile)
+ if _, err := osutil.RunCmd(timeout, dir, "make", "defconfig"); err != nil {
+ return err
+ }
+ if _, err := osutil.RunCmd(timeout, dir, "make", "kvmconfig"); err != nil {
+ return err
+ }
+ if _, err := osutil.RunCmd(timeout, dir, "scripts/kconfig/merge_config.sh", "-n", ".config", configFile); err != nil {
+ return err
}
+ return build(dir, compiler)
+}
+
+func build(dir, compiler string) error {
+ const timeout = 10 * time.Minute // default timeout for command invocations
if _, err := osutil.RunCmd(timeout, dir, "make", "olddefconfig"); err != nil {
return err
}
// We build only bzImage as we currently don't use modules.
// Build of a large kernel can take a while on a 1 CPU VM.
- if _, err := osutil.RunCmd(3*time.Hour, dir, "make", "bzImage", "-j", strconv.Itoa(runtime.NumCPU()), "CC="+compiler); err != nil {
+ cpu := strconv.Itoa(runtime.NumCPU())
+ if _, err := osutil.RunCmd(3*time.Hour, dir, "make", "bzImage", "-j", cpu, "CC="+compiler); err != nil {
return err
}
return nil