From 9dcad32ade94683c6e5d888b946360d242502051 Mon Sep 17 00:00:00 2001 From: leoli Date: Fri, 2 Feb 2024 20:51:55 +0800 Subject: [PATCH 1/5] feat: add support for ARM64 architecture in distributionUrl() and install() functions --- src/gcc.ts | 8 ++++++-- src/main.ts | 2 +- src/setup.ts | 4 ++-- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/gcc.ts b/src/gcc.ts index 87ab76b..ec0c644 100644 --- a/src/gcc.ts +++ b/src/gcc.ts @@ -632,7 +632,7 @@ export function latestGccVersion(): string { return Object.keys(versions)[0]; } -export function distributionUrl(version: string, platform: string): UrlData { +export function distributionUrl(version: string, platform: string, arch?: string): UrlData { // Convert the node platform value to the versions URL keys let osName = ''; switch (platform) { @@ -640,7 +640,11 @@ export function distributionUrl(version: string, platform: string): UrlData { osName = 'mac_x86_64'; break; case 'linux': - osName = 'linux_x86_64'; + if (arch === 'arm64') { + osName = 'linux_aarch64'; + } else { + osName = 'linux_x86_64'; + } break; case 'win32': osName = 'win32'; diff --git a/src/main.ts b/src/main.ts index f7c47b5..da8ee09 100644 --- a/src/main.ts +++ b/src/main.ts @@ -9,7 +9,7 @@ async function run(): Promise { if (!release || release === 'latest') { release = latestGccVersion(); } - const installPath = await setup.install(release, process.platform); + const installPath = await setup.install(release, process.platform, process.arch); const gccPath = setup.findGcc(installPath); if (!gccPath) { throw new Error(`Could not find gcc executable in ${gccPath}`); diff --git a/src/setup.ts b/src/setup.ts index 881a18e..df9c68e 100644 --- a/src/setup.ts +++ b/src/setup.ts @@ -9,11 +9,11 @@ import md5File from 'md5-file'; import * as gcc from './gcc'; -export async function install(release: string, platform: string): Promise { +export async function install(release: string, platform: string, arch?: string): Promise { const toolName = 'gcc-arm-none-eabi'; // Get the GCC release info - const distData = gcc.distributionUrl(release, platform); + const distData = gcc.distributionUrl(release, platform, arch); // Convert the GCC version to Semver so that it can be used with the GH cache const toolVersion = gcc.gccVersionToSemver(release); From 01e18c167624bb10e766d3dba22df6c5cd0228eb Mon Sep 17 00:00:00 2001 From: leoli Date: Fri, 2 Feb 2024 20:53:03 +0800 Subject: [PATCH 2/5] fix: update ARM GNU toolchain download URL --- src/gcc.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gcc.ts b/src/gcc.ts index ec0c644..b28a6ad 100644 --- a/src/gcc.ts +++ b/src/gcc.ts @@ -70,7 +70,7 @@ const versions: {[gccRelease: string]: {[platform: string]: UrlData}} = { }, linux_aarch64: { url: - 'https://developer.arm.com/-/media/Files/downloads/gnu/12.2.rel1/binrel/arm-gnu-toolchain-12.2.rel1-aarch64-arm-none-eabi.tar.xz?rev=04bfc790b30b477fab2621438ab231a7&hash=DB6D39BABFBF369F5683118F96DA4711', + 'https://developer.arm.com/-/media/Files/downloads/gnu/12.2.rel1/binrel/arm-gnu-toolchain-12.2.rel1-aarch64-arm-none-eabi.tar.xz', md5: '2014a0ebaae3168da555efdcabf03f2a', }, }, From 6c1e6dc780c1c645e65b7b3a8e28d2e1bb7f2ecf Mon Sep 17 00:00:00 2001 From: leoli Date: Fri, 2 Feb 2024 20:54:08 +0800 Subject: [PATCH 3/5] fix: update md5 checksum --- src/gcc.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gcc.ts b/src/gcc.ts index b28a6ad..bc03c66 100644 --- a/src/gcc.ts +++ b/src/gcc.ts @@ -173,7 +173,7 @@ const versions: {[gccRelease: string]: {[platform: string]: UrlData}} = { mac_x86_64: { url: 'https://developer.arm.com/-/media/Files/downloads/gnu-rm/10-2020q4/gcc-arm-none-eabi-10-2020-q4-major-mac.tar.bz2', - md5: 'e588d21be5a0cc9caa60938d2422b058', + md5: '1c3b8944c026d50362eef1f01f329a8e', }, linux_x86_64: { url: From accf2b7240736dabbae03d31db7bc1351598d4f0 Mon Sep 17 00:00:00 2001 From: leoli Date: Fri, 2 Feb 2024 20:57:58 +0800 Subject: [PATCH 4/5] ci: update test.yml to conditionally execute commands based on runner arch. and matrix release --- .github/workflows/test.yml | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index c34edaa..e7833d2 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -72,26 +72,57 @@ jobs: if: runner.os != 'Windows' run: '! arm-none-eabi-gcc --version' - name: Set up GCC Arm Compiler + if: | + (runner.arch == 'X86' || runner.arch == 'X64') || + (runner.arch == 'ARM64' && !contains(matrix.release, '2013') && !contains(matrix.release, '2014') + && !contains(matrix.release, '2015') && !contains(matrix.release, '2016') + && !contains(matrix.release, '2017') && !contains(matrix.release, '2018') + && (matrix.release != '8-2019-q3')) uses: ./ with: release: ${{ matrix.release }} - name: Print out programs invoked by the compiler + if: | + (runner.arch == 'X86' || runner.arch == 'X64') || + (runner.arch == 'ARM64' && !contains(matrix.release, '2013') && !contains(matrix.release, '2014') + && !contains(matrix.release, '2015') && !contains(matrix.release, '2016') + && !contains(matrix.release, '2017') && !contains(matrix.release, '2018') + && (matrix.release != '8-2019-q3')) run: arm-none-eabi-gcc -v - name: Print out version + if: | + (runner.arch == 'X86' || runner.arch == 'X64') || + (runner.arch == 'ARM64' && !contains(matrix.release, '2013') && !contains(matrix.release, '2014') + && !contains(matrix.release, '2015') && !contains(matrix.release, '2016') + && !contains(matrix.release, '2017') && !contains(matrix.release, '2018') + && (matrix.release != '8-2019-q3')) run: arm-none-eabi-gcc --version - name: Check the version matches if: | + (runner.arch == 'X86' || runner.arch == 'X64') && (!contains(matrix.release, '2013') && !contains(matrix.release, '2014') && !contains(matrix.release, '2015') && !contains(matrix.release, '2016') && (matrix.release != 'latest')) run: arm-none-eabi-gcc --version | grep -qi ${{ matrix.release }} - name: Clone STM32 project + if: | + (runner.arch == 'X86' || runner.arch == 'X64') || + (runner.arch == 'ARM64' && !contains(matrix.release, '2013') && !contains(matrix.release, '2014') + && !contains(matrix.release, '2015') && !contains(matrix.release, '2016') + && !contains(matrix.release, '2017') && !contains(matrix.release, '2018') + && (matrix.release != '8-2019-q3')) uses: actions/checkout@v4 with: repository: 'trebisky/stm32f103' ref: 7cfe5feaf02c653352331374d2ad178eb04efde7 path: 'stm32f103/' - name: Build simple blinky project + if: | + (runner.arch == 'X86' || runner.arch == 'X64') || + (runner.arch == 'ARM64' && !contains(matrix.release, '2013') && !contains(matrix.release, '2014') + && !contains(matrix.release, '2015') && !contains(matrix.release, '2016') + && !contains(matrix.release, '2017') && !contains(matrix.release, '2018') + && (matrix.release != '8-2019-q3')) working-directory: ./stm32f103/blink1/ run: make all From 1a8de6dc106a0450c3f51c38623b9cea2d095a86 Mon Sep 17 00:00:00 2001 From: leoli Date: Fri, 2 Feb 2024 21:08:15 +0800 Subject: [PATCH 5/5] fix: update md5 checksum --- src/gcc.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/gcc.ts b/src/gcc.ts index bc03c66..47eb30a 100644 --- a/src/gcc.ts +++ b/src/gcc.ts @@ -173,7 +173,7 @@ const versions: {[gccRelease: string]: {[platform: string]: UrlData}} = { mac_x86_64: { url: 'https://developer.arm.com/-/media/Files/downloads/gnu-rm/10-2020q4/gcc-arm-none-eabi-10-2020-q4-major-mac.tar.bz2', - md5: '1c3b8944c026d50362eef1f01f329a8e', + md5: 'e588d21be5a0cc9caa60938d2422b058', }, linux_x86_64: { url: @@ -183,7 +183,7 @@ const versions: {[gccRelease: string]: {[platform: string]: UrlData}} = { linux_aarch64: { url: 'https://developer.arm.com/-/media/Files/downloads/gnu-rm/10-2020q4/gcc-arm-none-eabi-10-2020-q4-major-aarch64-linux.tar.bz2', - md5: 'e588d21be5a0cc9caa60938d2422b058', + md5: '1c3b8944c026d50362eef1f01f329a8e', }, }, '9-2020-q2': {