aboutsummaryrefslogtreecommitdiffstats
path: root/pkg
diff options
context:
space:
mode:
Diffstat (limited to 'pkg')
-rw-r--r--pkg/build/build.go8
-rw-r--r--pkg/build/build_test.go18
-rw-r--r--pkg/build/linux.go2
-rw-r--r--pkg/build/netbsd.go4
-rw-r--r--pkg/build/openbsd.go2
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 }{