wagoodman/dive · error
unsupported platform
Error message
unsupported platform
What it means
This is the Windows build of dive's podman resolver (resolver_unsupported.go, compiled only where the real podman resolver is not built). resolver.Build() is a stub that unconditionally returns 'unsupported platform' — the podman engine integration cannot build images on this platform build.
Source
Thrown at dive/image/podman/resolver_unsupported.go:24
import (
"context"
"fmt"
"github.com/wagoodman/dive/dive/image"
)
type resolver struct{}
func NewResolverFromEngine() *resolver {
return &resolver{}
}
// Name returns the name of the resolver to display to the user.
func (r *resolver) Name() string {
return "podman"
}
func (r *resolver) Build(ctx context.Context, args []string) (*image.Image, error) {
return nil, fmt.Errorf("unsupported platform")
}
func (r *resolver) Fetch(ctx context.Context, id string) (*image.Image, error) {
return nil, fmt.Errorf("unsupported platform")
}
func (r *resolver) Extract(ctx context.Context, id string, l string, p string) error {
return fmt.Errorf("unsupported platform")
}
View on GitHub (pinned to d6c691947f)
Solutions
- Use the docker source instead on this platform: 'dive --source docker <image>' (docker resolver is supported on Windows against a docker daemon)
- Run dive inside WSL2 or a Linux container where the fully-supported podman resolver is compiled in
- If embedding dive, detect the platform before selecting the podman resolver and fall back to the docker/archive resolver
- Track/upgrade to a dive version that ships native podman support for your platform if one becomes available
Example fix
# before (windows shell) set DIVE_ENGINE=podman dive myimg:latest # Build/Fetch -> unsupported platform # after set DIVE_ENGINE=docker dive myimg:latest # or run under WSL2 for podman support
Defensive patterns
Strategy: validation
Validate before calling
// Choose a resolver that exists on this platform before calling Build.
import "runtime"
func pickBuildResolver() image.Resolver {
if runtime.GOOS == "windows" {
return docker.NewResolverFromEngine() // podman Build unsupported on this build
}
return podman.NewResolverFromEngine()
} Type guard
// Narrow to the podman resolver only on supported platforms.
func podmanResolverSupported() bool { return runtime.GOOS != "windows" } Try / catch
if _, err := res.Build(ctx, args); err != nil && err.Error() == "unsupported platform" {
// deterministic stub error: switch to the docker resolver; do not retry
} Prevention
- Pin 'engine: docker' in .dive.yaml on Windows hosts
- Run podman-based flows inside WSL2/Linux containers
- Treat 'unsupported platform' as a build-configuration fact, not a transient failure — never retry it
When it happens
Trigger: Calling podman.NewResolverFromEngine().Build(...) on a platform where dive was compiled without podman support (i.e. the unsupported stub file is in the build). Practically: Windows binaries, or any build lacking the unix build tag used by the real resolver_cli/resolver.
Common situations: Running the stock Windows dive.exe with 'engine: podman' in .dive.yaml or DIVE_ENGINE=podman; library consumers compiling dive's podman package on Windows and calling Build; CI on windows-latest runners selecting the podman source.
Related errors
- cannot find podman client executable
- unable to resolve image %q: %+v
- unable to extract from image %q: %+v
- no results returned
- cannot determine image provider for build: %w
AI-assisted analysis of wagoodman/dive@d6c691947f (2026-08-15).
Data as JSON: /api/errors/a8088010ff5dff56.
Report an issue: GitHub.