1
+ # Source: https://github.com/arduino/tooling-project-assets/blob/main/workflow-templates/assets/release-go-crosscompile-task/DistTasks.yml
1
2
version : " 3"
2
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
+ CHECKSUM_FILE : " {{.VERSION}}-checksums.txt"
22
+
3
23
tasks :
4
24
all :
5
25
desc : Build for distribution for all platforms
8
28
- task : Windows_64bit
9
29
- task : Linux_32bit
10
30
- task : Linux_64bit
11
- - task : Linux_ARM
31
+ - task : Linux_ARMv6
32
+ - task : Linux_ARMv7
12
33
- task : Linux_ARM64
13
34
- task : macOS_64bit
35
+ - task : macOS_ARM64
14
36
15
37
Windows_32bit :
16
38
desc : Builds Windows 32 bit binaries
@@ -20,13 +42,14 @@ tasks:
20
42
GO386 : " softfloat"
21
43
cmds :
22
44
- |
23
- go build -o {{ .DIST_DIR}}/{{ .PLATFORM_DIR }}/{{ .PROJECT_NAME }}.exe {{.LDFLAGS}}
24
- zip {{ .DIST_DIR}}/{{ .PACKAGE_NAME }} {{ .DIST_DIR}}/{{ .PLATFORM_DIR }}/{{ .PROJECT_NAME }}.exe -j
25
- zip {{ .DIST_DIR}}/{{ .PACKAGE_NAME }} LICENSE.txt -r
45
+ go build -o {{.DIST_DIR}}/{{.PLATFORM_DIR}}/{{.PROJECT_NAME}}.exe {{.LDFLAGS}}
46
+ cd {{.DIST_DIR}}
47
+ zip {{.PACKAGE_NAME}} {{.PLATFORM_DIR}}/{{.PROJECT_NAME}}.exe ../LICENSE.txt -j
48
+ sha256sum {{.PACKAGE_NAME}} >> {{.CHECKSUM_FILE}}
26
49
vars :
27
- PLATFORM_DIR : " windows32 "
50
+ PLATFORM_DIR : " {{.PROJECT_NAME}}_windows_386 "
28
51
PACKAGE_PLATFORM : " Windows_32bit"
29
- PACKAGE_NAME : " {{ .PROJECT_NAME }}_{{ .VERSION }}_{{ .PACKAGE_PLATFORM }}.zip"
52
+ PACKAGE_NAME : " {{.PROJECT_NAME}}_{{.VERSION}}_{{.PACKAGE_PLATFORM}}.zip"
30
53
31
54
Windows_64bit :
32
55
desc : Builds Windows 64 bit binaries
@@ -35,13 +58,14 @@ tasks:
35
58
GOARCH : " amd64"
36
59
cmds :
37
60
- |
38
- go build -o {{ .DIST_DIR}}/{{ .PLATFORM_DIR }}/{{ .PROJECT_NAME }}.exe {{.LDFLAGS}}
39
- zip {{ .DIST_DIR}}/{{ .PACKAGE_NAME }} {{ .DIST_DIR}}/{{ .PLATFORM_DIR }}/{{ .PROJECT_NAME }}.exe -j
40
- zip {{ .DIST_DIR}}/{{ .PACKAGE_NAME }} LICENSE.txt -r
61
+ go build -o {{.DIST_DIR}}/{{.PLATFORM_DIR}}/{{.PROJECT_NAME}}.exe {{.LDFLAGS}}
62
+ cd {{.DIST_DIR}}
63
+ zip {{.PACKAGE_NAME}} {{.PLATFORM_DIR}}/{{.PROJECT_NAME}}.exe ../LICENSE.txt -j
64
+ sha256sum {{.PACKAGE_NAME}} >> {{.CHECKSUM_FILE}}
41
65
vars :
42
- PLATFORM_DIR : " windows64 "
66
+ PLATFORM_DIR : " {{.PROJECT_NAME}}_windows_amd64 "
43
67
PACKAGE_PLATFORM : " Windows_64bit"
44
- PACKAGE_NAME : " {{ .PROJECT_NAME }}_{{ .VERSION }}_{{ .PACKAGE_PLATFORM }}.zip"
68
+ PACKAGE_NAME : " {{.PROJECT_NAME}}_{{.VERSION}}_{{.PACKAGE_PLATFORM}}.zip"
45
69
46
70
Linux_32bit :
47
71
desc : Builds Linux 32 bit binaries
@@ -51,12 +75,14 @@ tasks:
51
75
GO386 : " softfloat"
52
76
cmds :
53
77
- |
54
- go build -o {{ .DIST_DIR}}/{{ .PLATFORM_DIR }}/{{ .PROJECT_NAME }} {{.LDFLAGS}}
55
- tar cz LICENSE.txt -C {{ .DIST_DIR}}/{{ .PLATFORM_DIR }} {{ .PROJECT_NAME }} -f {{ .DIST_DIR }}/{{ .PACKAGE_NAME }}
78
+ go build -o {{.DIST_DIR}}/{{.PLATFORM_DIR}}/{{.PROJECT_NAME}} {{.LDFLAGS}}
79
+ cd {{.DIST_DIR}}
80
+ tar cz -C {{.PLATFORM_DIR}} {{.PROJECT_NAME}} -C ../.. LICENSE.txt -f {{.PACKAGE_NAME}}
81
+ sha256sum {{.PACKAGE_NAME}} >> {{.CHECKSUM_FILE}}
56
82
vars :
57
- PLATFORM_DIR : " linux32 "
83
+ PLATFORM_DIR : " {{.PROJECT_NAME}}_linux_amd32 "
58
84
PACKAGE_PLATFORM : " Linux_32bit"
59
- PACKAGE_NAME : " {{ .PROJECT_NAME }}_{{ .VERSION }}_{{ .PACKAGE_PLATFORM }}.tar.gz"
85
+ PACKAGE_NAME : " {{.PROJECT_NAME}}_{{.VERSION}}_{{.PACKAGE_PLATFORM}}.tar.gz"
60
86
61
87
Linux_64bit :
62
88
desc : Builds Linux 64 bit binaries
@@ -65,26 +91,48 @@ tasks:
65
91
GOARCH : " amd64"
66
92
cmds :
67
93
- |
68
- go build -o {{ .DIST_DIR}}/{{ .PLATFORM_DIR }}/{{ .PROJECT_NAME }} {{.LDFLAGS}}
69
- tar cz LICENSE.txt -C {{ .DIST_DIR}}/{{ .PLATFORM_DIR }} {{ .PROJECT_NAME }} -f {{ .DIST_DIR }}/{{ .PACKAGE_NAME }}
94
+ go build -o {{.DIST_DIR}}/{{.PLATFORM_DIR}}/{{.PROJECT_NAME}} {{.LDFLAGS}}
95
+ cd {{.DIST_DIR}}
96
+ tar cz -C {{.PLATFORM_DIR}} {{.PROJECT_NAME}} -C ../.. LICENSE.txt -f {{.PACKAGE_NAME}}
97
+ sha256sum {{.PACKAGE_NAME}} >> {{.CHECKSUM_FILE}}
70
98
vars :
71
- PLATFORM_DIR : " linux64 "
99
+ PLATFORM_DIR : " {{.PROJECT_NAME}}_linux_amd64 "
72
100
PACKAGE_PLATFORM : " Linux_64bit"
73
- PACKAGE_NAME : " {{ .PROJECT_NAME }}_{{ .VERSION }}_{{ .PACKAGE_PLATFORM }}.tar.gz"
101
+ PACKAGE_NAME : " {{.PROJECT_NAME}}_{{.VERSION}}_{{.PACKAGE_PLATFORM}}.tar.gz"
102
+
103
+ Linux_ARMv7 :
104
+ desc : Builds Linux ARMv7 binaries
105
+ env :
106
+ GOOS : " linux"
107
+ GOARCH : " arm"
108
+ GOARM : 7
109
+ cmds :
110
+ - |
111
+ go build -o {{.DIST_DIR}}/{{.PLATFORM_DIR}}/{{.PROJECT_NAME}} {{.LDFLAGS}}
112
+ cd {{.DIST_DIR}}
113
+ tar cz -C {{.PLATFORM_DIR}} {{.PROJECT_NAME}} -C ../.. LICENSE.txt -f {{.PACKAGE_NAME}}
114
+ sha256sum {{.PACKAGE_NAME}} >> {{.CHECKSUM_FILE}}
115
+ vars :
116
+ PLATFORM_DIR : " {{.PROJECT_NAME}}_linux_arm_7"
117
+ PACKAGE_PLATFORM : " Linux_ARMv7"
118
+ PACKAGE_NAME : " {{.PROJECT_NAME}}_{{.VERSION}}_{{.PACKAGE_PLATFORM}}.tar.gz"
74
119
75
- Linux_ARM :
76
- desc : Builds Linux ARM binaries
120
+ Linux_ARMv6 :
121
+ desc : Builds Linux ARMv6 binaries
77
122
env :
78
123
GOOS : " linux"
79
124
GOARCH : " arm"
125
+ GOARM : 6
80
126
cmds :
81
127
- |
82
- go build -o {{ .DIST_DIR}}/{{ .PLATFORM_DIR }}/{{ .PROJECT_NAME }} {{.LDFLAGS}}
83
- tar cz LICENSE.txt -C {{ .DIST_DIR}}/{{ .PLATFORM_DIR }} {{ .PROJECT_NAME }} -f {{ .DIST_DIR }}/{{ .PACKAGE_NAME }}
128
+ go build -o {{.DIST_DIR}}/{{.PLATFORM_DIR}}/{{.PROJECT_NAME}} {{.LDFLAGS}}
129
+ cd {{.DIST_DIR}}
130
+ tar cz -C {{.PLATFORM_DIR}} {{.PROJECT_NAME}} -C ../.. LICENSE.txt -f {{.PACKAGE_NAME}}
131
+ sha256sum {{.PACKAGE_NAME}} >> {{.CHECKSUM_FILE}}
84
132
vars :
85
- PLATFORM_DIR : " linuxarm "
86
- PACKAGE_PLATFORM : " Linux_ARM "
87
- PACKAGE_NAME : " {{ .PROJECT_NAME }}_{{ .VERSION }}_{{ .PACKAGE_PLATFORM }}.tar.gz"
133
+ PLATFORM_DIR : " {{.PROJECT_NAME}}_linux_arm_6 "
134
+ PACKAGE_PLATFORM : " Linux_ARMv6 "
135
+ PACKAGE_NAME : " {{.PROJECT_NAME}}_{{.VERSION}}_{{.PACKAGE_PLATFORM}}.tar.gz"
88
136
89
137
Linux_ARM64 :
90
138
desc : Builds Linux ARM64 binaries
@@ -93,12 +141,14 @@ tasks:
93
141
GOARCH : " arm64"
94
142
cmds :
95
143
- |
96
- go build -o {{ .DIST_DIR}}/{{ .PLATFORM_DIR }}/{{ .PROJECT_NAME }} {{.LDFLAGS}}
97
- tar cz LICENSE.txt -C {{ .DIST_DIR}}/{{ .PLATFORM_DIR }} {{ .PROJECT_NAME }} -f {{ .DIST_DIR }}/{{ .PACKAGE_NAME }}
144
+ go build -o {{.DIST_DIR}}/{{.PLATFORM_DIR}}/{{.PROJECT_NAME}} {{.LDFLAGS}}
145
+ cd {{.DIST_DIR}}
146
+ tar cz -C {{.PLATFORM_DIR}} {{.PROJECT_NAME}} -C ../.. LICENSE.txt -f {{.PACKAGE_NAME}}
147
+ sha256sum {{.PACKAGE_NAME}} >> {{.CHECKSUM_FILE}}
98
148
vars :
99
- PLATFORM_DIR : " linuxarm64 "
149
+ PLATFORM_DIR : " {{.PROJECT_NAME}}_linux_arm_64 "
100
150
PACKAGE_PLATFORM : " Linux_ARM64"
101
- PACKAGE_NAME : " {{ .PROJECT_NAME }}_{{ .VERSION }}_{{ .PACKAGE_PLATFORM }}.tar.gz"
151
+ PACKAGE_NAME : " {{.PROJECT_NAME}}_{{.VERSION}}_{{.PACKAGE_PLATFORM}}.tar.gz"
102
152
103
153
macOS_64bit :
104
154
desc : Builds Mac OS X 64 bit binaries
@@ -107,12 +157,30 @@ tasks:
107
157
GOARCH : " amd64"
108
158
cmds :
109
159
- |
110
- go build -o {{ .DIST_DIR}}/{{ .PLATFORM_DIR }}/{{ .PROJECT_NAME }} {{.LDFLAGS}}
111
- tar cz LICENSE.txt -C {{ .DIST_DIR}}/{{ .PLATFORM_DIR }} {{ .PROJECT_NAME }} -f {{ .DIST_DIR }}/{{ .PACKAGE_NAME }}
160
+ go build -o {{.DIST_DIR}}/{{.PLATFORM_DIR}}/{{.PROJECT_NAME}} {{.LDFLAGS}}
161
+ cd {{.DIST_DIR}}
162
+ tar cz -C {{.PLATFORM_DIR}} {{.PROJECT_NAME}} -C ../.. LICENSE.txt -f {{.PACKAGE_NAME}}
163
+ sha256sum {{.PACKAGE_NAME}} >> {{.CHECKSUM_FILE}}
112
164
vars :
113
- PLATFORM_DIR : " macos64 "
165
+ PLATFORM_DIR : " {{.PROJECT_NAME}}_osx_darwin_amd64 "
114
166
PACKAGE_PLATFORM : " macOS_64bit"
115
- PACKAGE_NAME : " {{ .PROJECT_NAME }}_{{ .VERSION }}_{{ .PACKAGE_PLATFORM }}.tar.gz"
167
+ PACKAGE_NAME : " {{.PROJECT_NAME}}_{{.VERSION}}_{{.PACKAGE_PLATFORM}}.tar.gz"
168
+
169
+ macOS_ARM64 :
170
+ desc : Builds Mac OS X ARM64 binaries
171
+ env :
172
+ GOOS : " darwin"
173
+ GOARCH : " arm64"
174
+ cmds :
175
+ - |
176
+ go build -o {{.DIST_DIR}}/{{.PLATFORM_DIR}}/{{.PROJECT_NAME}} {{.LDFLAGS}}
177
+ cd {{.DIST_DIR}}
178
+ tar cz -C {{.PLATFORM_DIR}} {{.PROJECT_NAME}} -C ../.. LICENSE.txt -f {{.PACKAGE_NAME}}
179
+ sha256sum {{.PACKAGE_NAME}} >> {{.CHECKSUM_FILE}}
180
+ vars :
181
+ PLATFORM_DIR : " {{.PROJECT_NAME}}_osx_darwin_arm64"
182
+ PACKAGE_PLATFORM : " macOS_ARM64"
183
+ PACKAGE_NAME : " {{.PROJECT_NAME}}_{{.VERSION}}_{{.PACKAGE_PLATFORM}}.tar.gz"
116
184
117
185
generate-index-data :
118
186
desc : Generates json for platform index
0 commit comments