Skip to content

Commit 5eb9401

Browse files
committed
Updated DistTasks.yml
1 parent 4f8ff15 commit 5eb9401

File tree

1 file changed

+126
-86
lines changed

1 file changed

+126
-86
lines changed

DistTasks.yml

Lines changed: 126 additions & 86 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
# Source: https://github.com/arduino/tooling-project-assets/blob/main/workflow-templates/assets/release-go-task/DistTasks.yml
21
version: "3"
32

43
# This taskfile is ideally meant to be project agnostic and could be dropped in
@@ -17,11 +16,6 @@ version: "3"
1716
#
1817
# The project MUST contain a LICENSE.txt file in the root folder or packaging will fail.
1918

20-
vars:
21-
CONTAINER: "docker.elastic.co/beats-dev/golang-crossbuild"
22-
GO_VERSION: "1.14.7"
23-
CHECKSUM_FILE: "{{.VERSION}}-checksums.txt"
24-
2519
tasks:
2620
all:
2721
desc: Build for distribution for all platforms
@@ -37,176 +31,222 @@ tasks:
3731

3832
Windows_32bit:
3933
desc: Builds Windows 32 bit binaries
40-
dir: "{{.DIST_DIR}}"
34+
dir: "{{ .DIST_DIR }}"
4135
cmds:
4236
- |
4337
docker run -v `pwd`/..:/home/build -w /home/build \
4438
-e CGO_ENABLED=1 \
45-
{{.CONTAINER}}:{{.CONTAINER_TAG}} \
46-
--build-cmd "{{.BUILD_COMMAND}}" \
47-
-p "{{.BUILD_PLATFORM}}"
39+
{{ .CONTAINER }}:{{ .CONTAINER_TAG }} \
40+
--build-cmd "{{ .BUILD_COMMAND }}" \
41+
-p "{{ .BUILD_PLATFORM }}"
4842
49-
zip {{.PACKAGE_NAME}} {{.PLATFORM_DIR}}/{{.PROJECT_NAME}}.exe ../LICENSE.txt -j
50-
sha256sum {{.PACKAGE_NAME}} >> {{.CHECKSUM_FILE}}
43+
zip {{ .PACKAGE_NAME}} {{ .PLATFORM_DIR }}/{{ .PROJECT_NAME }}.exe ../LICENSE.txt -j
44+
sha256sum {{ .PACKAGE_NAME }} >> {{ .CHECKSUM_FILE }}
5145
5246
vars:
53-
PLATFORM_DIR: "{{.PROJECT_NAME}}_windows_386"
54-
BUILD_COMMAND: "go build -o {{.DIST_DIR}}/{{.PLATFORM_DIR}}/{{.PROJECT_NAME}}.exe {{.LDFLAGS}}"
47+
PLATFORM_DIR: "{{ .PROJECT_NAME }}_windows_386"
48+
BUILD_COMMAND: "go build -o {{ .DIST_DIR }}/{{ .PLATFORM_DIR }}/{{ .PROJECT_NAME }}.exe {{ .LDFLAGS }}"
5549
BUILD_PLATFORM: "windows/386"
56-
CONTAINER_TAG: "{{.GO_VERSION}}-main"
50+
CONTAINER_TAG: "{{ .GO_VERSION }}-main"
5751
PACKAGE_PLATFORM: "Windows_32bit"
58-
PACKAGE_NAME: "{{.PROJECT_NAME}}_{{.VERSION}}_{{.PACKAGE_PLATFORM}}.zip"
52+
PACKAGE_NAME: "{{ .PROJECT_NAME }}_{{ .VERSION }}_{{ .PACKAGE_PLATFORM }}.zip"
5953

