Skip to content

Commit c49890b

Browse files
committed
import taskfiles from serial-discovery repository
1 parent 5d25583 commit c49890b

File tree

2 files changed

+272
-0
lines changed

2 files changed

+272
-0
lines changed

DistTasks.yml

Lines changed: 243 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,243 @@
1+
# Source: https://github.com/arduino/tooling-project-assets/blob/main/workflow-templates/assets/release-go-task/DistTasks.yml
2+
version: "3"
3+
4+
# This taskfile is ideally meant to be project agnostic and could be dropped in
5+
# on other Go projects with minimal or no changes.
6+
#
7+
# To use it simply add the following lines to your main taskfile:
8+
# includes:
9+
# dist: ./DistTasks.yml
10+
#
11+
# The following variables must be declared in the including taskfile for the
12+
# build process to work correctly:
13+
# * DIST_DIR: the folder that will contain the final binaries and packages
14+
# * PROJECT_NAME: the name of the project, used in package name
15+
# * VERSION: the version of the project, used in package name and checksum file
16+
# * LD_FLAGS: flags used at build time
17+
#
18+
# The project MUST contain a LICENSE.txt file in the root folder or packaging will fail.
19+
20+
vars:
21+
CONTAINER: "docker.elastic.co/beats-dev/golang-crossbuild"
22+
GO_VERSION: "1.19.3"
23+
24+
tasks:
25+
Windows_32bit:
26+
desc: Builds Windows 32 bit binaries
27+
dir: "{{.DIST_DIR}}"
28+
cmds:
29+
- |
30+
mkdir {{.PLATFORM_DIR}}
31+
cp ../LICENSE.txt {{.PLATFORM_DIR}}/
32+
docker run -v `pwd`/..:/home/build -w /home/build \
33+
-e CGO_ENABLED=1 \
34+
{{.CONTAINER}}:{{.CONTAINER_TAG}} \
35+
--build-cmd "{{.BUILD_COMMAND}}" \
36+
-p "{{.BUILD_PLATFORM}}"
37+
38+
zip {{.PACKAGE_NAME}} {{.PLATFORM_DIR}}/{{.PROJECT_NAME}}.exe {{.PLATFORM_DIR}}/LICENSE.txt
39+
40+
vars:
41+
PLATFORM_DIR: "{{.PROJECT_NAME}}_windows_386"
42+
BUILD_COMMAND: "go build -o {{.DIST_DIR}}/{{.PLATFORM_DIR}}/{{.PROJECT_NAME}}.exe {{.LDFLAGS}}"
43+
BUILD_PLATFORM: "windows/386"
44+
CONTAINER_TAG: "{{.GO_VERSION}}-main"
45+
PACKAGE_PLATFORM: "Windows_32bit"
46+
PACKAGE_NAME: "{{.PROJECT_NAME}}_{{.VERSION}}_{{.PACKAGE_PLATFORM}}.zip"
47+
48+
Windows_64bit:
49+
desc: Builds Windows 64 bit binaries
50+
dir: "{{.DIST_DIR}}"
51+
cmds:
52+
- |
53+
mkdir {{.PLATFORM_DIR}}
54+
cp ../LICENSE.txt {{.PLATFORM_DIR}}/
55+
docker run -v `pwd`/..:/home/build -w /home/build \
56+
-e CGO_ENABLED=1 \
57+
{{.CONTAINER}}:{{.CONTAINER_TAG}} \
58+
--build-cmd "{{.BUILD_COMMAND}}" \
59+
-p "{{.BUILD_PLATFORM}}"
60+
61+
zip {{.PACKAGE_NAME}} {{.PLATFORM_DIR}}/{{.PROJECT_NAME}}.exe {{.PLATFORM_DIR}}/LICENSE.txt
62+
63+
vars:
64+
PLATFORM_DIR: "{{.PROJECT_NAME}}_windows_amd64"
65+
BUILD_COMMAND: "go build -o {{.DIST_DIR}}/{{.PLATFORM_DIR}}/{{.PROJECT_NAME}}.exe {{.LDFLAGS}}"
66+
BUILD_PLATFORM: "windows/amd64"
67+
CONTAINER_TAG: "{{.GO_VERSION}}-main"
68+
PACKAGE_PLATFORM: "Windows_64bit"
69+
PACKAGE_NAME: "{{.PROJECT_NAME}}_{{.VERSION}}_{{.PACKAGE_PLATFORM}}.zip"
70+
71+
Linux_32bit:
72+
desc: Builds Linux 32 bit binaries
73+
dir: "{{.DIST_DIR}}"
74+
cmds:
75+
- |
76+
mkdir {{.PLATFORM_DIR}}
77+
cp ../LICENSE.txt {{.PLATFORM_DIR}}/
78+
docker run -v `pwd`/..:/home/build -w /home/build \
79+
-e CGO_ENABLED=1 \
80+
{{.CONTAINER}}:{{.CONTAINER_TAG}} \
81+
--build-cmd "{{.BUILD_COMMAND}}" \
82+
-p "{{.BUILD_PLATFORM}}"
83+
84+
tar cz {{.PLATFORM_DIR}} -f {{.PACKAGE_NAME}}
85+
86+
vars:
87+
PLATFORM_DIR: "{{.PROJECT_NAME}}_linux_amd32"
88+
BUILD_COMMAND: "go build -o {{.DIST_DIR}}/{{.PLATFORM_DIR}}/{{.PROJECT_NAME}} {{.LDFLAGS}}"
89+
BUILD_PLATFORM: "linux/386"
90+
CONTAINER_TAG: "{{.GO_VERSION}}-main"
91+
PACKAGE_PLATFORM: "Linux_32bit"
92+
PACKAGE_NAME: "{{.PROJECT_NAME}}_{{.VERSION}}_{{.PACKAGE_PLATFORM}}.tar.gz"
93+
94+
Linux_64bit:
95+
desc: Builds Linux 64 bit binaries
96+
dir: "{{.DIST_DIR}}"
97+
cmds:
98+
- |
99+
mkdir {{.PLATFORM_DIR}}
100+
cp ../LICENSE.txt {{.PLATFORM_DIR}}/
101+
docker run -v `pwd`/..:/home/build -w /home/build \
102+
-e CGO_ENABLED=1 \
103+
{{.CONTAINER}}:{{.CONTAINER_TAG}} \
104+
--build-cmd "{{.BUILD_COMMAND}}" \
105+
-p "{{.BUILD_PLATFORM}}"
106+
107+
tar cz {{.PLATFORM_DIR}} -f {{.PACKAGE_NAME}}
108+
109+
vars:
110+
PLATFORM_DIR: "{{.PROJECT_NAME}}_linux_amd64"
111+
BUILD_COMMAND: "go build -o {{.DIST_DIR}}/{{.PLATFORM_DIR}}/{{.PROJECT_NAME}} {{.LDFLAGS}}"
112+
BUILD_PLATFORM: "linux/amd64"
113+
CONTAINER_TAG: "{{.GO_VERSION}}-main"
114+
PACKAGE_PLATFORM: "Linux_64bit"
115+
PACKAGE_NAME: "{{.PROJECT_NAME}}_{{.VERSION}}_{{.PACKAGE_PLATFORM}}.tar.gz"
116+
117+
Linux_ARMv7:
118+
desc: Builds Linux ARMv7 binaries
119+
dir: "{{.DIST_DIR}}"
120+
cmds:
121+
- |
122+
mkdir {{.PLATFORM_DIR}}
123+
cp ../LICENSE.txt {{.PLATFORM_DIR}}/
124+
docker run -v `pwd`/..:/home/build -w /home/build \
125+
-e CGO_ENABLED=1 \
126+
{{.CONTAINER}}:{{.CONTAINER_TAG}} \
127+
--build-cmd "{{.BUILD_COMMAND}}" \
128+
-p "{{.BUILD_PLATFORM}}"
129+
130+
tar cz {{.PLATFORM_DIR}} -f {{.PACKAGE_NAME}}
131+
132+
vars:
133+
PLATFORM_DIR: "{{.PROJECT_NAME}}_linux_arm_7"
134+
BUILD_COMMAND: "go build -o {{.DIST_DIR}}/{{.PLATFORM_DIR}}/{{.PROJECT_NAME}} {{.LDFLAGS}}"
135+
BUILD_PLATFORM: "linux/armv7"
136+
CONTAINER_TAG: "{{.GO_VERSION}}-armhf"
137+
PACKAGE_PLATFORM: "Linux_ARMv7"
138+
PACKAGE_NAME: "{{.PROJECT_NAME}}_{{.VERSION}}_{{.PACKAGE_PLATFORM}}.tar.gz"
139+
140+
Linux_ARMv6:
141+
desc: Builds Linux ARMv6 binaries
142+
dir: "{{.DIST_DIR}}"
143+
cmds:
144+
- |
145+
mkdir {{.PLATFORM_DIR}}
146+
cp ../LICENSE.txt {{.PLATFORM_DIR}}/
147+
docker run -v `pwd`/..:/home/build -w /home/build \
148+
-e CGO_ENABLED=1 \
149+
{{.CONTAINER}}:{{.CONTAINER_TAG}} \
150+
--build-cmd "{{.BUILD_COMMAND}}" \
151+
-p "{{.BUILD_PLATFORM}}"
152+
153+
tar cz {{.PLATFORM_DIR}} -f {{.PACKAGE_NAME}}
154+
155+
vars:
156+
PLATFORM_DIR: "{{.PROJECT_NAME}}_linux_arm_6"
157+
BUILD_COMMAND: "go build -o {{.DIST_DIR}}/{{.PLATFORM_DIR}}/{{.PROJECT_NAME}} {{.LDFLAGS}}"
158+
BUILD_PLATFORM: "linux/armv6"
159+
CONTAINER_TAG: "{{.GO_VERSION}}-armel-debian9"
160+
PACKAGE_PLATFORM: "Linux_ARMv6"
161+
PACKAGE_NAME: "{{.PROJECT_NAME}}_{{.VERSION}}_{{.PACKAGE_PLATFORM}}.tar.gz"
162+
163+
Linux_ARM64:
164+
desc: Builds Linux ARM64 binaries
165+
dir: "{{.DIST_DIR}}"
166+
cmds:
167+
- |
168+
mkdir {{.PLATFORM_DIR}}
169+
cp ../LICENSE.txt {{.PLATFORM_DIR}}/
170+
docker run -v `pwd`/..:/home/build -w /home/build \
171+
-e CGO_ENABLED=1 \
172+
{{.CONTAINER}}:{{.CONTAINER_TAG}} \
173+
--build-cmd "{{.BUILD_COMMAND}}" \
174+
-p "{{.BUILD_PLATFORM}}"
175+
176+
tar cz {{.PLATFORM_DIR}} -f {{.PACKAGE_NAME}}
177+
178+
vars:
179+
PLATFORM_DIR: "{{.PROJECT_NAME}}_linux_arm_64"
180+
BUILD_COMMAND: "go build -o {{.DIST_DIR}}/{{.PLATFORM_DIR}}/{{.PROJECT_NAME}} {{.LDFLAGS}}"
181+
BUILD_PLATFORM: "linux/arm64"
182+
CONTAINER_TAG: "{{.GO_VERSION}}-arm"
183+
PACKAGE_PLATFORM: "Linux_ARM64"
184+
PACKAGE_NAME: "{{.PROJECT_NAME}}_{{.VERSION}}_{{.PACKAGE_PLATFORM}}.tar.gz"
185+
186+
macOS_64bit:
187+
desc: Builds Mac OS X 64 bit binaries
188+
dir: "{{.DIST_DIR}}"
189+
cmds:
190+
- |
191+
mkdir {{.PLATFORM_DIR}}
192+
cp ../LICENSE.txt {{.PLATFORM_DIR}}/
193+
docker run -v `pwd`/..:/home/build -w /home/build \
194+
-e CGO_ENABLED=1 \
195+
{{.CONTAINER}}:{{.CONTAINER_TAG}} \
196+
--build-cmd "{{.BUILD_COMMAND}}" \
197+
-p "{{.BUILD_PLATFORM}}"
198+
199+
tar cz {{.PLATFORM_DIR}} -f {{.PACKAGE_NAME}}
200+
201+
vars:
202+
PLATFORM_DIR: "{{.PROJECT_NAME}}_osx_darwin_amd64"
203+
BUILD_COMMAND: "go build -o {{.DIST_DIR}}/{{.PLATFORM_DIR}}/{{.PROJECT_NAME}} {{.LDFLAGS}}"
204+
BUILD_PLATFORM: "darwin/amd64"
205+
# We are experiencing the following error with macOS_64bit build:
206+
#
207+
# Undefined symbols for architecture x86_64:
208+
# "_clock_gettime", referenced from:
209+
# _runtime.walltime_trampoline in go.o
210+
# ld: symbol(s) not found for architecture x86_64
211+
# clang: error: linker command failed with exit code 1 (use -v to see invocation)
212+
#
213+
# The reason seems that go 1.16.x use a macos API which is available since 10.12
214+
# https://github.com/techknowlogick/xgo/issues/100#issuecomment-780894190
215+
#
216+
# To compile it we need an SDK >=10.12 so we use the debian10 based container that
217+
# has the SDK 10.14 installed.
218+
CONTAINER_TAG: "{{.GO_VERSION}}-darwin-debian10"
219+
PACKAGE_PLATFORM: "macOS_64bit"
220+
PACKAGE_NAME: "{{.PROJECT_NAME}}_{{.VERSION}}_{{.PACKAGE_PLATFORM}}.tar.gz"
221+
222+
macOS_ARM64:
223+
desc: Builds Mac OS X ARM64 binaries
224+
dir: "{{.DIST_DIR}}"
225+
cmds:
226+
- |
227+
mkdir {{.PLATFORM_DIR}}
228+
cp ../LICENSE.txt {{.PLATFORM_DIR}}/
229+
docker run -v `pwd`/..:/home/build -w /home/build \
230+
-e CGO_ENABLED=1 \
231+
{{.CONTAINER}}:{{.CONTAINER_TAG}} \
232+
--build-cmd "{{.BUILD_COMMAND}}" \
233+
-p "{{.BUILD_PLATFORM}}"
234+
235+
tar cz {{.PLATFORM_DIR}} -f {{.PACKAGE_NAME}}
236+
237+
vars:
238+
PLATFORM_DIR: "{{.PROJECT_NAME}}_osx_darwin_arm64"
239+
BUILD_COMMAND: "go build -o {{.DIST_DIR}}/{{.PLATFORM_DIR}}/{{.PROJECT_NAME}} {{.LDFLAGS}}"
240+
BUILD_PLATFORM: "darwin/arm64"
241+
CONTAINER_TAG: "{{.GO_VERSION}}-darwin-arm64-debian10"
242+
PACKAGE_PLATFORM: "macOS_ARM64"
243+
PACKAGE_NAME: "{{.PROJECT_NAME}}_{{.VERSION}}_{{.PACKAGE_PLATFORM}}.tar.gz"

