From 610352d5d70e5805b4f7580c88d0f5ab18dc7654 Mon Sep 17 00:00:00 2001 From: Greg Steuck Date: Wed, 5 Dec 2018 16:02:07 -0800 Subject: 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. --- pkg/build/openbsd.go | 49 ++++++++++++------------------------------------- 1 file changed, 12 insertions(+), 37 deletions(-) (limited to 'pkg') 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...) -- cgit mrf-deployment