6054
Windows_64bit:
6155
desc: Builds Windows 64 bit binaries
62-
dir: "{{.DIST_DIR}}"
56+
dir: "{{ .DIST_DIR }}"
6357
cmds:
6458
- |
6559
docker run -v `pwd`/..:/home/build -w /home/build \
6660
-e CGO_ENABLED=1 \
67-
{{.CONTAINER}}:{{.CONTAINER_TAG}} \
68-
--build-cmd "{{.BUILD_COMMAND}}" \
69-
-p "{{.BUILD_PLATFORM}}"
61+
{{ .CONTAINER }}:{{ .CONTAINER_TAG }} \
62+
--build-cmd "{{ .BUILD_COMMAND }}" \
63+
-p "{{ .BUILD_PLATFORM }}"
7064
71-
zip {{.PACKAGE_NAME}} {{.PLATFORM_DIR}}/{{.PROJECT_NAME}}.exe ../LICENSE.txt -j
72-
sha256sum {{.PACKAGE_NAME}} >> {{.CHECKSUM_FILE}}
65+
zip {{ .PACKAGE_NAME}} {{ .PLATFORM_DIR }}/{{ .PROJECT_NAME }}.exe ../LICENSE.txt -j
66+
sha256sum {{ .PACKAGE_NAME }} >> {{ .CHECKSUM_FILE }}
7367
7468
vars:
75-
PLATFORM_DIR: "{{.PROJECT_NAME}}_windows_amd64"
76-
BUILD_COMMAND: "go build -o {{.DIST_DIR}}/{{.PLATFORM_DIR}}/{{.PROJECT_NAME}}.exe {{.LDFLAGS}}"
69+
PLATFORM_DIR: "{{ .PROJECT_NAME }}_windows_amd64"
70+
BUILD_COMMAND: "go build -o {{ .DIST_DIR }}/{{ .PLATFORM_DIR }}/{{ .PROJECT_NAME }}.exe {{ .LDFLAGS }}"
7771
BUILD_PLATFORM: "windows/amd64"
78-
CONTAINER_TAG: "{{.GO_VERSION}}-main"
72+
CONTAINER_TAG: "{{ .GO_VERSION }}-main"
7973
PACKAGE_PLATFORM: "Windows_64bit"
80-
PACKAGE_NAME: "{{.PROJECT_NAME}}_{{.VERSION}}_{{.PACKAGE_PLATFORM}}.zip"
74+
PACKAGE_NAME: "{{ .PROJECT_NAME }}_{{ .VERSION }}_{{ .PACKAGE_PLATFORM }}.zip"
8175

8276
Linux_32bit:
8377
desc: Builds Linux 32 bit binaries
84-
dir: "{{.DIST_DIR}}"
78+
dir: "{{ .DIST_DIR }}"
8579
cmds:
8680
- |
8781
docker run -v `pwd`/..:/home/build -w /home/build \
8882
-e CGO_ENABLED=1 \
89-
{{.CONTAINER}}:{{.CONTAINER_TAG}} \
90-
--build-cmd "{{.BUILD_COMMAND}}" \
91-
-p "{{.BUILD_PLATFORM}}"
83+
{{ .CONTAINER }}:{{ .CONTAINER_TAG }} \
84+
--build-cmd "{{ .BUILD_COMMAND }}" \
85+
-p "{{ .BUILD_PLATFORM }}"
9286
93-
tar cz -C {{.PLATFORM_DIR}} {{.PROJECT_NAME}} -C ../.. LICENSE.txt -f {{.PACKAGE_NAME}}
94-
sha256sum {{.PACKAGE_NAME}} >> {{.CHECKSUM_FILE}}
87+
tar cz -C {{ .PLATFORM_DIR }} {{ .PROJECT_NAME }} -C ../.. LICENSE.txt -f {{ .PACKAGE_NAME }}
88+
sha256sum {{ .PACKAGE_NAME }} >> {{ .CHECKSUM_FILE }}
9589
9690
vars:
97-
PLATFORM_DIR: "{{.PROJECT_NAME}}_linux_amd32"
98-
BUILD_COMMAND: "go build -o {{.DIST_DIR}}/{{.PLATFORM_DIR}}/{{.PROJECT_NAME}} {{.LDFLAGS}}"
91+
PLATFORM_DIR: "{{ .PROJECT_NAME }}_linux_amd32"
92+
BUILD_COMMAND: "go build -o {{ .DIST_DIR }}/{{ .PLATFORM_DIR }}/{{ .PROJECT_NAME }} {{ .LDFLAGS }}"
9993
BUILD_PLATFORM: "linux/386"
100-
CONTAINER_TAG: "{{.GO_VERSION}}-main"
94+
CONTAINER_TAG: "{{ .GO_VERSION }}-main"
10195
PACKAGE_PLATFORM: "Linux_32bit"
102-
PACKAGE_NAME: "{{.PROJECT_NAME}}_{{.VERSION}}_{{.PACKAGE_PLATFORM}}.tar.gz"
96+
PACKAGE_NAME: "{{ .PROJECT_NAME }}_{{ .VERSION }}_{{ .PACKAGE_PLATFORM }}.tar.gz"
10397

