From bfb414f3baa2b9cbdbea1187b7501b8ef2ff692d Mon Sep 17 00:00:00 2001 From: Thad House Date: Thu, 1 Dec 2022 21:09:11 -0800 Subject: [PATCH 01/11] Add installers for linux arm32 and linux arm64 --- .github/workflows/ci.yml | 6 ++++ build.gradle | 30 +++++++++++++++- scripts/jdk.gradle | 74 ++++++++++++++++++++++++++++++++++++++++ scripts/maven.gradle | 11 +++--- scripts/toolchain.gradle | 39 ++++++++++++++++++--- scripts/versions.gradle | 4 ++- scripts/vscode.gradle | 73 ++++++++++++++++++++++++++++++++++++++- 7 files changed, 225 insertions(+), 12 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 80c32c13..ddc58111 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -11,6 +11,12 @@ jobs: - os: ubuntu-22.04 artifact-name: Linux build-options: "-PlinuxBuild" + - os: ubuntu-22.04 + artifact-name: LinuxArm32 + build-options: "-PlinuxBuildArm32" + - os: ubuntu-22.04 + artifact-name: LinuxArm64 + build-options: "-PlinuxBuildArm64" - os: macos-latest artifact-name: macOS build-options: "-PmacBuild" diff --git a/build.gradle b/build.gradle index 68cf2cac..f438a139 100644 --- a/build.gradle +++ b/build.gradle @@ -33,8 +33,16 @@ println pubVersion project.ext.setProperty('toolchain-optional-roboRio', '') +if (OperatingSystem.current().isWindows()) { + project.ext.currentClassifier = 'windowsx86-64' +} else if (OperatingSystem.current().isMacOsX()) { + project.ext.currentClassifier = 'osxuniversal' +} else { + project.ext.currentClassifier = 'linuxx86-64' +} + if (project.hasProperty('linuxBuild')) { - project.ext.forcePlatform = 'linuxx86' + project.ext.forcePlatform = 'linuxx86-64' project.ext.forceNativeClassifier = 'linuxx86-64' project.ext.forceToolsClassifier = 'linuxx64' project.ext.forceCppToolsClassifier = 'linuxx86-64' @@ -43,6 +51,26 @@ if (project.hasProperty('linuxBuild')) { project.ext.archiveType = Tar project.ext.isUnix = true project.ext.dotnetRuntime = 'linux-x64' +} else if (project.hasProperty('linuxBuildArm32')) { + project.ext.forcePlatform = 'linuxarm32' + project.ext.forceNativeClassifier = 'linuxarm32' + project.ext.forceToolsClassifier = 'linuxarm32' + project.ext.forceCppToolsClassifier = 'linuxarm32' + project.ext.buildClassifier = 'Linux' + offlineRepositoryRoot = "$buildDir/dependencies/linuxarm32" + project.ext.archiveType = Tar + project.ext.isUnix = true + project.ext.dotnetRuntime = 'linux-arm' +} else if (project.hasProperty('linuxBuildArm64')) { + project.ext.forcePlatform = 'linuxarm64' + project.ext.forceNativeClassifier = 'linuxarm64' + project.ext.forceToolsClassifier = 'linuxarm64' + project.ext.forceCppToolsClassifier = 'linuxarm64' + project.ext.buildClassifier = 'Linux' + offlineRepositoryRoot = "$buildDir/dependencies/linuxarm64" + project.ext.archiveType = Tar + project.ext.isUnix = true + project.ext.dotnetRuntime = 'linux-arm64' } else if (project.hasProperty('macBuild')) { project.ext.forcePlatform = 'osx' project.ext.forceNativeClassifier = 'osxuniversal' diff --git a/scripts/jdk.gradle b/scripts/jdk.gradle index a18e523d..5157fedb 100644 --- a/scripts/jdk.gradle +++ b/scripts/jdk.gradle @@ -14,6 +14,20 @@ def downloadLinuxJdk = tasks.register('downloadLinuxJdk', Download) { overwrite false } +def downloadLinuxArm32Jdk = tasks.register('downloadLinuxJdkArm32', Download) { + src "https://github.com/adoptium/temurin17-binaries/releases/download/jdk-$jdkVersionEscaped/OpenJDK17U-jdk_arm_linux_hotspot_${jdkVersionUnderscore}.tar.gz" + def fileName = file(src.file).name + dest "$buildDir/downloads/$fileName" + overwrite false +} + +def downloadLinuxArm64Jdk = tasks.register('downloadLinuxJdkArm64', Download) { + src "https://github.com/adoptium/temurin17-binaries/releases/download/jdk-$jdkVersionEscaped/OpenJDK17U-jdk_aarch64_linux_hotspot_${jdkVersionUnderscore}.tar.gz" + def fileName = file(src.file).name + dest "$buildDir/downloads/$fileName" + overwrite false +} + def downloadMacJdk = tasks.register('downloadMacJdk', Download) { src "https://github.com/adoptium/temurin17-binaries/releases/download/jdk-$jdkVersionEscaped/OpenJDK17U-jdk_x64_mac_hotspot_${jdkVersionUnderscore}.tar.gz" def fileName = file(src.file).name @@ -153,6 +167,62 @@ ext.jdkZipSetupLinux = { AbstractArchiveTask zip-> } } +ext.jdkZipSetupLinuxArm32 = { AbstractArchiveTask zip-> + zip.dependsOn downloadLinuxArm32Jdk + zip.dependsOn jdkConfigFileTask + + zip.inputs.files downloadLinuxArm32Jdk.get().outputFiles + zip.inputs.file jdkConfigFile + + zip.from(project.tarTree(project.resources.gzip(downloadLinuxArm32Jdk.get().outputFiles.first()))) { + eachFile { f-> + f.path = f.path.replace("jdk-${jdkVersion}/", 'jdk/') + } + + exclude '**/src.zip' + exclude '**/bin/*.pdb' + exclude '**/bin/*.map' + exclude '**/bin/server/*.pdb' + exclude '**/bin/server/*.map' + exclude '**/demo/**' + + includeEmptyDirs = false + } + + zip.from(jdkConfigFile) { + into '/installUtils' + rename {'jdkConfig.json'} + } +} + +ext.jdkZipSetupLinuxArm64 = { AbstractArchiveTask zip-> + zip.dependsOn downloadLinuxArm64Jdk + zip.dependsOn jdkConfigFileTask + + zip.inputs.files downloadLinuxArm64Jdk.get().outputFiles + zip.inputs.file jdkConfigFile + + zip.from(project.tarTree(project.resources.gzip(downloadLinuxArm64Jdk.get().outputFiles.first()))) { + eachFile { f-> + f.path = f.path.replace("jdk-${jdkVersion}/", 'jdk/') + } + + exclude '**/src.zip' + exclude '**/bin/*.pdb' + exclude '**/bin/*.map' + exclude '**/bin/server/*.pdb' + exclude '**/bin/server/*.map' + exclude '**/demo/**' + + includeEmptyDirs = false + } + + zip.from(jdkConfigFile) { + into '/installUtils' + rename {'jdkConfig.json'} + } +} + ext.jdkZipSetupMac = { AbstractArchiveTask zip-> zip.dependsOn downloadMacJdk zip.dependsOn jdkConfigFileTask @@ -218,6 +288,10 @@ ext.jdkZipSetupMacArm = { AbstractArchiveTask zip-> ext.jdkZipSetup = { AbstractArchiveTask zip -> if (project.hasProperty('linuxBuild')) { jdkZipSetupLinux(zip) + } else if (project.hasProperty('linuxBuildArm32')) { + jdkZipSetupLinuxArm32(zip) + } else if (project.hasProperty('linuxBuildArm64')) { + jdkZipSetupLinuxArm64(zip) } else if (project.hasProperty('macBuild')) { jdkZipSetupMac(zip) } else if (project.hasProperty('macBuildArm')) { diff --git a/scripts/maven.gradle b/scripts/maven.gradle index e426973e..d947e43a 100644 --- a/scripts/maven.gradle +++ b/scripts/maven.gradle @@ -26,7 +26,7 @@ def cppToolsArtifacts = [ 'edu.wpi.first.tools:DataLogTool' ] -def skipMacArmTools = [ +def skipNewPlatformTools = [ 'edu.wpi.first.tools:SmartDashboard' ] @@ -69,8 +69,8 @@ def lazyEvaluator = tasks.register('lazyModelEvaluation') { } } - if (project.hasProperty('macBuildArm')) { - skipMacArmTools.each { tool-> + if (project.hasProperty('macBuildArm') || project.hasProperty('linuxBuildArm32') || project.hasProperty('linuxBuildArm64')) { + skipNewPlatformTools.each { tool-> if ("$dep.groupId:$dep.artifactId" == tool) { def depString = "$dep.groupId:$dep.artifactId:$dep.version:$dep.classifier@$dep.extension" println "Skipping because arm " + depString @@ -107,8 +107,9 @@ def lazyEvaluator = tasks.register('lazyModelEvaluation') { println dep if (dep.classifier == null) { offline "$dep.groupId:$dep.artifactId:$dep.version:@$dep.extension" - } else if (dep.classifier.startsWith(project.ext.forcePlatform)) { - offline "$dep.groupId:$dep.artifactId:$dep.version:$dep.classifier@$dep.extension" + } else if (dep.classifier.startsWith(project.ext.currentClassifier)) { + def newClassifier = dep.classifier.replace(project.ext.currentClassifier, project.ext.forceNativeClassifier) + offline "$dep.groupId:$dep.artifactId:$dep.version:$newClassifier@$dep.extension" } else if (dep.classifier.contains('athena')) { offline "$dep.groupId:$dep.artifactId:$dep.version:$dep.classifier@$dep.extension" } else if (dep.classifier.contains('headers')) { diff --git a/scripts/toolchain.gradle b/scripts/toolchain.gradle index 97d9c949..00047d82 100644 --- a/scripts/toolchain.gradle +++ b/scripts/toolchain.gradle @@ -18,6 +18,14 @@ def fileNameLinux = "cortexa9_vfpv3-roborio-academic-2023-x86_64-linux-gnu-Toolc def downloadUrlLinux = baseUrl + fileNameLinux +def fileNameLinuxArm32 = "cortexa9_vfpv3-roborio-academic-2023-armv6-bullseye-linux-gnueabihf-Toolchain-${gccVersion}.tgz" + +def downloadUrlLinuxArm32 = baseUrl + fileNameLinuxArm32 + +def fileNameLinuxArm64 = "cortexa9_vfpv3-roborio-academic-2023-aarch64-bullseye-linux-gnu-Toolchain-${gccVersion}.tgz" + +def downloadUrlLinuxArm64 = baseUrl + fileNameLinuxArm64 + apply plugin: 'de.undercouch.download' def downloadTaskWindows = tasks.register('downloadToolchainWindows', Download) { @@ -48,6 +56,20 @@ def downloadTaskLinux = tasks.register('downloadToolchainLinux', Download) { overwrite false } +def downloadTaskLinuxArm32 = tasks.register('downloadToolchainLinuxArm32', Download) { + src downloadUrlLinuxArm32 + def fileName = file(src.file).name + dest "$buildDir/downloads/$fileName" + overwrite false +} + +def downloadTaskLinuxArm64 = tasks.register('downloadToolchainLinuxArm64', Download) { + src downloadUrlLinuxArm64 + def fileName = file(src.file).name + dest "$buildDir/downloads/$fileName" + overwrite false +} + ext.toolchainConfigTaskSetup = { return new Tuple2({ task-> task.inputs.property 'toolchainName', fileNameWindows @@ -61,13 +83,22 @@ ext.toolchainConfigTaskSetup = { }); } +def actualLinuxTask = null +if (project.hasProperty('linuxBuild')) { + actualLinuxTask = downloadTaskLinux +} else if (project.hasProperty('linuxBuildArm32')) { + actualLinuxTask = downloadTaskLinuxArm32 +} else if (project.hasProperty('linuxBuildArm64')) { + actualLinuxTask = downloadTaskLinuxArm64 +} + ext.toolchainZipSetup = { AbstractArchiveTask zip-> - if (project.hasProperty('linuxBuild')) { - zip.dependsOn downloadTaskLinux + if (actualLinuxTask != null) { + zip.dependsOn actualLinuxTask - zip.inputs.files downloadTaskLinux.get().outputFiles + zip.inputs.files actualLinuxTask.get().outputFiles - zip.from(project.tarTree(project.resources.gzip(downloadTaskLinux.get().outputFiles.first()))) { + zip.from(project.tarTree(project.resources.gzip(actualLinuxTask.get().outputFiles.first()))) { eachFile { f-> f.path = f.path.replace('roborio-academic/', 'roborio/') diff --git a/scripts/versions.gradle b/scripts/versions.gradle index a2566af3..8f4a521c 100644 --- a/scripts/versions.gradle +++ b/scripts/versions.gradle @@ -1,6 +1,8 @@ ext.vsCodeVersion = '1.73.1' ext.vscodeLinuxHash = 'b8a582592c73fba64b21f05668eaf7c4b6250cdc3bc6940ccf78c7dcb8f9b5d4' +ext.vscodeLinuxArm32Hash = '35da2db37cc14b7b2d18d7cdda8f0060ea7fc0b7a5e97605c80c46acdacdbbc8' +ext.vscodeLinuxArm64Hash = '2e475a724abdd748b7b777c453072c2b1a520359cac4c7a0c35d22f0230848bf' ext.vscodeMacHash = '948aef4dc24d0ab079c96794e102a9485d2eec68fc9b5456fbcc0e24039f7655' ext.vscodeWindowsHash = 'a97777ae1661922c839c6ee4bf59b5032f8fa1208e89a4b55226439841dc5238' @@ -12,7 +14,7 @@ ext.javaDependencyVersion = '0.21.1' ext.wpilibVersion = gradleRioVersion ext.gccVersion = '12.1.0' -ext.toolchainGitTag = 'v2023-5' +ext.toolchainGitTag = 'v2023-7' ext.jdkVersion = '17.0.5+8' diff --git a/scripts/vscode.gradle b/scripts/vscode.gradle index c2164b38..040313fd 100644 --- a/scripts/vscode.gradle +++ b/scripts/vscode.gradle @@ -4,12 +4,18 @@ def vscodeFile = file("$buildDir/vscodeConfig.json") def vscodeWindowsZipName = "Windows.zip" def vscodeLinuxZipName = "Linux.tar.gz" +def vscodeLinuxArm32ZipName = "LinuxArm32.tar.gz" +def vscodeLinuxArm64ZipName = "LinuxArm64.tar.gz" def vscodeMacZipName = "Mac.zip" def vscodeWindowsUrl = "https://update.code.visualstudio.com/${vsCodeVersion}/win32-x64-archive/stable".toString() def vscodeLinuxUrl = "https://update.code.visualstudio.com/${vsCodeVersion}/linux-x64/stable".toString() +def vscodeLinuxArm32Url = "https://update.code.visualstudio.com/${vsCodeVersion}/linux-armhf/stable".toString() + +def vscodeLinuxArm64Url = "https://update.code.visualstudio.com/${vsCodeVersion}/linux-arm64/stable".toString() + def vscodeMacUrl = "https://update.code.visualstudio.com/${vsCodeVersion}/darwin-universal/stable".toString() def cppWindowsUrl = "https://github.com/Microsoft/vscode-cpptools/releases/download/v${cppToolsVersion}/cpptools-win64.vsix" @@ -20,6 +26,10 @@ def cppMacArmUrl = "https://github.com/Microsoft/vscode-cpptools/releases/downlo def cppLinuxUrl = "https://github.com/Microsoft/vscode-cpptools/releases/download/v${cppToolsVersion}/cpptools-linux.vsix" +def cppLinuxArm32Url = "https://github.com/Microsoft/vscode-cpptools/releases/download/v${cppToolsVersion}/cpptools-linux-armhf.vsix" + +def cppLinuxArm64Url = "https://github.com/Microsoft/vscode-cpptools/releases/download/v${cppToolsVersion}/cpptools-linux-aarch64.vsix" + def wpilibExtensionUrl = "https://github.com/wpilibsuite/vscode-wpilib/releases/download/v${wpilibVersion}/vscode-wpilib-${wpilibVersion}.vsix" def wpilibUtilWinUrl = "https://github.com/wpilibsuite/vscode-wpilib/releases/download/v${wpilibVersion}/wpilibutility-windows.zip" @@ -79,6 +89,36 @@ def verifyLinux = tasks.register("verifyVscodeLinuxDownload", Verify) { checksum vscodeLinuxHash } +def vscodeLinuxArm32Download = tasks.register("vscodeLinuxArm32Download", Download) { + src vscodeLinuxArm32Url + dest "$buildDir/downloads/$vscodeLinuxArm32ZipName" + overwrite false +} + +def verifyLinuxArm32 = tasks.register("verifyVscodeLinuxArm32Download", Verify) { + dependsOn vscodeLinuxArm32Download + inputs.files vscodeLinuxArm32Download.get().outputFiles.first() + inputs.property 'hash', vscodeLinuxArm32Hash + src vscodeLinuxArm32Download.get().outputFiles.first() + algorithm 'SHA-256' + checksum vscodeLinuxArm32Hash +} + +def vscodeLinuxArm64Download = tasks.register("vscodeLinuxArm64Download", Download) { + src vscodeLinuxArm64Url + dest "$buildDir/downloads/$vscodeLinuxArm64ZipName" + overwrite false +} + +def verifyLinuxArm64 = tasks.register("verifyVscodeLinuxArm64Download", Verify) { + dependsOn vscodeLinuxArm64Download + inputs.files vscodeLinuxArm64Download.get().outputFiles.first() + inputs.property 'hash', vscodeLinuxArm64Hash + src vscodeLinuxArm64Download.get().outputFiles.first() + algorithm 'SHA-256' + checksum vscodeLinuxArm64Hash +} + def wpilibExtensionDownload = tasks.register("wpilibExtensionDownload", Download) { src wpilibExtensionUrl def fileName = file(src.file).name @@ -129,6 +169,20 @@ def cppLinuxExtensionDownload = tasks.register("cppLinuxExtensionDownload", Down overwrite false } +def cppLinuxArm32ExtensionDownload = tasks.register("cppLinuxArm32ExtensionDownload", Download) { + src cppLinuxArm32Url + def fileName = file(src.file).name + dest "$buildDir/downloads/$fileName" + overwrite false +} + +def cppLinuxArm64ExtensionDownload = tasks.register("cppLinuxArm64ExtensionDownload", Download) { + src cppLinuxArm64Url + def fileName = file(src.file).name + dest "$buildDir/downloads/$fileName" + overwrite false +} + def javaLangExtensionDownload = tasks.register("javaLangExtensionDownload", Download) { src javaLangUrl @@ -155,6 +209,10 @@ def javaDepExtensionDownload = tasks.register("javaDepExtensionDownload", Downlo def cppDownloadTask if (project.hasProperty('linuxBuild')) { cppDownloadTask = cppLinuxExtensionDownload +} else if (project.hasProperty('linuxBuildArm32')) { + cppDownloadTask = cppLinuxArm32ExtensionDownload +} else if (project.hasProperty('linuxBuildArm64')) { + cppDownloadTask = cppLinuxArm64ExtensionDownload } else if (project.hasProperty('macBuild')) { cppDownloadTask = cppMacExtensionDownload } else if (project.hasProperty('macBuildArm')) { @@ -177,6 +235,8 @@ def vscodeTask = tasks.register('vscodeConfig', Task) { dependsOn javaDebugExtensionDownload dependsOn javaDepExtensionDownload dependsOn verifyVscodeLinuxDownload + dependsOn verifyVscodeLinuxArm32Download + dependsOn verifyVscodeLinuxArm64Download dependsOn verifyVscodeWindowsDownload dependsOn verifyVscodeMacDownload @@ -187,6 +247,8 @@ def vscodeTask = tasks.register('vscodeConfig', Task) { inputs.files javaDepExtensionDownload.get().outputFiles inputs.property 'linuxhash', vscodeLinuxHash + inputs.property 'linuxarm32hash', vscodeLinuxArm32Hash + inputs.property 'linuxarm64hash', vscodeLinuxArm64Hash inputs.property 'machash', vscodeMacHash inputs.property 'winhash', vscodeWindowsHash @@ -219,6 +281,15 @@ def vscodeTask = tasks.register('vscodeConfig', Task) { config['VsCodeLinuxUrl'] = vscodeLinuxUrl config['VsCodeLinuxName'] = vscodeLinuxZipName config['VsCodeLinuxHash'] = vscodeLinuxHash + + config['VsCodeLinuxArm32Url'] = vscodeLinuxArm32Url + config['VsCodeLinuxArm32Name'] = vscodeLinuxArm32ZipName + config['VsCodeLinuxArm32Hash'] = vscodeLinuxArm32Hash + + config['VsCodeLinuxArm64Url'] = vscodeLinuxArm64Url + config['VsCodeLinuxArm64Name'] = vscodeLinuxArm64ZipName + config['VsCodeLinuxArm64Hash'] = vscodeLinuxArm64Hash + config['VsCodeVersion'] = vsCodeVersion config['wpilibExtension'] = wpilibMap @@ -262,7 +333,7 @@ ext.vscodeZipSetup = { AbstractArchiveTask zip-> into '/utility' includeEmptyDirs = false } - } else if (project.hasProperty('macBuild') || project.hasProperty('macBuildArm')) { + } else if (project.hasProperty('macBuild')) { // Mac // Cannot extract, otherwise mac borks zip.from (standaloneDownload.get().outputFiles.first()) { From 3578a86b15bb772242b45ba371081d005f1cfb28 Mon Sep 17 00:00:00 2001 From: Thad House Date: Thu, 1 Dec 2022 21:17:54 -0800 Subject: [PATCH 02/11] Fix utility --- scripts/vscode.gradle | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/vscode.gradle b/scripts/vscode.gradle index 040313fd..90b47ed6 100644 --- a/scripts/vscode.gradle +++ b/scripts/vscode.gradle @@ -339,6 +339,7 @@ ext.vscodeZipSetup = { AbstractArchiveTask zip-> zip.from (standaloneDownload.get().outputFiles.first()) { into '/utility' } + } else if (project.hasProperty('macBuildArm') || project.hasProperty('linuxBuildArm32') || project.hasProperty('linuxBuildArm64')) { } else { // Windows zip.from(project.zipTree(standaloneDownload.get().outputFiles.first())) { From 8349ff18971237ba7ae1826cb14c48975bbbbe8a Mon Sep 17 00:00:00 2001 From: Thad House Date: Thu, 1 Dec 2022 22:27:37 -0800 Subject: [PATCH 03/11] VS Code Fixes --- .../Models/UpgradeConfig.cs | 2 ++ .../Models/VsCodeConfig.cs | 8 +++++ .../Utils/PlatformUtils.cs | 10 ++++++ .../ViewModels/StartPageViewModel.cs | 34 +++++++++++++++++-- .../ViewModels/VSCodePageViewModel.cs | 22 ++++++++++-- .../Views/VSCodePage.xaml | 2 ++ build.gradle | 4 +-- 7 files changed, 75 insertions(+), 7 deletions(-) diff --git a/WPILibInstaller-Avalonia/Models/UpgradeConfig.cs b/WPILibInstaller-Avalonia/Models/UpgradeConfig.cs index 84f32bc1..70578e20 100644 --- a/WPILibInstaller-Avalonia/Models/UpgradeConfig.cs +++ b/WPILibInstaller-Avalonia/Models/UpgradeConfig.cs @@ -22,6 +22,8 @@ public class UpgradeConfig public const string WindowsInstallerType = "Windows"; public const string LinuxInstallerType = "Linux"; + public const string LinuxArm32InstallerType = "LinuxArm32"; + public const string LinuxArm64InstallerType = "LinuxArm64"; public const string MacInstallerType = "Mac"; public const string MacArmInstallerType = "MacArm"; diff --git a/WPILibInstaller-Avalonia/Models/VsCodeConfig.cs b/WPILibInstaller-Avalonia/Models/VsCodeConfig.cs index e1e1c1c7..f501a5fc 100644 --- a/WPILibInstaller-Avalonia/Models/VsCodeConfig.cs +++ b/WPILibInstaller-Avalonia/Models/VsCodeConfig.cs @@ -28,6 +28,14 @@ public class VsCodeConfig public string VsCodeLinuxName { get; set; } public string VsCodeLinuxHash { get; set; } + public string VsCodeLinuxArm32Url { get; set; } + public string VsCodeLinuxArm32Name { get; set; } + public string VsCodeLinuxArm32Hash { get; set; } + + public string VsCodeLinuxArm64Url { get; set; } + public string VsCodeLinuxArm64Name { get; set; } + public string VsCodeLinuxArm64Hash { get; set; } + public string VsCodeVersion { get; set; } [JsonProperty("wpilibExtension")] diff --git a/WPILibInstaller-Avalonia/Utils/PlatformUtils.cs b/WPILibInstaller-Avalonia/Utils/PlatformUtils.cs index d94ace54..ae83f6cc 100644 --- a/WPILibInstaller-Avalonia/Utils/PlatformUtils.cs +++ b/WPILibInstaller-Avalonia/Utils/PlatformUtils.cs @@ -6,6 +6,8 @@ public enum Platform { Win64, Linux64, + LinuxArm64, + LinuxArm32, Mac64, MacArm64, Invalid @@ -29,6 +31,14 @@ static PlatformUtils() { CurrentPlatform = Platform.Linux64; } + else if (currentArch == Architecture.Arm64) + { + CurrentPlatform = Platform.LinuxArm64; + } + else if (currentArch == Architecture.Arm) + { + CurrentPlatform = Platform.LinuxArm32; + } return; } diff --git a/WPILibInstaller-Avalonia/ViewModels/StartPageViewModel.cs b/WPILibInstaller-Avalonia/ViewModels/StartPageViewModel.cs index fbc0ec7c..70d7ae96 100644 --- a/WPILibInstaller-Avalonia/ViewModels/StartPageViewModel.cs +++ b/WPILibInstaller-Avalonia/ViewModels/StartPageViewModel.cs @@ -171,10 +171,14 @@ public bool MissingResourceFiles private async Task SelectResourceFilesWithFile(string file) { + Console.WriteLine("Initial"); + var zipArchive = ZipFile.OpenRead(file); var entry = zipArchive.GetEntry("vscodeConfig.json"); + Console.WriteLine($"Entry {entry}"); + if (entry == null) { return false; @@ -189,6 +193,8 @@ private async Task SelectResourceFilesWithFile(string file) }) ?? throw new InvalidOperationException("Not Valid"); } + Console.WriteLine($"Read vsCode"); + entry = zipArchive.GetEntry("jdkConfig.json"); using (StreamReader reader = new StreamReader(entry!.Open())) @@ -200,6 +206,7 @@ private async Task SelectResourceFilesWithFile(string file) }) ?? throw new InvalidOperationException("Not Valid"); } + Console.WriteLine($"Read Jdk"); entry = zipArchive.GetEntry("fullConfig.json"); @@ -212,6 +219,7 @@ private async Task SelectResourceFilesWithFile(string file) }) ?? throw new InvalidOperationException("Not Valid"); } + Console.WriteLine($"Read Full"); entry = zipArchive.GetEntry("upgradeConfig.json"); @@ -224,6 +232,8 @@ private async Task SelectResourceFilesWithFile(string file) }) ?? throw new InvalidOperationException("Not Valid"); } + Console.WriteLine($"Read Upgrade"); + string? neededInstaller = CheckInstallerType(); if (neededInstaller == null) { @@ -243,7 +253,6 @@ private async Task SelectResourceFilesWithFile(string file) private string? CheckInstallerType() { - // TODO Handle Arm someday if (OperatingSystem.IsWindows()) { if (UpgradeConfig.InstallerType != UpgradeConfig.WindowsInstallerType) @@ -271,9 +280,26 @@ private async Task SelectResourceFilesWithFile(string file) } else if (OperatingSystem.IsLinux()) { - if (UpgradeConfig.InstallerType != UpgradeConfig.LinuxInstallerType) + if (PlatformUtils.CurrentPlatform == Platform.LinuxArm64) + { + if (UpgradeConfig.InstallerType != UpgradeConfig.LinuxArm64InstallerType) + { + return UpgradeConfig.LinuxArm64InstallerType; + } + } + else if (PlatformUtils.CurrentPlatform == Platform.LinuxArm32) { - return UpgradeConfig.LinuxInstallerType; + if (UpgradeConfig.InstallerType != UpgradeConfig.LinuxArm32InstallerType) + { + return UpgradeConfig.LinuxArm32InstallerType; + } + } + else + { + if (UpgradeConfig.InstallerType != UpgradeConfig.LinuxInstallerType) + { + return UpgradeConfig.LinuxInstallerType; + } } } else @@ -351,6 +377,8 @@ public VsCodeModel VsCodeModel VsCodeModel model = new VsCodeModel(VsCodeConfig.VsCodeVersion); model.Platforms.Add(Utils.Platform.Win64, new VsCodeModel.PlatformData(VsCodeConfig.VsCodeWindowsUrl, VsCodeConfig.VsCodeWindowsName, VsCodeConfig.VsCodeWindowsHash)); model.Platforms.Add(Utils.Platform.Linux64, new VsCodeModel.PlatformData(VsCodeConfig.VsCodeLinuxUrl, VsCodeConfig.VsCodeLinuxName, VsCodeConfig.VsCodeLinuxHash)); + model.Platforms.Add(Utils.Platform.LinuxArm64, new VsCodeModel.PlatformData(VsCodeConfig.VsCodeLinuxArm64Url, VsCodeConfig.VsCodeLinuxArm64Name, VsCodeConfig.VsCodeLinuxArm64Hash)); + model.Platforms.Add(Utils.Platform.LinuxArm32, new VsCodeModel.PlatformData(VsCodeConfig.VsCodeLinuxArm32Url, VsCodeConfig.VsCodeLinuxArm32Name, VsCodeConfig.VsCodeLinuxArm32Hash)); model.Platforms.Add(Utils.Platform.Mac64, new VsCodeModel.PlatformData(VsCodeConfig.VsCodeMacUrl, VsCodeConfig.VsCodeMacName, VsCodeConfig.VsCodeMacHash)); model.Platforms.Add(Utils.Platform.MacArm64, new VsCodeModel.PlatformData(VsCodeConfig.VsCodeMacUrl, VsCodeConfig.VsCodeMacName, VsCodeConfig.VsCodeMacHash)); return model; diff --git a/WPILibInstaller-Avalonia/ViewModels/VSCodePageViewModel.cs b/WPILibInstaller-Avalonia/ViewModels/VSCodePageViewModel.cs index 8bd9fcb6..015d8e72 100644 --- a/WPILibInstaller-Avalonia/ViewModels/VSCodePageViewModel.cs +++ b/WPILibInstaller-Avalonia/ViewModels/VSCodePageViewModel.cs @@ -107,6 +107,22 @@ public double ProgressBar3 private double progressBar3 = 0; + public double ProgressBar4 + { + get => progressBar4; + set => this.RaiseAndSetIfChanged(ref progressBar4, value); + } + + private double progressBar4 = 0; + + public double ProgressBar5 + { + get => progressBar5; + set => this.RaiseAndSetIfChanged(ref progressBar5, value); + } + + private double progressBar5 = 0; + public string DoneText { get => doneText; @@ -259,9 +275,11 @@ private async Task DownloadVsCodeFunc() var win64 = DownloadToMemoryStream(Platform.Win64, Model.Platforms[Platform.Win64].DownloadUrl, (d) => ProgressBar1 = d); var linux64 = DownloadToMemoryStream(Platform.Linux64, Model.Platforms[Platform.Linux64].DownloadUrl, (d) => ProgressBar2 = d); - var mac64 = DownloadToMemoryStream(Platform.Mac64, Model.Platforms[Platform.Mac64].DownloadUrl, (d) => ProgressBar3 = d); + var linuxArm64 = DownloadToMemoryStream(Platform.Linux64, Model.Platforms[Platform.Linux64].DownloadUrl, (d) => ProgressBar3 = d); + var linuxArm32 = DownloadToMemoryStream(Platform.Linux64, Model.Platforms[Platform.Linux64].DownloadUrl, (d) => ProgressBar4 = d); + var mac64 = DownloadToMemoryStream(Platform.Mac64, Model.Platforms[Platform.Mac64].DownloadUrl, (d) => ProgressBar5 = d); - var results = await Task.WhenAll(win64, linux64, mac64); + var results = await Task.WhenAll(win64, linux64, linuxArm32, linuxArm64, mac64); string vscodeFileName = $"WPILib-VSCode-{Model.VSCodeVersion}.zip"; diff --git a/WPILibInstaller-Avalonia/Views/VSCodePage.xaml b/WPILibInstaller-Avalonia/Views/VSCodePage.xaml index e09433f8..5f477bf5 100644 --- a/WPILibInstaller-Avalonia/Views/VSCodePage.xaml +++ b/WPILibInstaller-Avalonia/Views/VSCodePage.xaml @@ -36,6 +36,8 @@ We strongly recommend using WPILib's VS Code instead of the system one or a sepa + + diff --git a/build.gradle b/build.gradle index f438a139..620a9516 100644 --- a/build.gradle +++ b/build.gradle @@ -56,7 +56,7 @@ if (project.hasProperty('linuxBuild')) { project.ext.forceNativeClassifier = 'linuxarm32' project.ext.forceToolsClassifier = 'linuxarm32' project.ext.forceCppToolsClassifier = 'linuxarm32' - project.ext.buildClassifier = 'Linux' + project.ext.buildClassifier = 'LinuxArm32' offlineRepositoryRoot = "$buildDir/dependencies/linuxarm32" project.ext.archiveType = Tar project.ext.isUnix = true @@ -66,7 +66,7 @@ if (project.hasProperty('linuxBuild')) { project.ext.forceNativeClassifier = 'linuxarm64' project.ext.forceToolsClassifier = 'linuxarm64' project.ext.forceCppToolsClassifier = 'linuxarm64' - project.ext.buildClassifier = 'Linux' + project.ext.buildClassifier = 'LinuxArm64' offlineRepositoryRoot = "$buildDir/dependencies/linuxarm64" project.ext.archiveType = Tar project.ext.isUnix = true From 5a570dcf4064c73bad375742861b22f97aab0a34 Mon Sep 17 00:00:00 2001 From: Thad House Date: Fri, 2 Dec 2022 23:34:02 -0800 Subject: [PATCH 04/11] Fix logging, and arm vscode --- .../ViewModels/StartPageViewModel.cs | 12 ------------ .../ViewModels/VSCodePageViewModel.cs | 4 ++-- 2 files changed, 2 insertions(+), 14 deletions(-) diff --git a/WPILibInstaller-Avalonia/ViewModels/StartPageViewModel.cs b/WPILibInstaller-Avalonia/ViewModels/StartPageViewModel.cs index 70d7ae96..3b4160de 100644 --- a/WPILibInstaller-Avalonia/ViewModels/StartPageViewModel.cs +++ b/WPILibInstaller-Avalonia/ViewModels/StartPageViewModel.cs @@ -171,14 +171,10 @@ public bool MissingResourceFiles private async Task SelectResourceFilesWithFile(string file) { - Console.WriteLine("Initial"); - var zipArchive = ZipFile.OpenRead(file); var entry = zipArchive.GetEntry("vscodeConfig.json"); - Console.WriteLine($"Entry {entry}"); - if (entry == null) { return false; @@ -193,8 +189,6 @@ private async Task SelectResourceFilesWithFile(string file) }) ?? throw new InvalidOperationException("Not Valid"); } - Console.WriteLine($"Read vsCode"); - entry = zipArchive.GetEntry("jdkConfig.json"); using (StreamReader reader = new StreamReader(entry!.Open())) @@ -206,8 +200,6 @@ private async Task SelectResourceFilesWithFile(string file) }) ?? throw new InvalidOperationException("Not Valid"); } - Console.WriteLine($"Read Jdk"); - entry = zipArchive.GetEntry("fullConfig.json"); using (StreamReader reader = new StreamReader(entry!.Open())) @@ -219,8 +211,6 @@ private async Task SelectResourceFilesWithFile(string file) }) ?? throw new InvalidOperationException("Not Valid"); } - Console.WriteLine($"Read Full"); - entry = zipArchive.GetEntry("upgradeConfig.json"); using (StreamReader reader = new StreamReader(entry!.Open())) @@ -232,8 +222,6 @@ private async Task SelectResourceFilesWithFile(string file) }) ?? throw new InvalidOperationException("Not Valid"); } - Console.WriteLine($"Read Upgrade"); - string? neededInstaller = CheckInstallerType(); if (neededInstaller == null) { diff --git a/WPILibInstaller-Avalonia/ViewModels/VSCodePageViewModel.cs b/WPILibInstaller-Avalonia/ViewModels/VSCodePageViewModel.cs index 015d8e72..75f77ee6 100644 --- a/WPILibInstaller-Avalonia/ViewModels/VSCodePageViewModel.cs +++ b/WPILibInstaller-Avalonia/ViewModels/VSCodePageViewModel.cs @@ -275,8 +275,8 @@ private async Task DownloadVsCodeFunc() var win64 = DownloadToMemoryStream(Platform.Win64, Model.Platforms[Platform.Win64].DownloadUrl, (d) => ProgressBar1 = d); var linux64 = DownloadToMemoryStream(Platform.Linux64, Model.Platforms[Platform.Linux64].DownloadUrl, (d) => ProgressBar2 = d); - var linuxArm64 = DownloadToMemoryStream(Platform.Linux64, Model.Platforms[Platform.Linux64].DownloadUrl, (d) => ProgressBar3 = d); - var linuxArm32 = DownloadToMemoryStream(Platform.Linux64, Model.Platforms[Platform.Linux64].DownloadUrl, (d) => ProgressBar4 = d); + var linuxArm64 = DownloadToMemoryStream(Platform.LinuxArm64, Model.Platforms[Platform.LinuxArm64].DownloadUrl, (d) => ProgressBar3 = d); + var linuxArm32 = DownloadToMemoryStream(Platform.LinuxArm32, Model.Platforms[Platform.LinuxArm32].DownloadUrl, (d) => ProgressBar4 = d); var mac64 = DownloadToMemoryStream(Platform.Mac64, Model.Platforms[Platform.Mac64].DownloadUrl, (d) => ProgressBar5 = d); var results = await Task.WhenAll(win64, linux64, linuxArm32, linuxArm64, mac64); From 6a883dbd50ff3113987f59cf60b9ac4ba4839f5a Mon Sep 17 00:00:00 2001 From: Thad House Date: Tue, 6 Dec 2022 20:14:38 -0800 Subject: [PATCH 05/11] 1 More arm fix --- .../ViewModels/InstallPageViewModel.cs | 61 +++++++++++++------ 1 file changed, 41 insertions(+), 20 deletions(-) diff --git a/WPILibInstaller-Avalonia/ViewModels/InstallPageViewModel.cs b/WPILibInstaller-Avalonia/ViewModels/InstallPageViewModel.cs index b25f3119..d0436eca 100644 --- a/WPILibInstaller-Avalonia/ViewModels/InstallPageViewModel.cs +++ b/WPILibInstaller-Avalonia/ViewModels/InstallPageViewModel.cs @@ -226,17 +226,28 @@ public override PageViewModelBase MoveNext() private ValueTask SetVsCodePortableMode() { string portableFolder = Path.Combine(configurationProvider.InstallDirectory, "vscode"); - if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) - { - portableFolder = Path.Combine(portableFolder, "VSCode-linux-x64", "data"); - } - else if (OperatingSystem.IsMacOS()) - { - portableFolder = Path.Combine(portableFolder, "code-portable-data"); - } - else + + var currentPlatform = PlatformUtils.CurrentPlatform; + switch (currentPlatform) { - portableFolder = Path.Combine(portableFolder, "data"); + case Platform.Win64: + portableFolder = Path.Combine(portableFolder, "data"); + break; + case Platform.MacArm64: + case Platform.Mac64: + portableFolder = Path.Combine(portableFolder, "code-portable-data"); + break; + case Platform.Linux64: + portableFolder = Path.Combine(portableFolder, "VSCode-linux-x64", "data"); + break; + case Platform.LinuxArm32: + portableFolder = Path.Combine(portableFolder, "VSCode-linux-armhf", "data"); + break; + case Platform.LinuxArm64: + portableFolder = Path.Combine(portableFolder, "VSCode-linux-arm64", "data"); + break; + default: + throw new PlatformNotSupportedException("Invalid platform"); } try @@ -642,17 +653,27 @@ private async Task RunVsCodeExtensionsSetup() string codeExe; - if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) - { - codeExe = Path.Combine(configurationProvider.InstallDirectory, "vscode", "bin", "code.cmd"); - } - else if (OperatingSystem.IsMacOS()) - { - codeExe = Path.Combine(configurationProvider.InstallDirectory, "vscode", "Visual Studio Code.app", "Contents", "Resources", "app", "bin", "code"); - } - else + var currentPlatform = PlatformUtils.CurrentPlatform; + switch (currentPlatform) { - codeExe = Path.Combine(configurationProvider.InstallDirectory, "vscode", "VSCode-linux-x64", "bin", "code"); + case Platform.Win64: + codeExe = Path.Combine(configurationProvider.InstallDirectory, "vscode", "bin", "code.cmd"); + break; + case Platform.MacArm64: + case Platform.Mac64: + codeExe = Path.Combine(configurationProvider.InstallDirectory, "vscode", "Visual Studio Code.app", "Contents", "Resources", "app", "bin", "code"); + break; + case Platform.Linux64: + codeExe = Path.Combine(configurationProvider.InstallDirectory, "vscode", "VSCode-linux-x64", "bin", "code"); + break; + case Platform.LinuxArm32: + codeExe = Path.Combine(configurationProvider.InstallDirectory, "vscode", "VSCode-linux-armhf", "bin", "code"); + break; + case Platform.LinuxArm64: + codeExe = Path.Combine(configurationProvider.InstallDirectory, "vscode", "VSCode-linux-arm64", "bin", "code"); + break; + default: + throw new PlatformNotSupportedException("Invalid platform"); } // Load existing extensions From 9132a646945feb0f8aafc743ff51f97f1639872d Mon Sep 17 00:00:00 2001 From: Peter Johnson Date: Sun, 20 Aug 2023 22:20:30 -0700 Subject: [PATCH 06/11] Update jdk.gradle --- scripts/jdk.gradle | 2 -- 1 file changed, 2 deletions(-) diff --git a/scripts/jdk.gradle b/scripts/jdk.gradle index be3088e7..4f4fd7f8 100644 --- a/scripts/jdk.gradle +++ b/scripts/jdk.gradle @@ -177,7 +177,6 @@ ext.jdkZipSetupLinuxArm32 = { AbstractArchiveTask zip-> f.path = f.path.replace("jdk-${jdkVersion}/", 'jdk/') } - exclude '**/src.zip' exclude '**/bin/*.pdb' exclude '**/bin/*.map' exclude '**/bin/server/*.pdb' @@ -205,7 +204,6 @@ ext.jdkZipSetupLinuxArm64 = { AbstractArchiveTask zip-> f.path = f.path.replace("jdk-${jdkVersion}/", 'jdk/') } - exclude '**/src.zip' exclude '**/bin/*.pdb' exclude '**/bin/*.map' exclude '**/bin/server/*.pdb' From 999d9a4d1007b1b653a834ffc4c732356358cd3a Mon Sep 17 00:00:00 2001 From: Peter Johnson Date: Sun, 20 Aug 2023 22:22:53 -0700 Subject: [PATCH 07/11] Update Readme.md --- Readme.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Readme.md b/Readme.md index 10be69cc..54015894 100644 --- a/Readme.md +++ b/Readme.md @@ -20,6 +20,8 @@ gradlew generateInstallers -PXmx3072m -PlinuxBuild -PjenkinsBuild ``-PlinuxBuild`` can be replaced with the OS of your choice to build. - ``-PlinuxBuild`` +- ``-PlinuxBuildArm32`` +- ``-PlinuxBuildArm64`` - ``-PmacBuild`` - ``-PmacBuildArm`` - ``-PwindowsBuild`` From 4b237e34d1f7f268e9c20ae4faacbfead2b43c64 Mon Sep 17 00:00:00 2001 From: Thad House Date: Mon, 8 Jan 2024 13:50:59 -0800 Subject: [PATCH 08/11] Remove arm32 --- .github/workflows/ci.yml | 3 -- Readme.md | 1 - .../Models/UpgradeConfig.cs | 1 - .../Models/VsCodeConfig.cs | 4 -- .../Utils/PlatformUtils.cs | 5 --- .../ViewModels/InstallPageViewModel.cs | 6 --- .../ViewModels/StartPageViewModel.cs | 8 ---- .../ViewModels/VSCodePageViewModel.cs | 14 ++----- .../Views/VSCodePage.xaml | 1 - apps/ToolsUpdater/src/main/java/Program.java | 4 -- build.gradle | 10 ----- scripts/jdk.gradle | 36 ------------------ scripts/maven.gradle | 2 +- scripts/toolchain.gradle | 15 +------- scripts/versions.gradle | 1 - scripts/vscode.gradle | 37 +------------------ 16 files changed, 6 insertions(+), 142 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 20b0ce67..e13a6c37 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -11,9 +11,6 @@ jobs: - os: ubuntu-22.04 artifact-name: Linux build-options: "-PlinuxBuild" - - os: ubuntu-22.04 - artifact-name: LinuxArm32 - build-options: "-PlinuxBuildArm32" - os: ubuntu-22.04 artifact-name: LinuxArm64 build-options: "-PlinuxBuildArm64" diff --git a/Readme.md b/Readme.md index fbaca48c..116ad509 100644 --- a/Readme.md +++ b/Readme.md @@ -20,7 +20,6 @@ gradlew generateInstallers -PXmx3072m -PlinuxBuild -PjenkinsBuild ``-PlinuxBuild`` can be replaced with the OS of your choice to build. - ``-PlinuxBuild`` -- ``-PlinuxBuildArm32`` - ``-PlinuxBuildArm64`` - ``-PmacBuild`` - ``-PmacBuildArm`` diff --git a/WPILibInstaller-Avalonia/Models/UpgradeConfig.cs b/WPILibInstaller-Avalonia/Models/UpgradeConfig.cs index 0ffd5076..908a5b47 100644 --- a/WPILibInstaller-Avalonia/Models/UpgradeConfig.cs +++ b/WPILibInstaller-Avalonia/Models/UpgradeConfig.cs @@ -22,7 +22,6 @@ public class UpgradeConfig public const string WindowsInstallerType = "Windows"; public const string LinuxInstallerType = "Linux"; - public const string LinuxArm32InstallerType = "LinuxArm32"; public const string LinuxArm64InstallerType = "LinuxArm64"; public const string MacInstallerType = "Mac"; public const string MacArmInstallerType = "MacArm"; diff --git a/WPILibInstaller-Avalonia/Models/VsCodeConfig.cs b/WPILibInstaller-Avalonia/Models/VsCodeConfig.cs index f501a5fc..f992c7d4 100644 --- a/WPILibInstaller-Avalonia/Models/VsCodeConfig.cs +++ b/WPILibInstaller-Avalonia/Models/VsCodeConfig.cs @@ -28,10 +28,6 @@ public class VsCodeConfig public string VsCodeLinuxName { get; set; } public string VsCodeLinuxHash { get; set; } - public string VsCodeLinuxArm32Url { get; set; } - public string VsCodeLinuxArm32Name { get; set; } - public string VsCodeLinuxArm32Hash { get; set; } - public string VsCodeLinuxArm64Url { get; set; } public string VsCodeLinuxArm64Name { get; set; } public string VsCodeLinuxArm64Hash { get; set; } diff --git a/WPILibInstaller-Avalonia/Utils/PlatformUtils.cs b/WPILibInstaller-Avalonia/Utils/PlatformUtils.cs index 14dd5fe3..eca8739c 100644 --- a/WPILibInstaller-Avalonia/Utils/PlatformUtils.cs +++ b/WPILibInstaller-Avalonia/Utils/PlatformUtils.cs @@ -7,7 +7,6 @@ public enum Platform Win64, Linux64, LinuxArm64, - LinuxArm32, Mac64, MacArm64, Invalid @@ -35,10 +34,6 @@ static PlatformUtils() { CurrentPlatform = Platform.LinuxArm64; } - else if (currentArch == Architecture.Arm) - { - CurrentPlatform = Platform.LinuxArm32; - } return; } diff --git a/WPILibInstaller-Avalonia/ViewModels/InstallPageViewModel.cs b/WPILibInstaller-Avalonia/ViewModels/InstallPageViewModel.cs index ff681503..c350180a 100644 --- a/WPILibInstaller-Avalonia/ViewModels/InstallPageViewModel.cs +++ b/WPILibInstaller-Avalonia/ViewModels/InstallPageViewModel.cs @@ -241,9 +241,6 @@ private ValueTask SetVsCodePortableMode() case Platform.Linux64: portableFolder = Path.Combine(portableFolder, "VSCode-linux-x64", "data"); break; - case Platform.LinuxArm32: - portableFolder = Path.Combine(portableFolder, "VSCode-linux-armhf", "data"); - break; case Platform.LinuxArm64: portableFolder = Path.Combine(portableFolder, "VSCode-linux-arm64", "data"); break; @@ -681,9 +678,6 @@ private async Task RunVsCodeExtensionsSetup() case Platform.Linux64: codeExe = Path.Combine(configurationProvider.InstallDirectory, "vscode", "VSCode-linux-x64", "bin", "code"); break; - case Platform.LinuxArm32: - codeExe = Path.Combine(configurationProvider.InstallDirectory, "vscode", "VSCode-linux-armhf", "bin", "code"); - break; case Platform.LinuxArm64: codeExe = Path.Combine(configurationProvider.InstallDirectory, "vscode", "VSCode-linux-arm64", "bin", "code"); break; diff --git a/WPILibInstaller-Avalonia/ViewModels/StartPageViewModel.cs b/WPILibInstaller-Avalonia/ViewModels/StartPageViewModel.cs index 05015fee..a5a4307c 100644 --- a/WPILibInstaller-Avalonia/ViewModels/StartPageViewModel.cs +++ b/WPILibInstaller-Avalonia/ViewModels/StartPageViewModel.cs @@ -289,13 +289,6 @@ private async Task SelectResourceFilesWithFile(string file) return UpgradeConfig.LinuxArm64InstallerType; } } - else if (PlatformUtils.CurrentPlatform == Platform.LinuxArm32) - { - if (UpgradeConfig.InstallerType != UpgradeConfig.LinuxArm32InstallerType) - { - return UpgradeConfig.LinuxArm32InstallerType; - } - } else { if (UpgradeConfig.InstallerType != UpgradeConfig.LinuxInstallerType) @@ -380,7 +373,6 @@ public VsCodeModel VsCodeModel model.Platforms.Add(Utils.Platform.Win64, new VsCodeModel.PlatformData(VsCodeConfig.VsCodeWindowsUrl, VsCodeConfig.VsCodeWindowsName, VsCodeConfig.VsCodeWindowsHash)); model.Platforms.Add(Utils.Platform.Linux64, new VsCodeModel.PlatformData(VsCodeConfig.VsCodeLinuxUrl, VsCodeConfig.VsCodeLinuxName, VsCodeConfig.VsCodeLinuxHash)); model.Platforms.Add(Utils.Platform.LinuxArm64, new VsCodeModel.PlatformData(VsCodeConfig.VsCodeLinuxArm64Url, VsCodeConfig.VsCodeLinuxArm64Name, VsCodeConfig.VsCodeLinuxArm64Hash)); - model.Platforms.Add(Utils.Platform.LinuxArm32, new VsCodeModel.PlatformData(VsCodeConfig.VsCodeLinuxArm32Url, VsCodeConfig.VsCodeLinuxArm32Name, VsCodeConfig.VsCodeLinuxArm32Hash)); model.Platforms.Add(Utils.Platform.Mac64, new VsCodeModel.PlatformData(VsCodeConfig.VsCodeMacUrl, VsCodeConfig.VsCodeMacName, VsCodeConfig.VsCodeMacHash)); model.Platforms.Add(Utils.Platform.MacArm64, new VsCodeModel.PlatformData(VsCodeConfig.VsCodeMacUrl, VsCodeConfig.VsCodeMacName, VsCodeConfig.VsCodeMacHash)); return model; diff --git a/WPILibInstaller-Avalonia/ViewModels/VSCodePageViewModel.cs b/WPILibInstaller-Avalonia/ViewModels/VSCodePageViewModel.cs index a1c3f177..2b6ae7f9 100644 --- a/WPILibInstaller-Avalonia/ViewModels/VSCodePageViewModel.cs +++ b/WPILibInstaller-Avalonia/ViewModels/VSCodePageViewModel.cs @@ -115,14 +115,6 @@ public double ProgressBar4 private double progressBar4 = 0; - public double ProgressBar5 - { - get => progressBar5; - set => this.RaiseAndSetIfChanged(ref progressBar5, value); - } - - private double progressBar5 = 0; - public string DoneText { get => doneText; @@ -284,15 +276,15 @@ private async Task DownloadVsCodeFunc() var win64 = DownloadToMemoryStream(Platform.Win64, Model.Platforms[Platform.Win64].DownloadUrl, (d) => ProgressBar1 = d); var linux64 = DownloadToMemoryStream(Platform.Linux64, Model.Platforms[Platform.Linux64].DownloadUrl, (d) => ProgressBar2 = d); var linuxArm64 = DownloadToMemoryStream(Platform.LinuxArm64, Model.Platforms[Platform.LinuxArm64].DownloadUrl, (d) => ProgressBar3 = d); - var linuxArm32 = DownloadToMemoryStream(Platform.LinuxArm32, Model.Platforms[Platform.LinuxArm32].DownloadUrl, (d) => ProgressBar4 = d); - var mac64 = DownloadToMemoryStream(Platform.Mac64, Model.Platforms[Platform.Mac64].DownloadUrl, (d) => ProgressBar5 = d); + var mac64 = DownloadToMemoryStream(Platform.Mac64, Model.Platforms[Platform.Mac64].DownloadUrl, (d) => ProgressBar4 = d); - var results = await Task.WhenAll(win64, linux64, linuxArm32, linuxArm64, mac64); + var results = await Task.WhenAll(win64, linux64, linuxArm64, mac64); try { File.Delete(Path.Join(file, Model.Platforms[Platform.Win64].NameInZip)); File.Delete(Path.Join(file, Model.Platforms[Platform.Linux64].NameInZip)); + File.Delete(Path.Join(file, Model.Platforms[Platform.LinuxArm64].NameInZip)); File.Delete(Path.Join(file, Model.Platforms[Platform.Mac64].NameInZip)); } catch diff --git a/WPILibInstaller-Avalonia/Views/VSCodePage.xaml b/WPILibInstaller-Avalonia/Views/VSCodePage.xaml index 5f477bf5..6fa1a0c4 100644 --- a/WPILibInstaller-Avalonia/Views/VSCodePage.xaml +++ b/WPILibInstaller-Avalonia/Views/VSCodePage.xaml @@ -37,7 +37,6 @@ We strongly recommend using WPILib's VS Code instead of the system one or a sepa - diff --git a/apps/ToolsUpdater/src/main/java/Program.java b/apps/ToolsUpdater/src/main/java/Program.java index ecabe896..3a3245d8 100644 --- a/apps/ToolsUpdater/src/main/java/Program.java +++ b/apps/ToolsUpdater/src/main/java/Program.java @@ -37,7 +37,6 @@ private static void installJavaTool(ToolConfig tool, String toolsPath) { } } - private static final String arm32arch = "arm32"; private static final String arm64arch = "arm64"; private static final String x64arch = "x86-64"; private static final String x86arch = "x86"; @@ -50,9 +49,6 @@ private static String desktopArch() { if (arch.equals("arm64") || arch.equals("aarch64")) { return arm64arch; } - if (arch.equals("arm32") || arch.equals("arm")) { - return arm32arch; - } return (arch.equals("amd64") || arch.equals("x86_64")) ? x64arch : x86arch; } diff --git a/build.gradle b/build.gradle index ca3f1813..a4b6760a 100644 --- a/build.gradle +++ b/build.gradle @@ -51,16 +51,6 @@ if (project.hasProperty('linuxBuild')) { project.ext.archiveType = Tar project.ext.isUnix = true project.ext.dotnetRuntime = 'linux-x64' -} else if (project.hasProperty('linuxBuildArm32')) { - project.ext.forcePlatform = 'linuxarm32' - project.ext.forceNativeClassifier = 'linuxarm32' - project.ext.forceToolsClassifier = 'linuxarm32' - project.ext.forceCppToolsClassifier = 'linuxarm32' - project.ext.buildClassifier = 'LinuxArm32' - offlineRepositoryRoot = "$buildDir/dependencies/linuxarm32" - project.ext.archiveType = Tar - project.ext.isUnix = true - project.ext.dotnetRuntime = 'linux-arm' } else if (project.hasProperty('linuxBuildArm64')) { project.ext.forcePlatform = 'linuxarm64' project.ext.forceNativeClassifier = 'linuxarm64' diff --git a/scripts/jdk.gradle b/scripts/jdk.gradle index 4f4fd7f8..7a58128b 100644 --- a/scripts/jdk.gradle +++ b/scripts/jdk.gradle @@ -14,13 +14,6 @@ def downloadLinuxJdk = tasks.register('downloadLinuxJdk', Download) { overwrite false } -def downloadLinuxArm32Jdk = tasks.register('downloadLinuxJdkArm32', Download) { - src "https://github.com/adoptium/temurin17-binaries/releases/download/jdk-$jdkVersionEscaped/OpenJDK17U-jdk_arm_linux_hotspot_${jdkVersionUnderscore}.tar.gz" - def fileName = file(src.file).name - dest "$buildDir/downloads/$fileName" - overwrite false -} - def downloadLinuxArm64Jdk = tasks.register('downloadLinuxJdkArm64', Download) { src "https://github.com/adoptium/temurin17-binaries/releases/download/jdk-$jdkVersionEscaped/OpenJDK17U-jdk_aarch64_linux_hotspot_${jdkVersionUnderscore}.tar.gz" def fileName = file(src.file).name @@ -165,33 +158,6 @@ ext.jdkZipSetupLinux = { AbstractArchiveTask zip-> } } -ext.jdkZipSetupLinuxArm32 = { AbstractArchiveTask zip-> - zip.dependsOn downloadLinuxArm32Jdk - zip.dependsOn jdkConfigFileTask - - zip.inputs.files downloadLinuxArm32Jdk.get().outputFiles - zip.inputs.file jdkConfigFile - - zip.from(project.tarTree(project.resources.gzip(downloadLinuxArm32Jdk.get().outputFiles.first()))) { - eachFile { f-> - f.path = f.path.replace("jdk-${jdkVersion}/", 'jdk/') - } - - exclude '**/bin/*.pdb' - exclude '**/bin/*.map' - exclude '**/bin/server/*.pdb' - exclude '**/bin/server/*.map' - exclude '**/demo/**' - - includeEmptyDirs = false - } - - zip.from(jdkConfigFile) { - into '/installUtils' - rename {'jdkConfig.json'} - } -} - ext.jdkZipSetupLinuxArm64 = { AbstractArchiveTask zip-> zip.dependsOn downloadLinuxArm64Jdk zip.dependsOn jdkConfigFileTask @@ -282,8 +248,6 @@ ext.jdkZipSetupMacArm = { AbstractArchiveTask zip-> ext.jdkZipSetup = { AbstractArchiveTask zip -> if (project.hasProperty('linuxBuild')) { jdkZipSetupLinux(zip) - } else if (project.hasProperty('linuxBuildArm32')) { - jdkZipSetupLinuxArm32(zip) } else if (project.hasProperty('linuxBuildArm64')) { jdkZipSetupLinuxArm64(zip) } else if (project.hasProperty('macBuild')) { diff --git a/scripts/maven.gradle b/scripts/maven.gradle index 172f797a..767a3af5 100644 --- a/scripts/maven.gradle +++ b/scripts/maven.gradle @@ -64,7 +64,7 @@ def lazyEvaluator = tasks.register('lazyModelEvaluation') { return } - if (project.hasProperty('macBuildArm') || project.hasProperty('linuxBuildArm32') || project.hasProperty('linuxBuildArm64')) { + if (project.hasProperty('macBuildArm') || project.hasProperty('linuxBuildArm64')) { skipNewPlatformTools.each { tool-> if ("$dep.groupId:$dep.artifactId" == tool) { def depString = "$dep.groupId:$dep.artifactId:$dep.version:$dep.classifier@$dep.extension" diff --git a/scripts/toolchain.gradle b/scripts/toolchain.gradle index 96d291e5..6a6992b5 100644 --- a/scripts/toolchain.gradle +++ b/scripts/toolchain.gradle @@ -18,11 +18,7 @@ def fileNameLinux = "cortexa9_vfpv3-roborio-academic-2024-x86_64-linux-gnu-Toolc def downloadUrlLinux = baseUrl + fileNameLinux -def fileNameLinuxArm32 = "cortexa9_vfpv3-roborio-academic-2023-armv6-bullseye-linux-gnueabihf-Toolchain-${gccVersion}.tgz" - -def downloadUrlLinuxArm32 = baseUrl + fileNameLinuxArm32 - -def fileNameLinuxArm64 = "cortexa9_vfpv3-roborio-academic-2023-aarch64-bullseye-linux-gnu-Toolchain-${gccVersion}.tgz" +def fileNameLinuxArm64 = "cortexa9_vfpv3-roborio-academic-2024-aarch64-bullseye-linux-gnu-Toolchain-${gccVersion}.tgz" def downloadUrlLinuxArm64 = baseUrl + fileNameLinuxArm64 @@ -56,13 +52,6 @@ def downloadTaskLinux = tasks.register('downloadToolchainLinux', Download) { overwrite false } -def downloadTaskLinuxArm32 = tasks.register('downloadToolchainLinuxArm32', Download) { - src downloadUrlLinuxArm32 - def fileName = file(src.file).name - dest "$buildDir/downloads/$fileName" - overwrite false -} - def downloadTaskLinuxArm64 = tasks.register('downloadToolchainLinuxArm64', Download) { src downloadUrlLinuxArm64 def fileName = file(src.file).name @@ -86,8 +75,6 @@ ext.toolchainConfigTaskSetup = { def actualLinuxTask = null if (project.hasProperty('linuxBuild')) { actualLinuxTask = downloadTaskLinux -} else if (project.hasProperty('linuxBuildArm32')) { - actualLinuxTask = downloadTaskLinuxArm32 } else if (project.hasProperty('linuxBuildArm64')) { actualLinuxTask = downloadTaskLinuxArm64 } diff --git a/scripts/versions.gradle b/scripts/versions.gradle index dda51fcb..58985d42 100644 --- a/scripts/versions.gradle +++ b/scripts/versions.gradle @@ -3,7 +3,6 @@ ext.vsCodeVersion = '1.85.1' ext.vscodeLinuxHash = '01669d69e567a5290336b1d2f7b2f0f1816e9d7099004b81a26f8f40ee17c9fc' ext.vscodeMacHash = '27b79f0807c6c702d7a2e78af8441c17dc08c2fb74a4e132750b3b5d1d75868f' ext.vscodeWindowsHash = '8520a2f67d4d8d0871320ff65f4145a0a2e6167234c7a8af37f1ef43eda9a0ef' -ext.vscodeLinuxArm32Hash = 'de6ad3c8bcb71c06934b1aff4bde1dce6b4551a60a17e8e1c23e0794e2db1c50' ext.vscodeLinuxArm64Hash = '81a588d153d9a25e8fa7901afd26f095514fa717d0b21c096e099c68e439658c' ext.cppToolsVersion = '1.19.1' diff --git a/scripts/vscode.gradle b/scripts/vscode.gradle index ddfdf947..0eb860e1 100644 --- a/scripts/vscode.gradle +++ b/scripts/vscode.gradle @@ -4,7 +4,6 @@ def vscodeFile = file("$buildDir/vscodeConfig.json") def vscodeWindowsZipName = "VSCode-${vsCodeVersion}-Windows.zip".toString() def vscodeLinuxZipName = "VSCode-${vsCodeVersion}-Linux.tar.gz".toString() -def vscodeLinuxArm32ZipName = "VSCode-${vsCodeVersion}-LinuxArm32.tar.gz".toString() def vscodeLinuxArm64ZipName = "VSCode-${vsCodeVersion}-LinuxArm64.tar.gz".toString() def vscodeMacZipName = "VSCode-${vsCodeVersion}-Mac.zip".toString() @@ -12,8 +11,6 @@ def vscodeWindowsUrl = "https://update.code.visualstudio.com/${vsCodeVersion}/wi def vscodeLinuxUrl = "https://update.code.visualstudio.com/${vsCodeVersion}/linux-x64/stable".toString() -def vscodeLinuxArm32Url = "https://update.code.visualstudio.com/${vsCodeVersion}/linux-armhf/stable".toString() - def vscodeLinuxArm64Url = "https://update.code.visualstudio.com/${vsCodeVersion}/linux-arm64/stable".toString() def vscodeMacUrl = "https://update.code.visualstudio.com/${vsCodeVersion}/darwin-universal/stable".toString() @@ -34,8 +31,6 @@ def isortUrl = "https://frcmaven.wpi.edu/artifactory/vscode-extensions/ms-python def blackUrl = "https://frcmaven.wpi.edu/artifactory/vscode-extensions/ms-python/black-formatter/ms-python.black-formatter-${blackVersion}.vsix" -def cppLinuxArm32Url = "https://github.com/Microsoft/vscode-cpptools/releases/download/v${cppToolsVersion}/cpptools-linux-armhf.vsix" - def cppLinuxArm64Url = "https://github.com/Microsoft/vscode-cpptools/releases/download/v${cppToolsVersion}/cpptools-linux-aarch64.vsix" def wpilibExtensionUrl = "https://github.com/wpilibsuite/vscode-wpilib/releases/download/v${wpilibVersion}/vscode-wpilib-${wpilibVersion}.vsix" @@ -97,21 +92,6 @@ def verifyLinux = tasks.register("verifyVscodeLinuxDownload", Verify) { checksum vscodeLinuxHash } -def vscodeLinuxArm32Download = tasks.register("vscodeLinuxArm32Download", Download) { - src vscodeLinuxArm32Url - dest "$buildDir/downloads/$vscodeLinuxArm32ZipName" - overwrite false -} - -def verifyLinuxArm32 = tasks.register("verifyVscodeLinuxArm32Download", Verify) { - dependsOn vscodeLinuxArm32Download - inputs.files vscodeLinuxArm32Download.get().outputFiles.first() - inputs.property 'hash', vscodeLinuxArm32Hash - src vscodeLinuxArm32Download.get().outputFiles.first() - algorithm 'SHA-256' - checksum vscodeLinuxArm32Hash -} - def vscodeLinuxArm64Download = tasks.register("vscodeLinuxArm64Download", Download) { src vscodeLinuxArm64Url dest "$buildDir/downloads/$vscodeLinuxArm64ZipName" @@ -177,13 +157,6 @@ def cppLinuxExtensionDownload = tasks.register("cppLinuxExtensionDownload", Down overwrite false } -def cppLinuxArm32ExtensionDownload = tasks.register("cppLinuxArm32ExtensionDownload", Download) { - src cppLinuxArm32Url - def fileName = file(src.file).name - dest "$buildDir/downloads/$fileName" - overwrite false -} - def cppLinuxArm64ExtensionDownload = tasks.register("cppLinuxArm64ExtensionDownload", Download) { src cppLinuxArm64Url def fileName = file(src.file).name @@ -249,8 +222,6 @@ def blackExtensionDownload = tasks.register("blackExtensionDownload", Download) def cppDownloadTask if (project.hasProperty('linuxBuild')) { cppDownloadTask = cppLinuxExtensionDownload -} else if (project.hasProperty('linuxBuildArm32')) { - cppDownloadTask = cppLinuxArm32ExtensionDownload } else if (project.hasProperty('linuxBuildArm64')) { cppDownloadTask = cppLinuxArm64ExtensionDownload } else if (project.hasProperty('macBuild')) { @@ -279,7 +250,6 @@ def vscodeTask = tasks.register('vscodeConfig', Task) { dependsOn isortExtensionDownload dependsOn blackExtensionDownload dependsOn verifyVscodeLinuxDownload - dependsOn verifyVscodeLinuxArm32Download dependsOn verifyVscodeLinuxArm64Download dependsOn verifyVscodeWindowsDownload dependsOn verifyVscodeMacDownload @@ -295,7 +265,6 @@ def vscodeTask = tasks.register('vscodeConfig', Task) { inputs.files blackExtensionDownload.get().outputFiles inputs.property 'linuxhash', vscodeLinuxHash - inputs.property 'linuxarm32hash', vscodeLinuxArm32Hash inputs.property 'linuxarm64hash', vscodeLinuxArm64Hash inputs.property 'machash', vscodeMacHash inputs.property 'winhash', vscodeWindowsHash @@ -341,10 +310,6 @@ def vscodeTask = tasks.register('vscodeConfig', Task) { config['VsCodeLinuxName'] = vscodeLinuxZipName config['VsCodeLinuxHash'] = vscodeLinuxHash - config['VsCodeLinuxArm32Url'] = vscodeLinuxArm32Url - config['VsCodeLinuxArm32Name'] = vscodeLinuxArm32ZipName - config['VsCodeLinuxArm32Hash'] = vscodeLinuxArm32Hash - config['VsCodeLinuxArm64Url'] = vscodeLinuxArm64Url config['VsCodeLinuxArm64Name'] = vscodeLinuxArm64ZipName config['VsCodeLinuxArm64Hash'] = vscodeLinuxArm64Hash @@ -402,7 +367,7 @@ ext.vscodeZipSetup = { AbstractArchiveTask zip-> zip.from (standaloneDownload.get().outputFiles.first()) { into '/utility' } - } else if (project.hasProperty('macBuildArm') || project.hasProperty('linuxBuildArm32') || project.hasProperty('linuxBuildArm64')) { + } else if (project.hasProperty('macBuildArm') || project.hasProperty('linuxBuildArm64')) { } else { // Windows zip.from(project.zipTree(standaloneDownload.get().outputFiles.first())) { From 9a58935d4124795704c0bc3e2f977b71a78cdb95 Mon Sep 17 00:00:00 2001 From: Thad House Date: Mon, 8 Jan 2024 13:51:58 -0800 Subject: [PATCH 09/11] Fix arm64 hash --- scripts/versions.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/versions.gradle b/scripts/versions.gradle index 58985d42..8cd2e315 100644 --- a/scripts/versions.gradle +++ b/scripts/versions.gradle @@ -3,7 +3,7 @@ ext.vsCodeVersion = '1.85.1' ext.vscodeLinuxHash = '01669d69e567a5290336b1d2f7b2f0f1816e9d7099004b81a26f8f40ee17c9fc' ext.vscodeMacHash = '27b79f0807c6c702d7a2e78af8441c17dc08c2fb74a4e132750b3b5d1d75868f' ext.vscodeWindowsHash = '8520a2f67d4d8d0871320ff65f4145a0a2e6167234c7a8af37f1ef43eda9a0ef' -ext.vscodeLinuxArm64Hash = '81a588d153d9a25e8fa7901afd26f095514fa717d0b21c096e099c68e439658c' +ext.vscodeLinuxArm64Hash = '7234a03003d4f34e195b3c4a57f071a6d5b816becad639c454f964f95c97aeac' ext.cppToolsVersion = '1.19.1' ext.javaExtVersion = '1.26.2023121408' From 8706da1c704f6d7b2e82ffad5d98daf7e1641b1c Mon Sep 17 00:00:00 2001 From: Thad House Date: Mon, 8 Jan 2024 13:58:17 -0800 Subject: [PATCH 10/11] Fix linux C++ extension --- scripts/vscode.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/vscode.gradle b/scripts/vscode.gradle index 0eb860e1..acf6fc79 100644 --- a/scripts/vscode.gradle +++ b/scripts/vscode.gradle @@ -23,6 +23,8 @@ def cppMacArmUrl = "https://frcmaven.wpi.edu/api/download/vscode-extensions/ms-v def cppLinuxUrl = "https://frcmaven.wpi.edu/api/download/vscode-extensions/ms-vscode/cpptools/ms-vscode.cpptools-${cppToolsVersion}@linux-x64.vsix" +def cppLinuxArm64Url = "https://frcmaven.wpi.edu/api/download/vscode-extensions/ms-vscode/cpptools/ms-vscode.cpptools-${cppToolsVersion}@linux-aarch64.vsix" + def pythonExtUrl = "https://frcmaven.wpi.edu/artifactory/vscode-extensions/ms-python/python/ms-python.python-${pythonExtVersion}.vsix" def pylanceUrl = "https://frcmaven.wpi.edu/artifactory/vscode-extensions/ms-python/vscode-pylance/ms-python.vscode-pylance-${pylanceVersion}.vsix" @@ -31,8 +33,6 @@ def isortUrl = "https://frcmaven.wpi.edu/artifactory/vscode-extensions/ms-python def blackUrl = "https://frcmaven.wpi.edu/artifactory/vscode-extensions/ms-python/black-formatter/ms-python.black-formatter-${blackVersion}.vsix" -def cppLinuxArm64Url = "https://github.com/Microsoft/vscode-cpptools/releases/download/v${cppToolsVersion}/cpptools-linux-aarch64.vsix" - def wpilibExtensionUrl = "https://github.com/wpilibsuite/vscode-wpilib/releases/download/v${wpilibVersion}/vscode-wpilib-${wpilibVersion}.vsix" def wpilibUtilWinUrl = "https://github.com/wpilibsuite/vscode-wpilib/releases/download/v${wpilibVersion}/wpilibutility-windows.zip" From 1e995ccc38162cbb0a12578895df85e9892f93df Mon Sep 17 00:00:00 2001 From: Thad House Date: Mon, 8 Jan 2024 14:00:25 -0800 Subject: [PATCH 11/11] Actually fix arm64 --- scripts/vscode.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/vscode.gradle b/scripts/vscode.gradle index acf6fc79..a7a8a3f8 100644 --- a/scripts/vscode.gradle +++ b/scripts/vscode.gradle @@ -23,7 +23,7 @@ def cppMacArmUrl = "https://frcmaven.wpi.edu/api/download/vscode-extensions/ms-v def cppLinuxUrl = "https://frcmaven.wpi.edu/api/download/vscode-extensions/ms-vscode/cpptools/ms-vscode.cpptools-${cppToolsVersion}@linux-x64.vsix" -def cppLinuxArm64Url = "https://frcmaven.wpi.edu/api/download/vscode-extensions/ms-vscode/cpptools/ms-vscode.cpptools-${cppToolsVersion}@linux-aarch64.vsix" +def cppLinuxArm64Url = "https://frcmaven.wpi.edu/api/download/vscode-extensions/ms-vscode/cpptools/ms-vscode.cpptools-${cppToolsVersion}@linux-arm64.vsix" def pythonExtUrl = "https://frcmaven.wpi.edu/artifactory/vscode-extensions/ms-python/python/ms-python.python-${pythonExtVersion}.vsix"