-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathbuild.sh
executable file
·106 lines (93 loc) · 2.28 KB
/
build.sh
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
#!/bin/sh
cd $(dirname $0)
echo
go version || exit $?
echo
export CGO_ENABLED=0 # cross-compile without cgo
pkg_path=$(go list -m)
tag=$(git describe --tags --match v[0-9]* --abbrev=0 2>/dev/null || git log -1 --format="dev-%H")
echo "Tag version: ${tag}"
function _build(){
f="minecraft_installer-${GOOS}-${GOARCH}"
[ "$GOOS" == 'windows' ] && f="${f}.exe"
echo "==> Building '$f'..."
go build \
-trimpath -gcflags "-trimpath=${GOPATH}" -asmflags "-trimpath=${GOPATH}" \
-ldflags "-w -s -X '${pkg_path}.PkgVersion=${tag}'" \
-o "./output/$f" "./minecraft_installer"
return $?
}
arch32=(386 arm)
arch64=(amd64 arm64)
if [ "$ASYNC_BUILD" = 0 ] || [ "$ASYNC_BUILD" = false ]; then
ASYNC_BUILD=
else
echo ">>> Making logs dir 'logs.tmp'"
mkdir -p 'logs.tmp'
[ -f .flag.error ] && rm .flag.error
fi
for arch in "${arch32[@]}" "${arch64[@]}"; do
if [ -n "$ASYNC_BUILD" ]; then
logf="$(pwd)/logs.tmp/linux-${arch}.log"
{
if ! GOOS=linux GOARCH=$arch _build; then
touch .flag.error
exit 1
fi
echo "[+++] Done" >&2
} 1>"$logf" &
else
GOOS=linux GOARCH=$arch _build || exit $?
fi
done
for arch in "${arch32[@]}" "${arch64[@]}"; do
if [ -n "$ASYNC_BUILD" ]; then
logf="$(pwd)/logs.tmp/windows-${arch}.log"
{
if ! GOOS=windows GOARCH=$arch _build; then
touch .flag.error
exit 1
fi
echo "[+++] Done" >&2
} 1>"$logf" &
else
GOOS=windows GOARCH=$arch _build || exit $?
fi
done
for arch in "${arch64[@]}"; do
if [ -n "$ASYNC_BUILD" ]; then
logf="$(pwd)/logs.tmp/darwin-${arch}.log"
{
if ! GOOS=darwin GOARCH=$arch _build; then
touch .flag.error
exit 1
fi
echo "[+++] Done" >&2
} 1>"$logf" &
else
GOOS=darwin GOARCH=$arch _build || exit $?
fi
done
if [ -n "$ASYNC_BUILD" ]; then
echo ">>> waiting works..."
wait
if [ -f .flag.error ]; then
rm .flag.error
echo "Some error have been happend, please check the console and the logs"
if [ -n "$CI" ]; then # if it's in github action
for log in `(ls logs.tmp/*.log)`; do
echo
echo "================START ${log}================"
cat "$log"
echo "================END ${log}================"
echo
done
fi
exit 1
fi
fi
if [ -n "$ASYNC_BUILD" ] && ! [ -n "$KEEP_TMP_LOGS" ]; then
echo ">>> Clearing logs at 'logs.tmp'"
rm -rf logs.tmp
fi
echo "==> Done"