blob: 0b451f9c5ca4db53a4c78523d24f334215cd0b8c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
|
#!/usr/bin/env bash
# SPDX-License-Identifier: GPL-3.0-or-later
set -e
PLATFORMS=(
darwin/amd64
darwin/arm64
freebsd/386
freebsd/amd64
freebsd/arm
freebsd/arm64
linux/386
linux/amd64
linux/arm
linux/arm64
linux/ppc64
linux/ppc64le
linux/mips
linux/mipsle
linux/mips64
linux/mips64le
)
getos() {
local IFS=/ && read -ra array <<<"$1" && echo "${array[0]}"
}
getarch() {
local IFS=/ && read -ra array <<<"$1" && echo "${array[1]}"
}
WHICH="$1"
VERSION="${TRAVIS_TAG:-$(git describe --tags --always --dirty)}"
GOLDFLAGS=${GLDFLAGS:-}
GOLDFLAGS="$GOLDFLAGS -w -s -X github.com/netdata/netdata/go/plugins/pkg/buildinfo.Version=$VERSION"
build() {
echo "Building ${GOOS}/${GOARCH}"
CGO_ENABLED=0 GOOS="$1" GOARCH="$2" go build -ldflags "${GOLDFLAGS}" -o "$3" "github.com/netdata/netdata/go/plugins/cmd/godplugin"
}
create_config_archives() {
mkdir -p bin
tar -zcvf "bin/config.tar.gz" -C config .
tar -zcvf "bin/go.d.plugin-config-${VERSION}.tar.gz" -C config .
}
create_vendor_archives() {
mkdir -p bin
go mod vendor
tar -zc --transform "s:^:go.d.plugin-${VERSION#v}/:" -f "bin/vendor.tar.gz" vendor
tar -zc --transform "s:^:go.d.plugin-${VERSION#v}/:" -f "bin/go.d.plugin-vendor-${VERSION}.tar.gz" vendor
}
build_all_platforms() {
for PLATFORM in "${PLATFORMS[@]}"; do
GOOS=$(getos "$PLATFORM")
GOARCH=$(getarch "$PLATFORM")
FILE="bin/go.d.plugin-${VERSION}.${GOOS}-${GOARCH}"
build "$GOOS" "$GOARCH" "$FILE"
ARCHIVE="${FILE}.tar.gz"
tar -C bin -cvzf "${ARCHIVE}" "${FILE/bin\//}"
rm "${FILE}"
done
}
build_specific_platform() {
GOOS=$(getos "$1")
GOARCH=$(getarch "$1")
: "${GOARCH:=amd64}"
build "$GOOS" "$GOARCH" bin/godplugin
}
build_current_platform() {
eval "$(go env | grep -e "GOHOSTOS" -e "GOHOSTARCH")"
GOOS=${GOOS:-$GOHOSTOS}
GOARCH=${GOARCH:-$GOHOSTARCH}
build "$GOOS" "$GOARCH" bin/godplugin
}
if [[ "$WHICH" == "configs" ]]; then
echo "Creating config archives for version: $VERSION"
create_config_archives
exit 0
fi
if [[ "$WHICH" == "vendor" ]]; then
echo "Creating vendor archives for version: $VERSION"
create_vendor_archives
exit 0
fi
echo "Building binaries for version: $VERSION"
if [[ "$WHICH" == "all" ]]; then
build_all_platforms
elif [[ -n "$WHICH" ]]; then
build_specific_platform "$WHICH"
else
build_current_platform
fi
|