Skip to content

Commit 56cd0de

Browse files
committed
add WoA support
1 parent 5ebbd40 commit 56cd0de

File tree

2 files changed

+100
-33
lines changed

2 files changed

+100
-33
lines changed

dist/restore/index.js

Lines changed: 47 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -67473,6 +67473,8 @@ function cacheDir(ccacheVariant) {
6747367473

6747467474

6747567475

67476+
const CCACHE_VERSION = "4.12.2";
67477+
const SCCACHE_VERSION = "v0.12.0";
6747667478
const SELF_CI = external_process_namespaceObject.env["CCACHE_ACTION_CI"] === "true";
6747767479
function getPackageManagerError(error) {
6747867480
return (`Failed to install ccache via package manager: '${error}'. ` +
@@ -67584,34 +67586,64 @@ async function installCcacheLinux() {
6758467586
throw Error("Can't install ccache automatically under this platform, please install it yourself before using this action.");
6758567587
}
6758667588
async function installCcacheWindows() {
67587-
await installCcacheFromGitHub("4.9", "windows-x86_64",
67589+
let packageName;
67590+
let sha256;
67591+
switch (external_process_namespaceObject.arch) {
67592+
case "x64":
67593+
packageName = "windows-x86_64";
67594+
sha256 = "bd73f405e3e80c7f0081ee75dbf9ee44dee64ecfbc3d4316e9a4ede4832f2e41";
67595+
break;
67596+
case "arm64":
67597+
packageName = "windows-aarch64";
67598+
sha256 = "9881a3acf40a5b22eff1c1650b335bd7cf56cf66a6c05cb7d0f53f19b43054f8";
67599+
break;
67600+
default:
67601+
throw new Error(`Unsupported architecture: ${external_process_namespaceObject.arch}`);
67602+
}
67603+
await installCcacheFromGitHub(packageName,
6758867604
// sha256sum of ccache.exe
67589-
"cf18d274a54b49dcd77f6c289c26eeb89d180cb8329711e607478ed5ef74918c",
67605+
sha256,
6759067606
// TODO find a better place
6759167607
`${external_process_namespaceObject.env.USERPROFILE}\\.cargo\\bin`, "ccache.exe");
6759267608
}
6759367609
async function installSccacheMac() {
6759467610
await execShell("brew install sccache");
6759567611
}
6759667612
async function installSccacheLinux() {
67597-
let packageName;
67613+
let packageArch;
6759867614
let sha256;
6759967615
switch (external_process_namespaceObject.arch) {
6760067616
case "x64":
67601-
packageName = "x86_64-unknown-linux-musl";
67602-
sha256 = "c205ba0911ce383e90263df8d83e445becccfff1bc0bb2e69ec57d1aa3090a4b";
67617+
packageArch = "x86_64";
67618+
sha256 = "e381a9675f971082a522907b8381c1054777ea60511043e4c67de5dfddff3029";
6760367619
break;
6760467620
case "arm64":
67605-
packageName = "aarch64-unknown-linux-musl";
67606-
sha256 = "8df5d557b50aa19c1c818b1a6465454a9dd807917af678f3feae11ee5c9dbe27";
67621+
packageArch = "aarch64";
67622+
sha256 = "2f9a8af7cea98e848f92e865a6d5062cfb8c91feeef17417cdd43276b4c7d8af";
6760767623
break;
6760867624
default:
6760967625
throw new Error(`Unsupported architecture: ${external_process_namespaceObject.arch}`);
6761067626
}
67611-
await installSccacheFromGitHub("v0.10.0", packageName, sha256, "/usr/local/bin/", "sccache");
67627+
let packageName = `${packageArch}-unknown-linux-musl`;
67628+
await installSccacheFromGitHub(packageName, sha256, "/usr/local/bin/", "sccache");
6761267629
}
6761367630
async function installSccacheWindows() {
67614-
await installSccacheFromGitHub("v0.10.0", "x86_64-pc-windows-msvc", "f3eff6014d973578498dbabcf1510fec2a624043d4035e15f2dc660fb35200d7",
67631+
let packageArch;
67632+
let sha256;
67633+
switch (external_process_namespaceObject.arch) {
67634+
case "x64":
67635+
packageArch = "x86_64";
67636+
sha256 = "b0236d379a66b22f6bc9e944adb5b354163015315c3a2aaf7803ce2add758fcd";
67637+
break;
67638+
case "arm64":
67639+
packageArch = "aarch64";
67640+
sha256 = "0254597932dcc4fa85f67ac149be29941b96a19f8b1bb0bf71b24640641ab987";
67641+
break;
67642+
default:
67643+
throw new Error(`Unsupported architecture: ${external_process_namespaceObject.arch}`);
67644+
}
67645+
let packageName = `${packageArch}-pc-windows-msvc`;
67646+
await installSccacheFromGitHub(packageName, sha256,
6761567647
// TODO find a better place
6761667648
`${external_process_namespaceObject.env.USERPROFILE}\\.cargo\\bin`, "sccache.exe");
6761767649
}
@@ -67621,17 +67653,17 @@ async function execShell(cmd) {
6762167653
async function execShellSudo(cmd) {
6762267654
await execShell("$(which sudo) " + cmd);
6762367655
}
67624-
async function installCcacheFromGitHub(version, artifactName, binSha256, binDir, binName) {
67625-
const archiveName = `ccache-${version}-${artifactName}`;
67626-
const url = `https://github.com/ccache/ccache/releases/download/v${version}/${archiveName}.zip`;
67656+
async function installCcacheFromGitHub(artifactName, binSha256, binDir, binName) {
67657+
const archiveName = `ccache-${CCACHE_VERSION}-${artifactName}`;
67658+
const url = `https://github.com/ccache/ccache/releases/download/v${CCACHE_VERSION}/${archiveName}.zip`;
6762767659
const binPath = external_path_default().join(binDir, binName);
6762867660
await downloadAndExtract(url, external_path_default().join(archiveName, binName), binPath);
6762967661
checkSha256Sum(binPath, binSha256);
6763067662
lib_core.addPath(binDir);
6763167663
}
67632-
async function installSccacheFromGitHub(version, artifactName, binSha256, binDir, binName) {
67633-
const archiveName = `sccache-${version}-${artifactName}`;
67634-
const url = `https://github.com/mozilla/sccache/releases/download/${version}/${archiveName}.tar.gz`;
67664+
async function installSccacheFromGitHub(artifactName, binSha256, binDir, binName) {
67665+
const archiveName = `sccache-${SCCACHE_VERSION}-${artifactName}`;
67666+
const url = `https://github.com/mozilla/sccache/releases/download/${SCCACHE_VERSION}/${archiveName}.tar.gz`;
6763567667
const binPath = external_path_default().join(binDir, binName);
6763667668
await downloadAndExtract(url, `*/${binName}`, binPath);
6763767669
checkSha256Sum(binPath, binSha256);

src/restore.ts

Lines changed: 53 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@ import * as process from "process";
99
import * as cache from "@actions/cache";
1010
import { cacheDir } from "./common";
1111

12+
const CCACHE_VERSION: string = "4.12.2"
13+
const SCCACHE_VERSION: string = "v0.12.0"
14+
1215
const SELF_CI = process.env["CCACHE_ACTION_CI"] === "true"
1316

1417
function getPackageManagerError(error: Error | unknown) : string {
@@ -129,11 +132,25 @@ async function installCcacheLinux() : Promise<void> {
129132
}
130133

131134
async function installCcacheWindows() : Promise<void> {
135+
let packageName: string;
136+
let sha256: string;
137+
switch (process.arch) {
138+
case "x64":
139+
packageName = "windows-x86_64";
140+
sha256 = "bd73f405e3e80c7f0081ee75dbf9ee44dee64ecfbc3d4316e9a4ede4832f2e41";
141+
break;
142+
case "arm64":
143+
packageName = "windows-aarch64";
144+
sha256 = "9881a3acf40a5b22eff1c1650b335bd7cf56cf66a6c05cb7d0f53f19b43054f8"
145+
break;
146+
default:
147+
throw new Error(`Unsupported architecture: ${process.arch}`);
148+
}
149+
132150
await installCcacheFromGitHub(
133-
"4.9",
134-
"windows-x86_64",
151+
packageName,
135152
// sha256sum of ccache.exe
136-
"cf18d274a54b49dcd77f6c289c26eeb89d180cb8329711e607478ed5ef74918c",
153+
sha256,
137154
// TODO find a better place
138155
`${process.env.USERPROFILE}\\.cargo\\bin`,
139156
"ccache.exe"
@@ -145,22 +162,24 @@ async function installSccacheMac() : Promise<void> {
145162
}
146163

147164
async function installSccacheLinux() : Promise<void> {
148-
let packageName: string;
165+
let packageArch: string;
149166
let sha256: string;
150167
switch (process.arch) {
151168
case "x64":
152-
packageName = "x86_64-unknown-linux-musl";
153-
sha256 = "c205ba0911ce383e90263df8d83e445becccfff1bc0bb2e69ec57d1aa3090a4b";
169+
packageArch = "x86_64"
170+
sha256 = "e381a9675f971082a522907b8381c1054777ea60511043e4c67de5dfddff3029";
154171
break;
155172
case "arm64":
156-
packageName = "aarch64-unknown-linux-musl";
157-
sha256 = "8df5d557b50aa19c1c818b1a6465454a9dd807917af678f3feae11ee5c9dbe27"
173+
packageArch = "aarch64";
174+
sha256 = "2f9a8af7cea98e848f92e865a6d5062cfb8c91feeef17417cdd43276b4c7d8af"
158175
break;
159176
default:
160177
throw new Error(`Unsupported architecture: ${process.arch}`);
161178
}
179+
180+
let packageName: string = `${packageArch}-unknown-linux-musl`
181+
162182
await installSccacheFromGitHub(
163-
"v0.10.0",
164183
packageName,
165184
sha256,
166185
"/usr/local/bin/",
@@ -169,10 +188,26 @@ async function installSccacheLinux() : Promise<void> {
169188
}
170189

171190
async function installSccacheWindows() : Promise<void> {
191+
let packageArch: string;
192+
let sha256: string;
193+
switch (process.arch) {
194+
case "x64":
195+
packageArch = "x86_64"
196+
sha256 = "b0236d379a66b22f6bc9e944adb5b354163015315c3a2aaf7803ce2add758fcd";
197+
break;
198+
case "arm64":
199+
packageArch = "aarch64";
200+
sha256 = "0254597932dcc4fa85f67ac149be29941b96a19f8b1bb0bf71b24640641ab987"
201+
break;
202+
default:
203+
throw new Error(`Unsupported architecture: ${process.arch}`);
204+
}
205+
206+
let packageName: string = `${packageArch}-pc-windows-msvc`
207+
172208
await installSccacheFromGitHub(
173-
"v0.10.0",
174-
"x86_64-pc-windows-msvc",
175-
"f3eff6014d973578498dbabcf1510fec2a624043d4035e15f2dc660fb35200d7",
209+
packageName,
210+
sha256,
176211

177212
// TODO find a better place
178213
`${process.env.USERPROFILE}\\.cargo\\bin`,
@@ -188,18 +223,18 @@ async function execShellSudo(cmd : string) {
188223
await execShell("$(which sudo) " + cmd);
189224
}
190225

191-
async function installCcacheFromGitHub(version : string, artifactName : string, binSha256 : string, binDir : string, binName : string) : Promise<void> {
192-
const archiveName = `ccache-${version}-${artifactName}`;
193-
const url = `https://github.com/ccache/ccache/releases/download/v${version}/${archiveName}.zip`;
226+
async function installCcacheFromGitHub(artifactName : string, binSha256 : string, binDir : string, binName : string) : Promise<void> {
227+
const archiveName = `ccache-${CCACHE_VERSION}-${artifactName}`;
228+
const url = `https://github.com/ccache/ccache/releases/download/v${CCACHE_VERSION}/${archiveName}.zip`;
194229
const binPath = path.join(binDir, binName);
195230
await downloadAndExtract(url, path.join(archiveName, binName), binPath);
196231
checkSha256Sum(binPath, binSha256);
197232
core.addPath(binDir);
198233
}
199234

200-
async function installSccacheFromGitHub(version : string, artifactName : string, binSha256 : string, binDir : string, binName : string) : Promise<void> {
201-
const archiveName = `sccache-${version}-${artifactName}`;
202-
const url = `https://github.com/mozilla/sccache/releases/download/${version}/${archiveName}.tar.gz`;
235+
async function installSccacheFromGitHub(artifactName : string, binSha256 : string, binDir : string, binName : string) : Promise<void> {
236+
const archiveName = `sccache-${SCCACHE_VERSION}-${artifactName}`;
237+
const url = `https://github.com/mozilla/sccache/releases/download/${SCCACHE_VERSION}/${archiveName}.tar.gz`;
203238
const binPath = path.join(binDir, binName);
204239
await downloadAndExtract(url, `*/${binName}`, binPath);
205240
checkSha256Sum(binPath, binSha256);

0 commit comments

Comments
 (0)