Taskfile.yml

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
# See: https://taskfile.dev/#/usage
2+
version: "3"
3+
4+
includes:
5+
dist: ./DistTasks.yml
6+
7+
vars:
8+
# Source: https://github.com/arduino/tooling-project-assets/blob/main/workflow-templates/assets/release-go-task/Taskfile.yml
9+
PROJECT_NAME: "dfu-discovery"
10+
DIST_DIR: "dist"
11+
# build vars
12+
COMMIT:
13+
sh: echo "$(git log --no-show-signature -n 1 --format=%h)"
14+
TIMESTAMP:
15+
sh: echo "$(date -u +"%Y-%m-%dT%H:%M:%SZ")"
16+
TIMESTAMP_SHORT:
17+
sh: echo "{{now | date "20060102"}}"
18+
TAG:
19+
sh: echo "$(git tag --points-at=HEAD 2> /dev/null | head -n1)"
20+
VERSION: "{{if .NIGHTLY}}nightly-{{.TIMESTAMP_SHORT}}{{else if .TAG}}{{.TAG}}{{else}}{{.PACKAGE_NAME_PREFIX}}git-snapshot{{end}}"
21+
CONFIGURATION_PACKAGE: github.com/arduino/dfu-discovery/version
22+
LDFLAGS: >-
23+
-ldflags
24+
'
25+
-X {{.CONFIGURATION_PACKAGE}}.Version={{.VERSION}}
26+
-X {{.CONFIGURATION_PACKAGE}}.Commit={{.COMMIT}}
27+
-X {{.CONFIGURATION_PACKAGE}}.Timestamp={{.TIMESTAMP}}
28+
'
29+
tasks: {}

0 commit comments

Comments
 (0)