aboutsummaryrefslogtreecommitdiffstats
path: root/pkg
diff options
context:
space:
mode:
authorGreg Steuck <gnezdo@google.com>2018-12-05 16:02:07 -0800
committerDmitry Vyukov <dvyukov@google.com>2018-12-07 09:50:12 +0100
commit610352d5d70e5805b4f7580c88d0f5ab18dc7654 (patch)
tree9d75eed7bf69810f261068498d612fe82a530bfb /pkg
parentf1c702a86ea52f3d1ec9f4d58153aab2f27f9023 (diff)
pkg/build/openbsd: require kernel config files as configuration data
Previously the config was generated directly, but testing multiple configurations makes this cumbersome going forward. This makes kernel_config a mandatory parameter.
Diffstat (limited to 'pkg')
-rw-r--r--pkg/build/openbsd.go49
1 files changed, 12 insertions, 37 deletions
diff --git a/pkg/build/openbsd.go b/pkg/build/openbsd.go
index 319891cbc..f37a6fde0 100644
--- a/pkg/build/openbsd.go
+++ b/pkg/build/openbsd.go
@@ -22,14 +22,22 @@ func (ctx openbsd) build(targetArch, vmType, kernelDir, outputDir, compiler, use
confDir := fmt.Sprintf("%v/sys/arch/%v/conf", kernelDir, targetArch)
compileDir := fmt.Sprintf("%v/sys/arch/%v/compile/%v", kernelDir, targetArch, kernelName)
- useGCE := vmType == "gce"
- if err := ctx.configure(confDir, compileDir, kernelName, useGCE); err != nil {
+ if err := osutil.WriteFile(filepath.Join(confDir, kernelName), config); err != nil {
return err
}
- if err := ctx.make(compileDir, "all"); err != nil {
+ if err := osutil.MkdirAll(compileDir); err != nil {
return err
}
+ makefile := []byte(".include \"../Makefile.inc\"\n")
+ if err := osutil.WriteFile(filepath.Join(compileDir, "Makefile"), makefile); err != nil {
+ return err
+ }
+ for _, tgt := range []string{"obj", "config", "all"} {
+ if err := ctx.make(compileDir, tgt); err != nil {
+ return err
+ }
+ }
for _, s := range []struct{ dir, src, dst string }{
{compileDir, "obj/bsd", "kernel"},
{compileDir, "obj/bsd.gdb", "obj/bsd.gdb"},
@@ -42,7 +50,7 @@ func (ctx openbsd) build(targetArch, vmType, kernelDir, outputDir, compiler, use
return fmt.Errorf("failed to copy %v -> %v: %v", fullSrc, fullDst, err)
}
}
- if useGCE {
+ if vmType == "gce" {
return CopyKernelToImage(outputDir)
}
return nil
@@ -52,39 +60,6 @@ func (ctx openbsd) clean(kernelDir string) error {
return ctx.make(kernelDir, "", "clean")
}
-func (ctx openbsd) configure(confDir, compileDir, kernelName string, useGCE bool) error {
- baseConfig := "GENERIC"
- if useGCE {
- // GCE supports multiple CPUs.
- // TODO(gnezdo): Switch to GENERIC.MP once kernel crash is solved.
- // http://openbsd-archive.7691.n7.nabble.com/option-kcov-GENERIC-MP-gt-silent-crash-tc355807.html
- baseConfig = "GENERIC"
- }
- conf := []byte(fmt.Sprintf(`
-include "arch/amd64/conf/%v"
-pseudo-device kcov 1
-`, baseConfig))
- if err := osutil.WriteFile(filepath.Join(confDir, kernelName), conf); err != nil {
- return err
- }
-
- if err := osutil.MkdirAll(compileDir); err != nil {
- return err
- }
- makefile := []byte(".include \"../Makefile.inc\"\n")
- if err := osutil.WriteFile(filepath.Join(compileDir, "Makefile"), makefile); err != nil {
- return err
- }
- if err := ctx.make(compileDir, "obj"); err != nil {
- return err
- }
- if err := ctx.make(compileDir, "config"); err != nil {
- return err
- }
-
- return nil
-}
-
func (ctx openbsd) make(kernelDir string, args ...string) error {
args = append([]string{"-j", strconv.Itoa(runtime.NumCPU())}, args...)
_, err := osutil.RunCmd(10*time.Minute, kernelDir, "make", args...)