10498
Linux_64bit:
10599
desc: Builds Linux 64 bit binaries
106-
dir: "{{.DIST_DIR}}"
100+
dir: "{{ .DIST_DIR }}"
107101
cmds:
108102
- |
109103
docker run -v `pwd`/..:/home/build -w /home/build \
110104
-e CGO_ENABLED=1 \
111-
{{.CONTAINER}}:{{.CONTAINER_TAG}} \
112-
--build-cmd "{{.BUILD_COMMAND}}" \
113-
-p "{{.BUILD_PLATFORM}}"
105+
{{ .CONTAINER }}:{{ .CONTAINER_TAG }} \
106+
--build-cmd "{{ .BUILD_COMMAND }}" \
107+
-p "{{ .BUILD_PLATFORM }}"
114108
115-
tar cz -C {{.PLATFORM_DIR}} {{.PROJECT_NAME}} -C ../.. LICENSE.txt -f {{.PACKAGE_NAME}}
116-
sha256sum {{.PACKAGE_NAME}} >> {{.CHECKSUM_FILE}}
109+
tar cz -C {{ .PLATFORM_DIR }} {{ .PROJECT_NAME }} -C ../.. LICENSE.txt -f {{ .PACKAGE_NAME }}
110+
sha256sum {{ .PACKAGE_NAME }} >> {{ .CHECKSUM_FILE }}
117111
118112
vars:
119-
PLATFORM_DIR: "{{.PROJECT_NAME}}_linux_amd64"
120-
BUILD_COMMAND: "go build -o {{.DIST_DIR}}/{{.PLATFORM_DIR}}/{{.PROJECT_NAME}} {{.LDFLAGS}}"
113+
PLATFORM_DIR: "{{ .PROJECT_NAME }}_linux_amd64"
114+
BUILD_COMMAND: "go build -o {{ .DIST_DIR }}/{{ .PLATFORM_DIR }}/{{ .PROJECT_NAME }} {{ .LDFLAGS }}"
121115
BUILD_PLATFORM: "linux/amd64"
122-
CONTAINER_TAG: "{{.GO_VERSION}}-main"
116+
CONTAINER_TAG: "{{ .GO_VERSION }}-main"
123117
PACKAGE_PLATFORM: "Linux_64bit"
124-
PACKAGE_NAME: "{{.PROJECT_NAME}}_{{.VERSION}}_{{.PACKAGE_PLATFORM}}.tar.gz"
118+
PACKAGE_NAME: "{{ .PROJECT_NAME }}_{{ .VERSION }}_{{ .PACKAGE_PLATFORM }}.tar.gz"
125119

