Skip to content

cmd/go: go list -e -compiled -json does not populate Error when cgo preprocessing fails #38990

@dominikh

Description

@dominikh

What version of Go are you using (go version)?

$ go version
go version go1.14.1 linux/amd64
go version devel +57e32c4fbd Sun May 10 14:43:46 2020 +0000 linux/amd64

What's wrong

When cgo preprocessing fails, go list -json -compiled -e prints an error on stderr and exits with a non-zero status, but it does not populate the Error field of the package. It is possible to detect that something went wrong because CompiledGoFiles isn't populated, but we can't tell why it failed. Two common reasons are a missing C compiler, and missing libraries.

Example output

$ CC=/does/not/exist go list -json -compiled -e runtime/cgo
# runtime/cgo
fork/exec /does/not/exist: no such file or directory
{
	"Dir": "/nix/store/sylhlk3fd3xik0d8hqrm20zxnfc3x7m4-go-1.14.1/share/go/src/runtime/cgo",
	"ImportPath": "runtime/cgo",
	"Name": "cgo",
	"Doc": "Package cgo contains runtime support for code generated by the cgo tool.",
	"Target": "/nix/store/sylhlk3fd3xik0d8hqrm20zxnfc3x7m4-go-1.14.1/share/go/pkg/linux_amd64/runtime/cgo.a",
	"Root": "/nix/store/sylhlk3fd3xik0d8hqrm20zxnfc3x7m4-go-1.14.1/share/go",
	"Match": [
		"runtime/cgo"
	],
	"Goroot": true,
	"Standard": true,
	"Stale": true,
	"StaleReason": "build ID mismatch",
	"GoFiles": [
		"callbacks.go",
		"callbacks_traceback.go",
		"iscgo.go",
		"mmap.go",
		"setenv.go",
		"sigaction.go"
	],
	"CgoFiles": [
		"cgo.go"
	],
	"IgnoredGoFiles": [
		"callbacks_aix.go",
		"dragonfly.go",
		"freebsd.go",
		"netbsd.go",
		"openbsd.go",
		"signal_darwin_armx.go"
	],
	"CFiles": [
		"gcc_context.c",
		"gcc_fatalf.c",
		"gcc_libinit.c",
		"gcc_linux_amd64.c",
		"gcc_mmap.c",
		"gcc_setenv.c",
		"gcc_sigaction.c",
		"gcc_traceback.c",
		"gcc_util.c"
	],
	"HFiles": [
		"libcgo.h",
		"libcgo_unix.h"
	],
	"SFiles": [
		"asm_amd64.s",
		"gcc_amd64.S"
	],
	"CgoCFLAGS": [
		"-Wall",
		"-Werror"
	],
	"CgoLDFLAGS": [
		"-lpthread"
	],
	"Imports": [
		"C",
		"unsafe"
	],
	"Deps": [
		"unsafe"
	]
}

Related: #34229 and #25842

/cc @bcmills @matloob @heschik

Metadata

Metadata

Assignees

Labels

GoCommandcmd/goNeedsFixThe path to resolution is known, but the work has not been done.WaitingForInfoIssue is not actionable because of missing required information, which needs to be provided.

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions