asticode / go-astilectron-bundler

Bundle your Astilectron app with ease
MIT License
129 stars 68 forks source link

Bundling failure when application imports package using go-gl #92

Closed sereeena closed 3 years ago

sereeena commented 3 years ago

I have an astilectron bootstrapped application where I've been successfully using the bundler. When I recently modified one of my packages to use github.com/llgcode/draw2d/draw2dgl for drawing purposes, the inclusion of this package (which under the hood uses github.com/go-gl/gl/v2.1/gl) causes bundling to fail. (If I comment it out it works fine).

Here's the output of my astilectron-bundler call:

2021/05/28 14:24:15 Bundling for environment linux/amd64
2021/05/28 14:24:15 Binding data
2021/05/28 14:24:15 Removing /tmp/astibundler/bind
2021/05/28 14:24:16 Creating /tmp/astibundler/bind
2021/05/28 14:24:16 Creating /tmp/astibundler/bind/vendor_astilectron_bundler
2021/05/28 14:24:16 Creating /tmp/astibundler/cache
2021/05/28 14:24:16 /tmp/astibundler/cache/astilectron-0.38.0.zip already exists, skipping download of https://github.com/asticode/astilectron/archive/v0.38.0.zip
2021/05/28 14:24:16 Copying /tmp/astibundler/cache/astilectron-0.38.0.zip to /tmp/astibundler/bind/vendor_astilectron_bundler/astilectron.zip
2021/05/28 14:24:16 /tmp/astibundler/cache/electron-linux-amd64-6.1.2.zip already exists, skipping download of https://github.com/electron/electron/releases/download/v6.1.2/electron-v6.1.2-linux-x64.zip
2021/05/28 14:24:16 Copying /tmp/astibundler/cache/electron-linux-amd64-6.1.2.zip to /tmp/astibundler/bind/vendor_astilectron_bundler/electron.zip
2021/05/28 14:24:16 Creating /tmp/astibundler/bind/resources
2021/05/28 14:24:16 Copying /home/ubuntu/go/src/oncotrack/cmd/oncotrack-client/resources to /tmp/astibundler/bind/resources
2021/05/28 14:24:16 Generating /home/ubuntu/go/src/oncotrack/cmd/oncotrack-client/bind_linux_amd64.go
2021/05/28 14:24:19 Removing /home/ubuntu/go/src/oncotrack/artifacts/linux-amd64
2021/05/28 14:24:19 Creating /home/ubuntu/go/src/oncotrack/artifacts/linux-amd64
2021/05/28 14:24:19 Building for os linux and arch amd64 astilectron: 0.38.0 electron: 6.1.2
2021/05/28 14:24:19 Executing go build -ldflags -X "main.AppName=oncotrack-client" -X "main.BuiltAt=2021-05-28 14:24:19.372772238 +0930 ACST m=+3.388932784" -X "main.VersionAstilectron=0.38.0" -X "main.VersionElectron=6.1.2" -o /home/ubuntu/go/src/oncotrack/artifacts/linux-amd64/binary .
2021/05/28 14:24:19 bundling failed: bundling for environment linux/amd64 failed: building failed: build github.com/go-gl/gl/v2.1/gl: cannot load github.com/go-gl/gl/v2.1/gl: no Go source files

Is there a way to further debug the issue with the bundler build? If I run go build, or even if I execute the go build command with the same ldflags as the bundler, it builds correctly. I'm not sure what I could be doing wrong?

asticode commented 3 years ago

@sereeena the first thing that comes to mind is that you have different environment variables when you execute go build manually. Could you paste the output of go env here? That may be a module-related issue...

asticode commented 3 years ago

Discard my previous comment, it seems to be related to the mandatory use of CGO with the gl package.

You'll need to set the CGO_ENABLED environment variable to 1 as well as CC and CCX.

Check out this comment to see an example of using those environment variables.

sereeena commented 3 years ago

Oh thank you, setting CGO_ENABLED fixed the build on linux, but I'm still getting an error on the windows build

2021/05/31 16:59:25 bundling failed: bundling for environment windows/amd64 failed: building failed: # runtime/cgo
gcc: error: unrecognized command line option ‘-mthreads’; did you mean ‘-pthread’?

Do I need some further environment variables to be set?

asticode commented 3 years ago

Per this comment you need to set specific CC and CCX values for windows

sereeena commented 3 years ago

Thank you, I was unfamiliar with CGO and cross compilation.
After installation of mingw toolchain on linux (sudo apt-get install gcc-mingw-w64) I was able to build for windows with CC=x86_64-w64-mingw32-gcc, CXX=x86_64-w64-mingw32-g++

Thanks again, will close this issue!