Skip to content

Commit b1580ab

Browse files
authored
Distribution fixes for MacOS (#172)
1 parent 2fe9244 commit b1580ab

File tree

3 files changed

+48
-17
lines changed

3 files changed

+48
-17
lines changed

.github/workflows/release-go-task.yml

+20-12
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ jobs:
9999
run: |
100100
gon gon.config.hcl
101101
102-
- name: Re-package binary and update checksum
102+
- name: Re-package amd64 binary and update checksum
103103
# This step performs the following:
104104
# 1. Repackage the signed binary replaced in place by Gon (ignoring the output zip file)
105105
# 2. Recalculate package checksum and replace it in the nnnnnn-checksums.txt file
@@ -118,6 +118,25 @@ jobs:
118118
-e "s/.*${{ env.PROJECT_NAME }}_${TAG}_macOS_64bit.tar.gz/${CHECKSUM} ${{ env.PROJECT_NAME }}_${TAG}_macOS_64bit.tar.gz/g;" \
119119
${{ env.DIST_DIR }}/*-checksums.txt
120120
121+
- name: Re-package ARM64 binary and update checksum
122+
# This step performs the following:
123+
# 1. Repackage the signed binary replaced in place by Gon (ignoring the output zip file)
124+
# 2. Recalculate package checksum and replace it in the nnnnnn-checksums.txt file
125+
run: |
126+
# GitHub's upload/download-artifact@v4 actions don't preserve file permissions,
127+
# so we need to add execution permission back until the action is made to do this.
128+
chmod +x ${{ env.DIST_DIR }}/${{ env.PROJECT_NAME }}_osx_darwin_arm64/${{ env.PROJECT_NAME }}
129+
TAG="${GITHUB_REF/refs\/tags\//}"
130+
tar -czvf "${{ env.DIST_DIR }}/${{ env.PROJECT_NAME }}_${TAG}_macOS_ARM64.tar.gz" \
131+
-C ${{ env.DIST_DIR }}/${{ env.PROJECT_NAME }}_osx_darwin_arm64/ ${{ env.PROJECT_NAME }} \
132+
-C ../../ LICENSE.txt
133+
CHECKSUM="$(shasum -a 256 ${{ env.DIST_DIR }}/${{ env.PROJECT_NAME }}_${TAG}_macOS_ARM64.tar.gz | cut -d " " -f 1)"
134+
perl \
135+
-pi \
136+
-w \
137+
-e "s/.*${{ env.PROJECT_NAME }}_${TAG}_macOS_ARM64.tar.gz/${CHECKSUM} ${{ env.PROJECT_NAME }}_${TAG}_macOS_ARM64.tar.gz/g;" \
138+
${{ env.DIST_DIR }}/*-checksums.txt
139+
121140
- name: Upload artifacts
122141
uses: actions/upload-artifact@v4
123142
with:
@@ -156,14 +175,3 @@ jobs:
156175
# NOTE: "Artifact is a directory" warnings are expected and don't indicate a problem
157176
# (all the files we need are in the DIST_DIR root)
158177
artifacts: ${{ env.DIST_DIR }}/*
159-
160-
# TODO
161-
# - name: Upload release files on Arduino downloads servers
162-
# uses: docker://plugins/s3
163-
# env:
164-
# PLUGIN_SOURCE: "${{ env.DIST_DIR }}/*"
165-
# PLUGIN_TARGET: ${{ env.AWS_PLUGIN_TARGET }}
166-
# PLUGIN_STRIP_PREFIX: "${{ env.DIST_DIR }}/"
167-
# PLUGIN_BUCKET: ${{ secrets.DOWNLOADS_BUCKET }}
168-
# AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
169-
# AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}

DistTasks.yml

+27-4
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ tasks:
3535
- task: Linux_ARMv7
3636
- task: Linux_ARM64
3737
- task: macOS_64bit
38+
- task: macOS_ARM64
3839

3940
Windows_32bit:
4041
desc: Builds Windows 32 bit binaries
@@ -168,7 +169,7 @@ tasks:
168169
169170
vars:
170171
PLATFORM_DIR: "{{.PROJECT_NAME}}_linux_arm_6"
171-
BUILD_COMMAND: "go build -o {{.DIST_DIR}}/{{.PLATFORM_DIR}}/{{.PROJECT_NAME}} {{.LDFLAGS}}"
172+
BUILD_COMMAND: "go build -o {{.DIST_DIR}}/{{.PLATFORM_DIR}}/{{.PROJECT_NAME}} {{.LDFLAGS}} -buildvcs=false"
172173
BUILD_PLATFORM: "linux/armv6"
173174
CONTAINER_TAG: "{{.GO_VERSION}}-armel-debian12"
174175
PACKAGE_PLATFORM: "Linux_ARMv6"
@@ -197,7 +198,7 @@ tasks:
197198
PACKAGE_NAME: "{{.PROJECT_NAME}}_{{.VERSION}}_{{.PACKAGE_PLATFORM}}.tar.gz"
198199

199200
macOS_64bit:
200-
desc: Builds Mac OS X 64 bit binaries
201+
desc: Builds Mac OS X x86_64 bit binaries
201202
dir: "{{.DIST_DIR}}"
202203
cmds:
203204
- |
@@ -212,7 +213,7 @@ tasks:
212213
213214
vars:
214215
PLATFORM_DIR: "{{.PROJECT_NAME}}_osx_darwin_amd64"
215-
BUILD_COMMAND: "go build -o {{.DIST_DIR}}/{{.PLATFORM_DIR}}/{{.PROJECT_NAME}} {{.LDFLAGS}}"
216+
BUILD_COMMAND: "go build -o {{.DIST_DIR}}/{{.PLATFORM_DIR}}/{{.PROJECT_NAME}} {{.LDFLAGS}} -buildvcs=false"
216217
BUILD_PLATFORM: "darwin/amd64"
217218
# We are experiencing the following error with macOS_64bit build:
218219
#
@@ -227,6 +228,28 @@ tasks:
227228
#
228229
# To compile it we need an SDK >=10.12 so we use the debian10 based container that
229230
# has the SDK 10.14 installed.
230-
CONTAINER_TAG: "{{.GO_VERSION}}-darwin"
231+
CONTAINER_TAG: "{{.GO_VERSION}}-darwin-debian10"
231232
PACKAGE_PLATFORM: "macOS_64bit"
232233
PACKAGE_NAME: "{{.PROJECT_NAME}}_{{.VERSION}}_{{.PACKAGE_PLATFORM}}.tar.gz"
234+
235+
macOS_ARM64:
236+
desc: Builds Mac OS X ARM64 binaries
237+
dir: "{{.DIST_DIR}}"
238+
cmds:
239+
- |
240+
docker run -v `pwd`/..:/home/build -w /home/build \
241+
-e CGO_ENABLED=1 \
242+
{{.CONTAINER}}:{{.CONTAINER_TAG}} \
243+
--build-cmd "{{.BUILD_COMMAND}}" \
244+
-p "{{.BUILD_PLATFORM}}"
245+
246+
tar cz -C {{.PLATFORM_DIR}} {{.PROJECT_NAME}} -C ../.. LICENSE.txt -f {{.PACKAGE_NAME}}
247+
sha256sum {{.PACKAGE_NAME}} >> {{.CHECKSUM_FILE}}
248+
249+
vars:
250+
PLATFORM_DIR: "{{.PROJECT_NAME}}_osx_darwin_arm64"
251+
BUILD_COMMAND: "go build -o {{.DIST_DIR}}/{{.PLATFORM_DIR}}/{{.PROJECT_NAME}} {{.LDFLAGS}} -buildvcs=false"
252+
BUILD_PLATFORM: "darwin/arm64"
253+
CONTAINER_TAG: "{{.GO_VERSION}}-darwin-arm64-debian10"
254+
PACKAGE_PLATFORM: "macOS_ARM64"
255+
PACKAGE_NAME: "{{.PROJECT_NAME}}_{{.VERSION}}_{{.PACKAGE_PLATFORM}}.tar.gz"

gon.config.hcl

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Source: https://github.com/arduino/tooling-project-assets/blob/main/workflow-templates/assets/general/gon.config.hcl
22
# See: https://github.com/Bearer/gon#configuration-file
3-
source = ["dist/arduino-cloud-cli_osx_darwin_amd64/arduino-cloud-cli"]
3+
source = ["dist/arduino-cloud-cli_osx_darwin_amd64/arduino-cloud-cli", "dist/arduino-cloud-cli_osx_darwin_arm64/arduino-cloud-cli"]
44
bundle_id = "cc.arduino.arduino-cloud-cli"
55

66
sign {

0 commit comments

Comments
 (0)