diff options
Diffstat (limited to 'pkg')
| -rw-r--r-- | pkg/build/build.go | 8 | ||||
| -rw-r--r-- | pkg/build/build_test.go | 18 | ||||
| -rw-r--r-- | pkg/build/linux.go | 2 | ||||
| -rw-r--r-- | pkg/build/netbsd.go | 4 | ||||
| -rw-r--r-- | pkg/build/openbsd.go | 2 |
5 files changed, 29 insertions, 5 deletions
diff --git a/pkg/build/build.go b/pkg/build/build.go index 31910e04b..8d1b7a0f0 100644 --- a/pkg/build/build.go +++ b/pkg/build/build.go @@ -41,7 +41,8 @@ func Image(targetOS, targetArch, vmType, kernelDir, outputDir, compiler, userspa return fmt.Errorf("failed to write config file: %v", err) } } - return builder.build(targetArch, vmType, kernelDir, outputDir, compiler, userspaceDir, cmdlineFile, sysctlFile, config) + err = builder.build(targetArch, vmType, kernelDir, outputDir, compiler, userspaceDir, cmdlineFile, sysctlFile, config) + return extractRootCause(err) } func Clean(targetOS, targetArch, vmType, kernelDir string) error { @@ -125,6 +126,9 @@ func CompilerIdentity(compiler string) (string, error) { } func extractRootCause(err error) error { + if err == nil { + return nil + } verr, ok := err.(*osutil.VerboseError) if !ok { return err @@ -159,8 +163,10 @@ type buildFailureCause struct { var buildFailureCauses = [...]buildFailureCause{ {pattern: []byte(": error: ")}, + {pattern: []byte("ERROR: ")}, {pattern: []byte(": fatal error: ")}, {pattern: []byte(": undefined reference to")}, {weak: true, pattern: []byte(": final link failed: ")}, {weak: true, pattern: []byte("collect2: error: ")}, + {weak: true, pattern: []byte("FAILED: Build did NOT complete")}, } diff --git a/pkg/build/build_test.go b/pkg/build/build_test.go index 3900dfaf7..7f0a9e607 100644 --- a/pkg/build/build_test.go +++ b/pkg/build/build_test.go @@ -66,6 +66,24 @@ make: *** Waiting for unfinished jobs.... `, "/gcc-5.5.0/bin/../lib/gcc/x86_64-unknown-linux-gnu/5.5.0/plugin/include/builtins.h:23:17: fatal error: mpc.h: No such file or directory", }, + {` +Starting local Bazel server and connecting to it... +Loading: +Loading: 0 packages loaded +Analyzing: target //runsc:runsc (1 packages loaded) +Analyzing: target //runsc:runsc (5 packages loaded) +Analyzing: target //runsc:runsc (15 packages loaded) +Analyzing: target //runsc:runsc (92 packages loaded) +Analyzing: target //runsc:runsc (99 packages loaded) +Analyzing: target //runsc:runsc (115 packages loaded) +ERROR: /syzkaller/managers/ptrace-direct-overlay-host/kernel/vdso/BUILD:13:1: no such target '@bazel_tools//tools/cpp:cc_flags': target 'cc_flags' not declared in package 'tools/cpp' defined by /syzkaller/home/.cache/bazel/_bazel_root/e1c9d86bae2b34f90e83d224bc900958/external/bazel_tools/tools/cpp/BUILD and referenced by '//vdso:vdso' +ERROR: Analysis of target '//runsc:runsc' failed; build aborted: Analysis failed +INFO: Elapsed time: 14.914s +INFO: 0 processes. +FAILED: Build did NOT complete successfully (189 packages loaded) +`, + "ERROR: Analysis of target '//runsc:runsc' failed; build aborted: Analysis failed", + }, } { got := extractCauseInner([]byte(s.e)) if !bytes.Equal([]byte(s.expect), got) { diff --git a/pkg/build/linux.go b/pkg/build/linux.go index 8b57cbec4..bdfa0edd2 100644 --- a/pkg/build/linux.go +++ b/pkg/build/linux.go @@ -66,7 +66,7 @@ func (linux) buildKernel(kernelDir, outputDir, compiler string, config []byte) e } cmd.Dir = kernelDir if _, err := osutil.Run(time.Hour, cmd); err != nil { - return extractRootCause(err) + return err } vmlinux := filepath.Join(kernelDir, "vmlinux") outputVmlinux := filepath.Join(outputDir, "obj", "vmlinux") diff --git a/pkg/build/netbsd.go b/pkg/build/netbsd.go index 91280577e..315a996f6 100644 --- a/pkg/build/netbsd.go +++ b/pkg/build/netbsd.go @@ -41,13 +41,13 @@ no options SVS // Build tools before building kernel if _, err := osutil.RunCmd(10*time.Minute, kernelDir, "./build.sh", "-m", targetArch, "-U", "-u", "-j"+strconv.Itoa(runtime.NumCPU()), "tools"); err != nil { - return extractRootCause(err) + return err } // Build kernel if _, err := osutil.RunCmd(10*time.Minute, kernelDir, "./build.sh", "-m", targetArch, "-U", "-u", "-j"+strconv.Itoa(runtime.NumCPU()), "kernel="+kernelName); err != nil { - return extractRootCause(err) + return err } for _, s := range []struct{ dir, src, dst string }{ {compileDir, "netbsd.gdb", "obj/netbsd.gdb"}, diff --git a/pkg/build/openbsd.go b/pkg/build/openbsd.go index 24bd7a7d4..49c78c6d0 100644 --- a/pkg/build/openbsd.go +++ b/pkg/build/openbsd.go @@ -35,7 +35,7 @@ func (ctx openbsd) build(targetArch, vmType, kernelDir, outputDir, compiler, use } for _, tgt := range []string{"clean", "obj", "config", "all"} { if err := ctx.make(compileDir, tgt); err != nil { - return extractRootCause(err) + return err } } for _, s := range []struct{ dir, src, dst string }{ |
