troian / golang-cross Goto Github PK
View Code? Open in Web Editor NEWThe golang-cross is now part of https://github.com/goreleaser/goreleaser-cross
Home Page: https://github.com/troian/golang-cross
License: MIT License
The golang-cross is now part of https://github.com/goreleaser/goreleaser-cross
Home Page: https://github.com/troian/golang-cross
License: MIT License
Hi @troian, first of all thank you for your work here!
I am trying to cross-compile a Go project (https://github.com/hazcod/ssh-ca-provider) but failing because it requires CGO to include libpcsc
.
Usage:
% docker run -ti --rm -v $(pwd)/app --workdir /app troian/golang-cross build --rm-dist --snapshot --config=.github/goreleaser.yml
goreleaser.yml:
before:
hooks:
- apt-get update && apt-get install -y pkgconf pcsc-lite-dev gcc libpcsclite-dev libpcsclite
- go mod download
dockers:
-
image_templates:
- "ghcr.io/hazcod/ssh-ca-provider/sscp:{{ .Tag }}"
- "ghcr.io/hazcod/ssh-ca-provider/sscp:v{{ .Major }}"
- "ghcr.io/hazcod/ssh-ca-provider/sscp:latest"
builds:
-
id: darwin-amd64
dir: ./cmd/client/
goos:
- darwin
goarch:
- amd64
env:
- CGO_ENABLED=1
- PKG_CONFIG_SYSROOT_DIR=/sysroot/macos/amd64
- PKG_CONFIG_PATH=/sysroot/macos/amd64/usr/local/lib/pkgconfig
- CC=o64-clang
- CXX=o64-clang++
flags:
- -mod=readonly
ldflags:
- -s -w -X main.version={{.Version}}
-
id: linux-armhf
dir: ./cmd/client/
goos:
- linux
goarch:
- arm
goarm:
- 7
env:
- CGO_ENABLED=1
- CC=arm-linux-gnueabihf-gcc
- CXX=arm-linux-gnueabihf-g++
- CGO_FLAGS=--sysroot=/sysroot/linux/armhf
- CGO_LDFLAGS=--sysroot=/sysroot/linux/armhf
- PKG_CONFIG_SYSROOT_DIR=/sysroot/linux/armhf
- PKG_CONFIG_PATH=/sysroot/linux/armhf/opt/vc/lib/pkgconfig:/sysroot/linux/armhf/usr/lib/arm-linux-gnueabihf/pkgconfig:/sysroot/linux/armhf/usr/lib/pkgconfig:/sysroot/linux/armhf/usr/local/lib/pkgconfig
flags:
- -mod=readonly
ldflags:
- -s -w -X main.version={{.Version}}
archives:
- replacements:
darwin: Darwin
linux: Linux
windows: Windows
386: i386
amd64: x86_64
checksum:
name_template: 'checksums.txt'
snapshot:
name_template: "{{ .Tag }}-next"
changelog:
sort: asc
filters:
exclude:
- '^docs:'
- '^test:'
- '^chore'
And the logs:
⨯ build failed after 269.69s error=failed to build for linux_arm_7: # pkg-config --cflags -- libpcsclite
Package libpcsclite was not found in the pkg-config search path.
Perhaps you should add the directory containing `libpcsclite.pc'
to the PKG_CONFIG_PATH environment variable
No package 'libpcsclite' found
pkg-config: exit status 1
golang 1.17.2 has been released
Hi troian,
I'm trying to cross-compile my go app for linux and windows, but in my pipeline I'm getting this:
release failed after 78.89s error=failed to build for windows_amd64: exit status 2: # runtime/cgo
cgo: C compiler "x86_64-w64-mingw32-gcc" not found: exec: "x86_64-w64-mingw32-gcc": executable file not found in $PATH
Using this command:
docker run --rm --privileged \
-v $PWD:/go/src/gitlab.com/pmoscode/tarpit-analyzer \
-w /go/src/gitlab.com/pmoscode/tarpit-analyzer \
-v /var/run/docker.sock:/var/run/docker.sock \
-e DOCKER_USERNAME -e DOCKER_PASSWORD -e DOCKER_REGISTRY \
-e GITLAB_TOKEN \
-e CGO_ENABLED=1 \
troian/golang-cross:v1.17.2-base release --rm-dist
I have neither sysroot nor --env-file .release-env set.
And this is my build section inside .goreleaser.yaml:
builds:
- id: linux-amd64
env:
- CC=gcc
- CXX=g++
goos:
- linux
goarch:
- amd64
- id: windows-amd64
env:
- CC=x86_64-w64-mingw32-gcc
- CXX=x86_64-w64-mingw32-g++
goos:
- windows
goarch:
- amd64
What have I missed?
Thx
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.