Skip to content

Commit 06b04af

Browse files
committed
contrib: Use xgo to use Cgo in cross-compiled release builds. (#5120)
This updates the release.sh script to use xgo for Linux, Windows, and Darwin builds. This uses https://github.com/techknowlogick/xgo/, which is a maintained fork of https://github.com/karalabe/xgo. This fixes the panics related to Badger compression which only uses Zstd when Cgo is enabled. See #4995. v20.03.0 and v20.03.1 were already built with this change to fix macOS and Windows binaries. Linux builds were working fine. Fixes #4995, DGRAPH-1139
1 parent 5fc7b50 commit 06b04af

File tree

1 file changed

+17
-25
lines changed

1 file changed

+17
-25
lines changed

contrib/release.sh

Lines changed: 17 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ go get -u github.com/dgraph-io/dgo
7474
go get -u github.com/dgraph-io/badger
7575
go get -u github.com/golang/protobuf/protoc-gen-go
7676
go get -u github.com/gogo/protobuf/protoc-gen-gofast
77+
go get -u src.techknowlogick.com/xgo
7778

7879
pushd $GOPATH/src/google.golang.org/grpc
7980
git checkout v1.13.0
@@ -119,66 +120,57 @@ popd
119120

120121
# Build Windows.
121122
pushd $basedir/dgraph/dgraph
122-
env GOOS=windows GOARCH=amd64 go get -v -d .
123-
env GOOS=windows GOARCH=amd64 GO111MODULE=on go build -v -o dgraph-windows-amd64.exe -ldflags \
123+
xgo -go="go-$GOVERSION" --targets=windows/amd64 -ldflags \
124124
"-X $release=$release_version -X $branch=$gitBranch -X $commitSHA1=$lastCommitSHA1 -X '$commitTime=$lastCommitTime'" .
125125
mkdir $TMP/windows
126-
mv dgraph-windows-amd64.exe $TMP/windows/dgraph.exe
126+
mv dgraph-windows-4.0-amd64.exe $TMP/windows/dgraph.exe
127127
popd
128128

129129
pushd $basedir/badger/badger
130-
env GOOS=windows GOARCH=amd64 go get -v -d .
131-
env GOOS=windows GOARCH=amd64 GO111MODULE=on go build -v -o badger-windows-amd64.exe .
132-
mv badger-windows-amd64.exe $TMP/windows/badger.exe
130+
xgo -go="go-$GOVERSION" --targets=windows/amd64 .
131+
mv badger-windows-4.0-amd64.exe $TMP/windows/badger.exe
133132
popd
134133

135134
pushd $basedir/ratel
136-
env GOOS=windows GOARCH=amd64 go get -v -d .
137-
env GOOS=windows GOARCH=amd64 go build -v -o ratel-windows-amd64.exe -ldflags "-X $ratel_release=$release_version" .
138-
mv ratel-windows-amd64.exe $TMP/windows/dgraph-ratel.exe
135+
xgo -go="go-$GOVERSION" --targets=windows/amd64 -ldflags "-X $ratel_release=$release_version" .
136+
mv ratel-windows-4.0-amd64.exe $TMP/windows/dgraph-ratel.exe
139137
popd
140138

141139
# Build Darwin.
142140
pushd $basedir/dgraph/dgraph
143-
env GOOS=darwin GOARCH=amd64 go get -v -d .
144-
env GOOS=darwin GOARCH=amd64 GO111MODULE=on go build -v -o dgraph-darwin-amd64 -ldflags \
145-
"-X $release=$release_version -X $branch=$gitBranch -X $commitSHA1=$lastCommitSHA1 -X '$commitTime=$lastCommitTime'" .
141+
xgo -go="go-$GOVERSION" --targets=darwin-10.9/amd64 -ldflags \
142+
"-X $release=$release_version -X $branch=$gitBranch -X $commitSHA1=$lastCommitSHA1 -X '$commitTime=$lastCommitTime'" .
146143
mkdir $TMP/darwin
147-
mv dgraph-darwin-amd64 $TMP/darwin/dgraph
144+
mv dgraph-darwin-10.9-amd64 $TMP/darwin/dgraph
148145
popd
149146

150147
pushd $basedir/badger/badger
151-
env GOOS=darwin GOARCH=amd64 go get -v -d .
152-
env GOOS=darwin GOARCH=amd64 GO111MODULE=on go build -v -o badger-darwin-amd64 .
153-
mv badger-darwin-amd64 $TMP/darwin/badger
148+
xgo -go="go-$GOVERSION" --targets=darwin-10.9/amd64 .
149+
mv badger-darwin-10.9-amd64 $TMP/darwin/badger
154150
popd
155151

156152
pushd $basedir/ratel
157-
env GOOS=darwin GOARCH=amd64 go get -v -d .
158-
env GOOS=darwin GOARCH=amd64 go build -v -o ratel-darwin-amd64 -v -ldflags "-X $ratel_release=$release_version" .
159-
mv ratel-darwin-amd64 $TMP/darwin/dgraph-ratel
153+
xgo -go="go-$GOVERSION" --targets=darwin-10.9/amd64 -ldflags "-X $ratel_release=$release_version" .
154+
mv ratel-darwin-10.9-amd64 $TMP/darwin/dgraph-ratel
160155
popd
161156

162157
# Build Linux.
163158
pushd $basedir/dgraph/dgraph
164-
env GOOS=linux GOARCH=amd64 go get -v -d .
165-
env GOOS=linux GOARCH=amd64 GO111MODULE=on go build -v -o dgraph-linux-amd64 -ldflags \
159+
xgo -go="go-$GOVERSION" --targets=linux/amd64 -ldflags \
166160
"-X $release=$release_version -X $branch=$gitBranch -X $commitSHA1=$lastCommitSHA1 -X '$commitTime=$lastCommitTime'" .
167161
strip -x dgraph-linux-amd64
168162
mkdir $TMP/linux
169163
mv dgraph-linux-amd64 $TMP/linux/dgraph
170164
popd
171165

172166
pushd $basedir/badger/badger
173-
env GOOS=linux GOARCH=amd64 go get -v -d .
174-
env GOOS=linux GOARCH=amd64 GO111MODULE=on go build -v -o badger-linux-amd64 .
167+
xgo -go="go-$GOVERSION" --targets=linux/amd64 .
175168
strip -x badger-linux-amd64
176169
mv badger-linux-amd64 $TMP/linux/badger
177170
popd
178171

179172
pushd $basedir/ratel
180-
env GOOS=linux GOARCH=amd64 go get -v -d .
181-
env GOOS=linux GOARCH=amd64 go build -v -o ratel-linux-amd64 -ldflags "-X $ratel_release=$release_version" .
173+
xgo -go="go-$GOVERSION" --targets=linux/amd64 -ldflags "-X $ratel_release=$release_version" .
182174
strip -x ratel-linux-amd64
183175
mv ratel-linux-amd64 $TMP/linux/dgraph-ratel
184176
popd

0 commit comments

Comments
 (0)