Skip to content

Commit 7d8a2d4

Browse files
prankkelkaryurishkuro
authored andcommitted
Build binaries for Linux on IBM Z / s390x architecture (#1982)
* Add s390x Travis support Signed-off-by: Prasanna Kelkar <Prasanna.Kelkar@ibm.com> * Execute only unit tests on s390 architecture Signed-off-by: Prasanna Kelkar <Prasanna.Kelkar@ibm.com> * cross-compile and release s390x binaries Signed-off-by: Prasanna Kelkar <Prasanna.Kelkar@ibm.com>
1 parent 3becf52 commit 7d8a2d4

File tree

4 files changed

+53
-9
lines changed

4 files changed

+53
-9
lines changed

Makefile

+36-3
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,13 @@ ALL_SRC := $(shell find . -name '*.go' \
2121

2222
# ALL_PKGS is used with 'go cover' and 'golint'
2323
ALL_PKGS := $(shell go list $(sort $(dir $(ALL_SRC))))
24-
25-
RACE=-race
24+
UNAME := $(shell uname -m)
25+
#Race flag is not supported on s390x architecture
26+
ifeq ($(UNAME), s390x)
27+
RACE=
28+
else
29+
RACE=-race
30+
endif
2631
GOTEST=go test -v $(RACE)
2732
GOLINT=golint
2833
GOVET=go vet
@@ -187,7 +192,11 @@ elasticsearch-mappings:
187192
.PHONY: build-examples
188193
build-examples:
189194
esc -pkg frontend -o examples/hotrod/services/frontend/gen_assets.go -prefix examples/hotrod/services/frontend/web_assets examples/hotrod/services/frontend/web_assets
195+
ifeq ($(GOARCH), s390x)
196+
CGO_ENABLED=0 installsuffix=cgo go build -o ./examples/hotrod/hotrod-$(GOOS)-$(GOARCH) ./examples/hotrod/main.go
197+
else
190198
CGO_ENABLED=0 installsuffix=cgo go build -o ./examples/hotrod/hotrod-$(GOOS) ./examples/hotrod/main.go
199+
endif
191200

192201
.PHONE: docker-hotrod
193202
docker-hotrod:
@@ -206,23 +215,43 @@ build-all-in-one-linux: build-ui
206215

207216
.PHONY: build-all-in-one
208217
build-all-in-one: elasticsearch-mappings
218+
ifeq ($(GOARCH), s390x)
219+
CGO_ENABLED=0 installsuffix=cgo go build -tags ui -o ./cmd/all-in-one/all-in-one-$(GOOS)-$(GOARCH) $(BUILD_INFO) ./cmd/all-in-one/main.go
220+
else
209221
CGO_ENABLED=0 installsuffix=cgo go build -tags ui -o ./cmd/all-in-one/all-in-one-$(GOOS) $(BUILD_INFO) ./cmd/all-in-one/main.go
222+
endif
210223

211224
.PHONY: build-agent
212225
build-agent:
226+
ifeq ($(GOARCH), s390x)
227+
CGO_ENABLED=0 installsuffix=cgo go build -o ./cmd/agent/agent-$(GOOS)-$(GOARCH) $(BUILD_INFO) ./cmd/agent/main.go
228+
else
213229
CGO_ENABLED=0 installsuffix=cgo go build -o ./cmd/agent/agent-$(GOOS) $(BUILD_INFO) ./cmd/agent/main.go
230+
endif
214231

215232
.PHONY: build-query
216233
build-query:
234+
ifeq ($(GOARCH), s390x)
235+
CGO_ENABLED=0 installsuffix=cgo go build -tags ui -o ./cmd/query/query-$(GOOS)-$(GOARCH) $(BUILD_INFO) ./cmd/query/main.go
236+
else
217237
CGO_ENABLED=0 installsuffix=cgo go build -tags ui -o ./cmd/query/query-$(GOOS) $(BUILD_INFO) ./cmd/query/main.go
238+
endif
218239

219240
.PHONY: build-collector
220241
build-collector: elasticsearch-mappings
242+
ifeq ($(GOARCH), s390x)
243+
CGO_ENABLED=0 installsuffix=cgo go build -o ./cmd/collector/collector-$(GOOS)-$(GOARCH) $(BUILD_INFO) ./cmd/collector/main.go
244+
else
221245
CGO_ENABLED=0 installsuffix=cgo go build -o ./cmd/collector/collector-$(GOOS) $(BUILD_INFO) ./cmd/collector/main.go
246+
endif
222247

223248
.PHONY: build-ingester
224249
build-ingester:
250+
ifeq ($(GOARCH), s390x)
251+
CGO_ENABLED=0 installsuffix=cgo go build -o ./cmd/ingester/ingester-$(GOOS)-$(GOARCH) $(BUILD_INFO) ./cmd/ingester/main.go
252+
else
225253
CGO_ENABLED=0 installsuffix=cgo go build -o ./cmd/ingester/ingester-$(GOOS) $(BUILD_INFO) ./cmd/ingester/main.go
254+
endif
226255

227256
.PHONY: docker
228257
docker: build-ui build-binaries-linux docker-images-only
@@ -239,11 +268,15 @@ build-binaries-windows:
239268
build-binaries-darwin:
240269
GOOS=darwin $(MAKE) build-platform-binaries
241270

271+
.PHONY: build-binaries-s390x
272+
build-binaries-s390x:
273+
GOOS=linux GOARCH=s390x $(MAKE) build-platform-binaries
274+
242275
.PHONY: build-platform-binaries
243276
build-platform-binaries: build-agent build-collector build-query build-ingester build-all-in-one build-examples
244277

245278
.PHONY: build-all-platforms
246-
build-all-platforms: build-binaries-linux build-binaries-windows build-binaries-darwin
279+
build-all-platforms: build-binaries-linux build-binaries-windows build-binaries-darwin build-binaries-s390x
247280

248281
.PHONY: docker-images-cassandra
249282
docker-images-cassandra:

plugin/storage/badger/stats_linux.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@ func (f *Factory) diskStatisticsUpdate() error {
3030
_ = unix.Statfs(f.Options.GetPrimary().ValueDirectory, &valDirStatfs)
3131

3232
// Using Bavail instead of Bfree to get non-priviledged user space available
33-
f.metrics.ValueLogSpaceAvailable.Update(int64(valDirStatfs.Bavail) * valDirStatfs.Bsize)
34-
f.metrics.KeyLogSpaceAvailable.Update(int64(keyDirStatfs.Bavail) * keyDirStatfs.Bsize)
33+
f.metrics.ValueLogSpaceAvailable.Update(int64(valDirStatfs.Bavail) * int64(valDirStatfs.Bsize))
34+
f.metrics.KeyLogSpaceAvailable.Update(int64(keyDirStatfs.Bavail) * int64(keyDirStatfs.Bsize))
3535

3636
/*
3737
TODO If we wanted to clean up oldest data to free up diskspace, we need at a minimum an index to the StartTime

scripts/cover.sh

+7-2
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,13 @@ for pkg in "$@"; do
5252
args="-coverprofile $COVER/cover.${i}.out" # -coverpkg $coverpkg
5353
fi
5454

55-
echo go test $args -v -race "$pkg"
56-
go test $args -v -race "$pkg"
55+
if [[ $(uname -m) == 's390x' ]]; then
56+
echo go test $args -v "$pkg"
57+
go test $args -v "$pkg"
58+
else
59+
echo go test $args -v -race "$pkg"
60+
go test $args -v -race "$pkg"
61+
fi
5762
done
5863

5964
gocovmerge "$COVER"/*.out > cover.out

scripts/travis/package-deploy.sh

+8-2
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,13 @@ function stage-platform-files {
3333
function package {
3434
local PLATFORM=$1
3535
local FILE_EXTENSION=$2
36-
37-
local PACKAGE_STAGING_DIR=jaeger-$VERSION-$PLATFORM-amd64
36+
# script start
37+
if [ "$PLATFORM" == "linux-s390x" ]; then
38+
local PACKAGE_STAGING_DIR=jaeger-$VERSION-$PLATFORM
39+
else
40+
local PACKAGE_STAGING_DIR=jaeger-$VERSION-$PLATFORM-amd64
41+
fi
42+
3843
mkdir $PACKAGE_STAGING_DIR
3944

4045
stage-platform-files $PLATFORM $PACKAGE_STAGING_DIR $FILE_EXTENSION
@@ -64,3 +69,4 @@ mkdir $DEPLOY_STAGING_DIR
6469
package linux
6570
package darwin
6671
package windows .exe
72+
package linux-s390x

0 commit comments

Comments
 (0)