126120
Linux_ARMv7:
127121
desc: Builds Linux ARMv7 binaries
128-
dir: "{{.DIST_DIR}}"
122+
dir: "{{ .DIST_DIR }}"
129123
cmds:
130124
- |
131125
docker run -v `pwd`/..:/home/build -w /home/build \
132126
-e CGO_ENABLED=1 \
133-
{{.CONTAINER}}:{{.CONTAINER_TAG}} \
134-
--build-cmd "{{.BUILD_COMMAND}}" \
135-
-p "{{.BUILD_PLATFORM}}"
127+
{{ .CONTAINER }}:{{ .CONTAINER_TAG }} \
128+
--build-cmd "{{ .BUILD_COMMAND }}" \
129+
-p "{{ .BUILD_PLATFORM }}"
136130
137-
tar cz -C {{.PLATFORM_DIR}} {{.PROJECT_NAME}} -C ../.. LICENSE.txt -f {{.PACKAGE_NAME}}
138-
sha256sum {{.PACKAGE_NAME}} >> {{.CHECKSUM_FILE}}
131+
tar cz -C {{ .PLATFORM_DIR }} {{ .PROJECT_NAME }} -C ../.. LICENSE.txt -f {{ .PACKAGE_NAME }}
132+
sha256sum {{ .PACKAGE_NAME }} >> {{ .CHECKSUM_FILE }}
139133
140134
vars:
141-
PLATFORM_DIR: "{{.PROJECT_NAME}}_linux_arm_7"
142-
BUILD_COMMAND: "go build -o {{.DIST_DIR}}/{{.PLATFORM_DIR}}/{{.PROJECT_NAME}} {{.LDFLAGS}}"
135+
PLATFORM_DIR: "{{ .PROJECT_NAME }}_linux_arm_7"
136+
BUILD_COMMAND: "go build -o {{ .DIST_DIR }}/{{ .PLATFORM_DIR }}/{{ .PROJECT_NAME }} {{ .LDFLAGS }}"
143137
BUILD_PLATFORM: "linux/armv7"
144-
CONTAINER_TAG: "{{.GO_VERSION}}-arm"
138+
CONTAINER_TAG: "{{ .GO_VERSION }}-armhf"
145139
PACKAGE_PLATFORM: "Linux_ARMv7"
146-
PACKAGE_NAME: "{{.PROJECT_NAME}}_{{.VERSION}}_{{.PACKAGE_PLATFORM}}.tar.gz"
140+
PACKAGE_NAME: "{{ .PROJECT_NAME }}_{{ .VERSION }}_{{ .PACKAGE_PLATFORM }}.tar.gz"
147141

148142
Linux_ARMv6:
149143
desc: Builds Linux ARMv6 binaries
150-
dir: "{{.DIST_DIR}}"
144+
dir: "{{ .DIST_DIR }}"
151145
cmds:
152146
- |
153147
docker run -v `pwd`/..:/home/build -w /home/build \
154148
-e CGO_ENABLED=1 \
155-
{{.CONTAINER}}:{{.CONTAINER_TAG}} \
156-
--build-cmd "{{.BUILD_COMMAND}}" \
157-
-p "{{.BUILD_PLATFORM}}"
149+
{{ .CONTAINER }}:{{ .CONTAINER_TAG }} \
150+
--build-cmd "{{ .BUILD_COMMAND }}" \
151+
-p "{{ .BUILD_PLATFORM }}"
158152
159-
tar cz -C {{.PLATFORM_DIR}} {{.PROJECT_NAME}} -C ../.. LICENSE.txt -f {{.PACKAGE_NAME}}
160-
sha256sum {{.PACKAGE_NAME}} >> {{.CHECKSUM_FILE}}
153+
tar cz -C {{ .PLATFORM_DIR }} {{ .PROJECT_NAME }} -C ../.. LICENSE.txt -f {{ .PACKAGE_NAME }}
154+
sha256sum {{ .PACKAGE_NAME }} >> {{ .CHECKSUM_FILE }}
161155
162156
vars:
163-
PLATFORM_DIR: "{{.PROJECT_NAME}}_linux_arm_6"
164-
BUILD_COMMAND: "go build -o {{.DIST_DIR}}/{{.PLATFORM_DIR}}/{{.PROJECT_NAME}} {{.LDFLAGS}}"
157+
PLATFORM_DIR: "{{ .PROJECT_NAME }}_linux_arm_6"
158+
BUILD_COMMAND: "go build -o {{ .DIST_DIR }}/{{ .PLATFORM_DIR }}/{{ .PROJECT_NAME }} {{ .LDFLAGS }}"
165159
BUILD_PLATFORM: "linux/armv6"
166-
CONTAINER_TAG: "{{.GO_VERSION}}-arm"
160+
# We are experiencing the following error with ARMv6 build:
161+
#
162+
# # github.com/arduino/arduino-cli
163+
# net(.text): unexpected relocation type 296 (R_ARM_V4BX)
164+
# panic: runtime error: invalid memory address or nil pointer dereference
165+
# [signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x51ae53]
166+
#
167+
# goroutine 1 [running]:
168+
# cmd/link/internal/loader.(*Loader).SymName(0xc000095c00, 0x0, 0xc0000958d8, 0x5a0ac)
169+
# /usr/local/go/src/cmd/link/internal/loader/loader.go:684 +0x53
170+
# cmd/link/internal/ld.dynrelocsym2(0xc000095880, 0x5a0ac)
171+
# /usr/local/go/src/cmd/link/internal/ld/data.go:777 +0x295
172+
# cmd/link/internal/ld.(*dodataState).dynreloc2(0xc007df9800, 0xc000095880)
173+
# /usr/local/go/src/cmd/link/internal/ld/data.go:794 +0x89
174+
# cmd/link/internal/ld.(*Link).dodata2(0xc000095880, 0xc007d00000, 0x60518, 0x60518)
175+
# /usr/local/go/src/cmd/link/internal/ld/data.go:1434 +0x4d4
176+
# cmd/link/internal/ld.Main(0x8729a0, 0x4, 0x8, 0x1, 0xd, 0xe, 0x0, 0x0, 0x6d7737, 0x12, ...)
177+
# /usr/local/go/src/cmd/link/internal/ld/main.go:302 +0x123a
178+
# main.main()
179+
# /usr/local/go/src/cmd/link/main.go:68 +0x1dc
180+
# Error: failed building for linux/armv6: exit status 2
181+
#
182+
# This seems to be a problem in the go builder 1.16.x that removed support for the R_ARM_V4BX instruction:
183+
# https://github.com/golang/go/pull/44998
184+
# https://groups.google.com/g/golang-codereviews/c/yzN80xxwu2E
185+
#
186+
# Until there is a fix released we must use a recent gcc for Linux_ARMv6 build, so for this
187+
# build we select the debian10 based container.
188+
CONTAINER_TAG: "{{ .GO_VERSION }}-armel-debian10"
167189
PACKAGE_PLATFORM: "Linux_ARMv6"
168-
PACKAGE_NAME: "{{.PROJECT_NAME}}_{{.VERSION}}_{{.PACKAGE_PLATFORM}}.tar.gz"
190+
PACKAGE_NAME: "{{ .PROJECT_NAME }}_{{ .VERSION }}_{{ .PACKAGE_PLATFORM }}.tar.gz"
169191

