From 75cd46ec0c4d8108ee45f7507e2bca5517988d31 Mon Sep 17 00:00:00 2001 From: Aiqiao Yan Date: Fri, 1 May 2020 14:25:15 -0400 Subject: [PATCH] Use 30 as the long distance matching window to support both 32-bit and 64-bit OS --- CONTRIBUTING.md | 2 +- __tests__/tar.test.ts | 7 ++----- dist/restore/index.js | 17 +++++------------ dist/save/index.js | 17 +++++------------ src/tar.ts | 16 ++++------------ 5 files changed, 17 insertions(+), 42 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 687268d..e11bb5a 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -31,4 +31,4 @@ Here are a few things you can do that will increase the likelihood of your pull - [How to Contribute to Open Source](https://opensource.guide/how-to-contribute/) - [Using Pull Requests](https://help.github.com/articles/about-pull-requests/) -- [GitHub Help](https://help.github.com) +- [GitHub Help](https://help.github.com) \ No newline at end of file diff --git a/__tests__/tar.test.ts b/__tests__/tar.test.ts index 8345c67..5ffa19a 100644 --- a/__tests__/tar.test.ts +++ b/__tests__/tar.test.ts @@ -12,7 +12,6 @@ jest.mock("@actions/exec"); jest.mock("@actions/io"); const IS_WINDOWS = process.platform === "win32"; -const IS_64OS = process.platform != "win32" || process.arch === "x64"; function getTempDir(): string { return path.join(__dirname, "_temp", "tar"); @@ -47,13 +46,12 @@ test("zstd extract tar", async () => { const tarPath = IS_WINDOWS ? `${process.env["windir"]}\\System32\\tar.exe` : "tar"; - const zstdOptions = IS_64OS ? "zstd -d --long=31" : "zstd -d --long=30"; expect(execMock).toHaveBeenCalledTimes(1); expect(execMock).toHaveBeenCalledWith( `"${tarPath}"`, [ "--use-compress-program", - zstdOptions, + "zstd -d --long=30", "-xf", IS_WINDOWS ? archivePath.replace(/\\/g, "/") : archivePath, "-P", @@ -142,14 +140,13 @@ test("zstd create tar", async () => { const tarPath = IS_WINDOWS ? `${process.env["windir"]}\\System32\\tar.exe` : "tar"; - const zstdOptions = IS_64OS ? "zstd -T0 --long=31" : "zstd -T0 --long=30"; expect(execMock).toHaveBeenCalledTimes(1); expect(execMock).toHaveBeenCalledWith( `"${tarPath}"`, [ "--use-compress-program", - zstdOptions, + "zstd -T0 --long=30", "-cf", IS_WINDOWS ? CacheFilename.Zstd.replace(/\\/g, "/") diff --git a/dist/restore/index.js b/dist/restore/index.js index 8eeaf0a..67707ad 100644 --- a/dist/restore/index.js +++ b/dist/restore/index.js @@ -5078,22 +5078,17 @@ function getWorkingDirectory() { var _a; return _a = process.env["GITHUB_WORKSPACE"], (_a !== null && _a !== void 0 ? _a : process.cwd()); } -function isOS64() { - return process.platform != "win32" || process.arch === "x64"; -} function extractTar(archivePath, compressionMethod) { return __awaiter(this, void 0, void 0, function* () { // Create directory to extract tar into const workingDirectory = getWorkingDirectory(); yield io.mkdirP(workingDirectory); - // --d: Decompress. + // --d: Decompress. // --long=#: Enables long distance matching with # bits. Maximum is 30 (1GB) on 32-bit OS and 31 (2GB) on 64-bit. + // Using 30 here because we also support 32-bit self-hosted runners. const args = [ ...(compressionMethod == constants_1.CompressionMethod.Zstd - ? [ - "--use-compress-program", - isOS64() ? "zstd -d --long=31" : "zstd -d --long=30" - ] + ? ["--use-compress-program", "zstd -d --long=30"] : ["-z"]), "-xf", archivePath.replace(new RegExp("\\" + path.sep, "g"), "/"), @@ -5113,13 +5108,11 @@ function createTar(archiveFolder, sourceDirectories, compressionMethod) { fs_1.writeFileSync(path.join(archiveFolder, manifestFilename), sourceDirectories.join("\n")); // -T#: Compress using # working thread. If # is 0, attempt to detect and use the number of physical CPU cores. // --long=#: Enables long distance matching with # bits. Maximum is 30 (1GB) on 32-bit OS and 31 (2GB) on 64-bit. + // Using 30 here because we also support 32-bit self-hosted runners. const workingDirectory = getWorkingDirectory(); const args = [ ...(compressionMethod == constants_1.CompressionMethod.Zstd - ? [ - "--use-compress-program", - isOS64() ? "zstd -T0 --long=31" : "zstd -T0 --long=30" - ] + ? ["--use-compress-program", "zstd -T0 --long=30"] : ["-z"]), "-cf", cacheFileName.replace(new RegExp("\\" + path.sep, "g"), "/"), diff --git a/dist/save/index.js b/dist/save/index.js index 2945161..3d7a6df 100644 --- a/dist/save/index.js +++ b/dist/save/index.js @@ -5055,22 +5055,17 @@ function getWorkingDirectory() { var _a; return _a = process.env["GITHUB_WORKSPACE"], (_a !== null && _a !== void 0 ? _a : process.cwd()); } -function isOS64() { - return process.platform != "win32" || process.arch === "x64"; -} function extractTar(archivePath, compressionMethod) { return __awaiter(this, void 0, void 0, function* () { // Create directory to extract tar into const workingDirectory = getWorkingDirectory(); yield io.mkdirP(workingDirectory); - // --d: Decompress. + // --d: Decompress. // --long=#: Enables long distance matching with # bits. Maximum is 30 (1GB) on 32-bit OS and 31 (2GB) on 64-bit. + // Using 30 here because we also support 32-bit self-hosted runners. const args = [ ...(compressionMethod == constants_1.CompressionMethod.Zstd - ? [ - "--use-compress-program", - isOS64() ? "zstd -d --long=31" : "zstd -d --long=30" - ] + ? ["--use-compress-program", "zstd -d --long=30"] : ["-z"]), "-xf", archivePath.replace(new RegExp("\\" + path.sep, "g"), "/"), @@ -5090,13 +5085,11 @@ function createTar(archiveFolder, sourceDirectories, compressionMethod) { fs_1.writeFileSync(path.join(archiveFolder, manifestFilename), sourceDirectories.join("\n")); // -T#: Compress using # working thread. If # is 0, attempt to detect and use the number of physical CPU cores. // --long=#: Enables long distance matching with # bits. Maximum is 30 (1GB) on 32-bit OS and 31 (2GB) on 64-bit. + // Using 30 here because we also support 32-bit self-hosted runners. const workingDirectory = getWorkingDirectory(); const args = [ ...(compressionMethod == constants_1.CompressionMethod.Zstd - ? [ - "--use-compress-program", - isOS64() ? "zstd -T0 --long=31" : "zstd -T0 --long=30" - ] + ? ["--use-compress-program", "zstd -T0 --long=30"] : ["-z"]), "-cf", cacheFileName.replace(new RegExp("\\" + path.sep, "g"), "/"), diff --git a/src/tar.ts b/src/tar.ts index 8aa7b0a..e40a01a 100644 --- a/src/tar.ts +++ b/src/tar.ts @@ -32,10 +32,6 @@ function getWorkingDirectory(): string { return process.env["GITHUB_WORKSPACE"] ?? process.cwd(); } -function isOS64(): boolean { - return process.platform != "win32" || process.arch === "x64"; -} - export async function extractTar( archivePath: string, compressionMethod: CompressionMethod @@ -45,12 +41,10 @@ export async function extractTar( await io.mkdirP(workingDirectory); // --d: Decompress. // --long=#: Enables long distance matching with # bits. Maximum is 30 (1GB) on 32-bit OS and 31 (2GB) on 64-bit. + // Using 30 here because we also support 32-bit self-hosted runners. const args = [ ...(compressionMethod == CompressionMethod.Zstd - ? [ - "--use-compress-program", - isOS64() ? "zstd -d --long=31" : "zstd -d --long=30" - ] + ? ["--use-compress-program", "zstd -d --long=30"] : ["-z"]), "-xf", archivePath.replace(new RegExp("\\" + path.sep, "g"), "/"), @@ -75,13 +69,11 @@ export async function createTar( ); // -T#: Compress using # working thread. If # is 0, attempt to detect and use the number of physical CPU cores. // --long=#: Enables long distance matching with # bits. Maximum is 30 (1GB) on 32-bit OS and 31 (2GB) on 64-bit. + // Using 30 here because we also support 32-bit self-hosted runners. const workingDirectory = getWorkingDirectory(); const args = [ ...(compressionMethod == CompressionMethod.Zstd - ? [ - "--use-compress-program", - isOS64() ? "zstd -T0 --long=31" : "zstd -T0 --long=30" - ] + ? ["--use-compress-program", "zstd -T0 --long=30"] : ["-z"]), "-cf", cacheFileName.replace(new RegExp("\\" + path.sep, "g"), "/"),