← Back to issue list

go plugin with snapcraft 4 doesn't support building static binaries

View original Launchpad issue

Metadata

Project
snapcraft (launchpad)
Number
#1884558
Type
issue
State
closed
Author
~anonymouse67
Labels
Created
Updated
Closed

Current evaluation

Closed as stale. The Go plugin has significantly changed since Snapcraft 4, rendering the report obsolete. Users should upgrade to a newer Snapcraft version for updated build behavior.

Suggested action:

No scores available.

Issue body

I have a go program which does not require any dynamic library dependencies, and as such I would like to link it statically and use the `base: base` for this snap, so I have tried this: ``` parts:   etrace:     build-environment:       - CGO_ENABLED: "0"     plugin: go     source: . ``` but it still produces a dynamically linked executable against libc, because snapcraft internally does this command always: ``` Building etrace go build -o /root/parts/etrace/install/bin ./... go build -ldflags -linkmode=external -o /root/parts/etrace/install/bin ./... # github.com/anonymouse64/etrace/cmd/etrace loadinternal: cannot find runtime/cgo ``` which completes, but gives me this: ``` $ ldd ./squashfs-root/bin/etrace         linux-vdso.so.1 (0x00007ffd91f77000)         libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f3d02414000)         /lib64/ld-linux-x86-64.so.2 (0x00007f3d02624000) ``` which I can't use with the bare base snap. What works instead is to do this manually: ```     override-build: |       mkdir -p $SNAPCRAFT_PART_INSTALL/bin       cd $SNAPCRAFT_PART_SRC       go build -o $SNAPCRAFT_PART_INSTALL/bin ./... ``` It would be nice if snapcraft either: 1. automatically detected that CGO_ENABLED=0 was set in the build-environment and didn't manually link things 2. automatically detected that the built binaries from go build -o ./bin ./... were not dynamically linked at all and skipped the final link step 3. had a property or otherwise first-class mechanism to specify that a go part built with the go plugin should be statically compiled (perhaps an option to the plugin yaml, etc.), this could also potentially replace setting the build-environment for CGO_ENABLED=0 as well snapcraft, version 4.0.5

Evaluation history

Date Model Scores Action Summary
qwen/qwen3.6-35b-a3b Closed as stale. The Go plugin has significantly changed since Snapcraft 4, rendering the report obsolete. Users should upgrade to a newer Snapcraft version for updated build behavior.
qwen/qwen3.6-35b-a3b
Staleness: 95
Complexity: 35
Confidence: 90
Support Request: 10
close stale Go plugin in Snapcraft 4 forces dynamic linking despite CGO_ENABLED=0, blocking static builds for bare base snaps. Issue is 6 years old, has zero maintainer interaction, and references a long-obsolete version.
qwen/qwen3.6-35b-a3b
Staleness: 95
Complexity: 30
Confidence: 85
Support Request: 10
close stale Snapcraft 4 go plugin forces dynamic linking despite CGO_ENABLED=0, preventing static builds for bare base snaps. Issue is 6 years old with no maintainer response.
qwen3.6-35b-a3b-mtp-q6
Staleness: 98
Complexity: 35
Confidence: 85
Support Request: 20
close stale Snapcraft 4 Go plugin forces dynamic linking even with CGO_ENABLED=0, blocking static builds for bare bases. Report is six years old, completely untriaged, and lacks maintainer engagement.
qwen3.6-35b-a3b-mtp-q6
Staleness: 95
Complexity: 20
Confidence: 90
Support Request: 30
close stale Snapcraft's go plugin forces dynamic linking, blocking static builds for bare bases. Open with zero comments and 270+ days of inactivity. Needs triage and an explicit static build option or CGO_ENABLED=0 auto-detection.

Update history

No update history recorded yet.

Related issues

Issue Project State Summary Similarity
#1616985 the go plugin doesn't use go build-snaps snapcraft (launchpad) closed Resolved by adding build-snap support to snapcraft and publishing a dedicated go snap. The go plugin was updated to use the go build-snap instead of the legacy deb package, enabling support for newer Go versions.
75%
#1751 the go plugin doesn't use go build-snaps snapcraft closed Closed without resolution or discussion. The report appears abandoned or superseded, with no fix implemented or merge details provided.
71%