170192
Linux_ARM64:
171193
desc: Builds Linux ARM64 binaries
172-
dir: "{{.DIST_DIR}}"
194+
dir: "{{ .DIST_DIR }}"
173195
cmds:
174196
- |
175197
docker run -v `pwd`/..:/home/build -w /home/build \
176198
-e CGO_ENABLED=1 \
177-
{{.CONTAINER}}:{{.CONTAINER_TAG}} \
178-
--build-cmd "{{.BUILD_COMMAND}}" \
179-
-p "{{.BUILD_PLATFORM}}"
199+
{{ .CONTAINER }}:{{ .CONTAINER_TAG }} \
200+
--build-cmd "{{ .BUILD_COMMAND }}" \
201+
-p "{{ .BUILD_PLATFORM }}"
180202
181-
tar cz -C {{.PLATFORM_DIR}} {{.PROJECT_NAME}} -C ../.. LICENSE.txt -f {{.PACKAGE_NAME}}
182-
sha256sum {{.PACKAGE_NAME}} >> {{.CHECKSUM_FILE}}
203+
tar cz -C {{ .PLATFORM_DIR }} {{ .PROJECT_NAME }} -C ../.. LICENSE.txt -f {{ .PACKAGE_NAME }}
204+
sha256sum {{ .PACKAGE_NAME }} >> {{ .CHECKSUM_FILE }}
183205
184206
vars:
185-
PLATFORM_DIR: "{{.PROJECT_NAME}}_linux_arm_6"
186-
BUILD_COMMAND: "go build -o {{.DIST_DIR}}/{{.PLATFORM_DIR}}/{{.PROJECT_NAME}} {{.LDFLAGS}}"
207+
PLATFORM_DIR: "{{ .PROJECT_NAME }}_linux_arm_6"
208+
BUILD_COMMAND: "go build -o {{ .DIST_DIR }}/{{ .PLATFORM_DIR }}/{{ .PROJECT_NAME }} {{ .LDFLAGS }}"
187209
BUILD_PLATFORM: "linux/arm64"
188-
CONTAINER_TAG: "{{.GO_VERSION}}-arm"
210+
CONTAINER_TAG: "{{ .GO_VERSION }}-arm"
189211
PACKAGE_PLATFORM: "Linux_ARM64"
190-
PACKAGE_NAME: "{{.PROJECT_NAME}}_{{.VERSION}}_{{.PACKAGE_PLATFORM}}.tar.gz"
212+
PACKAGE_NAME: "{{ .PROJECT_NAME }}_{{ .VERSION }}_{{ .PACKAGE_PLATFORM }}.tar.gz"
191213

