hyperledger/fabric · error
failed to calculate dependencies: incomplete package: %s
Error message
failed to calculate dependencies: incomplete package: %s
What it means
During golang chaincode dependency calculation, 'go list' reports a package as Incomplete; the platform returns this error instead of building. It means the go toolchain could not fully resolve imports (missing dependency or unresolvable package) while listing transitive deps for the chaincode.
Source
Thrown at core/chaincode/platforms/golang/list.go:81
return nil, wrapExitErr(err, "'go list -deps' failed")
}
decoder := json.NewDecoder(stdout)
if err := cmd.Start(); err != nil {
return nil, err
}
var list []PackageInfo
for {
var packageInfo PackageInfo
if err := decoder.Decode(&packageInfo); errors.Is(err, io.EOF) {
break
} else if err != nil {
return nil, err
}
if packageInfo.Incomplete {
return nil, fmt.Errorf("failed to calculate dependencies: incomplete package: %s", packageInfo.ImportPath)
}
if !packageInfo.Goroot {
list = append(list, packageInfo)
}
}
err = cmd.Wait()
if err != nil {
return nil, errors.Wrapf(err, "listing deps for package %s failed", pkg)
}
return list, nil
}
func wrapExitErr(err error, message string) error {
if ee, ok := err.(*exec.ExitError); ok {
return errors.Wrapf(err, message+" with: %s", strings.TrimRight(string(ee.Stderr), "\n\r\t"))
}View on GitHub (pinned to 2736b63f8f)
Solutions
- Run 'go mod vendor' in the chaincode source so the vendor tree contains all imports
- Fix or remove the missing import reported by the ImportPath in the message
- Ensure the chaincode builds locally: 'go build ./...' before packaging
- Match the build mode to the source: GOPATH legacy chaincodes should not mix with module-style imports
Example fix
// before vendor/github.com/foo/bar (missing new dep) // after $ go mod tidy && go mod vendor
Defensive patterns
Strategy: validation
Validate before calling
cmd := exec.Command("go", "build", "./...")
if out, err := cmd.CombinedOutput(); err != nil {
return fmt.Errorf("package incomplete: %v: %s", err, out)
}
// also: go mod verify && test -d vendor || true Prevention
- Run go mod tidy && go mod vendor before packaging
- Build the chaincode locally before install
- Keep vendor/ in sync with go.mod
- Avoid mixing GOPATH and module modes
When it happens
Trigger: GetDeploymentPayload on the golang platform calls gopathDependencyPackageInfo running 'go list -deps -f ...'; any returned packageInfo with Incomplete=true triggers the error naming the ImportPath.
Common situations: vendor directory out of sync with go.mod (old GOPATH-style build); missing import that was never vendored; broken/renamed dependency; GOPATH mode used with a package that requires modules.
Related errors
- listing deps for package %s failed
- with: %s
- failed to unmarshal output from 'go list'
- too few arguments
- chaincode type not supported: %s
AI-assisted analysis of hyperledger/fabric@2736b63f8f (2026-09-04).
Data as JSON: /api/errors/1d6461c5a02263fa.
Report an issue: GitHub.