Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

plugin: requires CGO_ENABLED=1 #19569

Open
johanbrandhorst opened this issue Mar 16, 2017 · 7 comments
Open

plugin: requires CGO_ENABLED=1 #19569

johanbrandhorst opened this issue Mar 16, 2017 · 7 comments
Milestone

Comments

@johanbrandhorst
Copy link
Member

@johanbrandhorst johanbrandhorst commented Mar 16, 2017

Please answer these questions before submitting your issue. Thanks!

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

go version go1.8 linux/amd64

What operating system and processor architecture are you using (go env)?

GOARCH="amd64"
GOBIN="/home/johan/gows/bin"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/johan/gows"
GORACE=""
GOROOT="/usr/lib/go"
GOTOOLDIR="/usr/lib/go/pkg/tool/linux_amd64"
GCCGO="gccgo"
CC="gcc"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build464530147=/tmp/go-build -gno-record-gcc-switches"
CXX="g++"
CGO_ENABLED="1"
PKG_CONFIG="pkg-config"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"

What did you do?

I tried to build a simple plugin with CGO_ENABLED=0. It builds fine, and at plugin load time you get an error plugin: not implemented. This is an intentional limitation at the moment, but I think it moves backwards in the general trend of the language development, which has been moving away from C dependencies. This should hopefully be a discussion around supporting plugins without the need for CGO.

What did you expect to see?

I expected to be able to build and load plugins without CGO.

What did you see instead?

I got an error saying plugin: not implemented.

@bradfitz bradfitz changed the title Plugin use requires CGO_ENABLED=1 plugin: requires CGO_ENABLED=1 Mar 16, 2017
@bradfitz bradfitz added this to the Unplanned milestone Mar 16, 2017
@bradfitz

This comment has been minimized.

Copy link
Contributor

@bradfitz bradfitz commented Mar 16, 2017

@emilevauge

This comment has been minimized.

Copy link

@emilevauge emilevauge commented Apr 5, 2017

Ouch, this one is really annoying as it prevents from using plugins with a statically linked golang executable (made for Docker containers).

@ianlancetaylor

This comment has been minimized.

Copy link
Contributor

@ianlancetaylor ianlancetaylor commented Apr 5, 2017

The implementation of plugins requires the dynamic linker, so it will not work with statically linked executables. Changing that would be hard. There are no plans to do it.

@gopherbot

This comment has been minimized.

Copy link

@gopherbot gopherbot commented May 11, 2017

CL https://golang.org/cl/43158 mentions this issue.

@odeke-em

This comment has been minimized.

Copy link
Member

@odeke-em odeke-em commented May 11, 2017

I've mailed https://go-review.googlesource.com/43158 for starters.

@johanbrandhorst

This comment has been minimized.

Copy link
Member Author

@johanbrandhorst johanbrandhorst commented May 11, 2017

Wouldn't this technically break the backwards compatibility promise? Since in 1.8 these builds compile fine with runtime errors.

@ianlancetaylor

This comment has been minimized.

Copy link
Contributor

@ianlancetaylor ianlancetaylor commented May 11, 2017

As noted on the CL, I don't think preventing programs that import the plugin package from building is the right approach. And if we do think it is the right approach, we can do that by simply changing the plugin package to fail in some way when cgo is not available.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Linked pull requests

Successfully merging a pull request may close this issue.

None yet
6 participants
You can’t perform that action at this time.