192214
macOS_64bit:
193215
desc: Builds Mac OS X 64 bit binaries
194-
dir: "{{.DIST_DIR}}"
216+
dir: "{{ .DIST_DIR }}"
195217
cmds:
196218
- |
197219
docker run -v `pwd`/..:/home/build -w /home/build \
198220
-e CGO_ENABLED=1 \
199-
{{.CONTAINER}}:{{.CONTAINER_TAG}} \
200-
--build-cmd "{{.BUILD_COMMAND}}" \
201-
-p "{{.BUILD_PLATFORM}}"
221+
{{ .CONTAINER }}:{{ .CONTAINER_TAG }} \
222+
--build-cmd "{{ .BUILD_COMMAND }}" \
223+
-p "{{ .BUILD_PLATFORM }}"
202224
203-
tar cz -C {{.PLATFORM_DIR}} {{.PROJECT_NAME}} -C ../.. LICENSE.txt -f {{.PACKAGE_NAME}}
204-
sha256sum {{.PACKAGE_NAME}} >> {{.CHECKSUM_FILE}}
225+
tar cz -C {{ .PLATFORM_DIR }} {{ .PROJECT_NAME }} -C ../.. LICENSE.txt -f {{ .PACKAGE_NAME }}
226+
sha256sum {{ .PACKAGE_NAME }} >> {{ .CHECKSUM_FILE }}
205227
206228
vars:
207-
PLATFORM_DIR: "{{.PROJECT_NAME}}_osx_darwin_amd64"
208-
BUILD_COMMAND: "go build -o {{.DIST_DIR}}/{{.PLATFORM_DIR}}/{{.PROJECT_NAME}} {{.LDFLAGS}}"
229+
PLATFORM_DIR: "{{ .PROJECT_NAME }}_osx_darwin_amd64"
230+
BUILD_COMMAND: "go build -o {{ .DIST_DIR }}/{{ .PLATFORM_DIR }}/{{ .PROJECT_NAME }} {{ .LDFLAGS }}"
209231
BUILD_PLATFORM: "darwin/amd64"
210-
CONTAINER_TAG: "{{.GO_VERSION}}-darwin"
232+
# We are experiencing the following error with macOS_64bit build:
233+
#
234+
# Undefined symbols for architecture x86_64:
235+
# "_clock_gettime", referenced from:
236+
# _runtime.walltime_trampoline in go.o
237+
# ld: symbol(s) not found for architecture x86_64
238+
# clang: error: linker command failed with exit code 1 (use -v to see invocation)
239+
#
240+
# The reason seems that go 1.16.x use a macos API which is available since 10.12
241+
# https://github.com/techknowlogick/xgo/issues/100#issuecomment-780894190
242+
#
243+
# To compile it we need an SDK >=10.12 so we use the debian10 based container that
244+
# has the SDK 10.14 installed.
245+
CONTAINER_TAG: "{{ .GO_VERSION }}-darwin-debian10"
211246
PACKAGE_PLATFORM: "macOS_64bit"
212-
PACKAGE_NAME: "{{.PROJECT_NAME}}_{{.VERSION}}_{{.PACKAGE_PLATFORM}}.tar.gz"
247+
PACKAGE_NAME: "{{ .PROJECT_NAME }}_{{ .VERSION }}_{{ .PACKAGE_PLATFORM }}.tar.gz"
248+
249+
vars:
250+
CONTAINER: "docker.elastic.co/beats-dev/golang-crossbuild"
251+
GO_VERSION: "1.16.4"
252+
CHECKSUM_FILE: "{{ .VERSION }}-checksums.txt"

0 commit comments

Comments
 (0)