From 5480d9a6a922ba88cb95d83c1f441d6abd45eb2f Mon Sep 17 00:00:00 2001 From: Sora Morimoto Date: Wed, 12 Mar 2025 22:28:27 +0900 Subject: [PATCH] Keep the build directory clean with the `--local-package-dir` argument Signed-off-by: Sora Morimoto --- dist/index.js | 44 +++------------------------ dist/post/index.js | 11 ++----- packages/setup-ocaml/src/cache.ts | 13 ++------ packages/setup-ocaml/src/constants.ts | 5 ++- packages/setup-ocaml/src/windows.ts | 38 ++--------------------- 5 files changed, 13 insertions(+), 98 deletions(-) diff --git a/dist/index.js b/dist/index.js index a7342d65..dd6a41d8 100644 --- a/dist/index.js +++ b/dist/index.js @@ -146883,10 +146883,10 @@ const PLATFORM = (() => { })(); const CYGWIN_MIRROR = "https://mirrors.kernel.org/sourceware/cygwin/"; const GITHUB_WORKSPACE = external_node_process_.env.GITHUB_WORKSPACE ?? external_node_process_.cwd(); -const CYGWIN_MIRROR_ENCODED_URI = encodeURIComponent(CYGWIN_MIRROR).toLowerCase(); // [HACK] https://github.com/ocaml/setup-ocaml/pull/55 const CYGWIN_ROOT = external_node_path_namespaceObject.join("D:", "cygwin"); const CYGWIN_ROOT_BIN = external_node_path_namespaceObject.join(CYGWIN_ROOT, "bin"); +const CYGWIN_LOCAL_PACKAGE_DIR = external_node_path_namespaceObject.join(CYGWIN_ROOT, "packages"); const CYGWIN_BASH_ENV = external_node_path_namespaceObject.join(CYGWIN_ROOT, "bash_env"); const DUNE_CACHE_ROOT = (() => { const xdgCacheHome = external_node_process_.env.XDG_CACHE_HOME; @@ -165792,9 +165792,6 @@ async function fromURL(url, options = {}) { - - - function createHttpClient() { return new http_client_lib.HttpClient("OCamlBot (+https://github.com/ocaml/setup-ocaml)", [], { allowRetries: true, maxRetries: 5 }); } @@ -165812,37 +165809,8 @@ const cygwinVersion = (async () => { }); return version; })(); -async function setGitToIgnoreCygwinLocalPackageDirectory() { - const xdgConfigHome = process.env.XDG_CONFIG_HOME; - const homeDir = external_node_os_.homedir(); - const globalGitConfigDir = xdgConfigHome - ? external_node_path_namespaceObject.join(xdgConfigHome, "git") - : external_node_path_namespaceObject.join(homeDir, ".config", "git"); - await promises_namespaceObject.mkdir(globalGitConfigDir, { recursive: true }); - const globalGitIgnorePath = external_node_path_namespaceObject.join(globalGitConfigDir, "ignore"); - try { - await promises_namespaceObject.access(globalGitIgnorePath, promises_namespaceObject.constants.R_OK); - const contents = await promises_namespaceObject.readFile(globalGitIgnorePath, { - encoding: "utf8", - }); - if (!contents.includes(CYGWIN_MIRROR_ENCODED_URI)) { - await promises_namespaceObject.appendFile(globalGitIgnorePath, CYGWIN_MIRROR_ENCODED_URI, { - encoding: "utf8", - }); - } - } - catch { - await promises_namespaceObject.writeFile(globalGitIgnorePath, CYGWIN_MIRROR_ENCODED_URI, { - encoding: "utf8", - }); - } - finally { - await (0,lib_exec.exec)("git", ["config", "--add", "--global", "core.excludesfile", globalGitIgnorePath], { windowsVerbatimArguments: true }); - } -} async function setupCygwin() { await lib_core.group("Setting up Cygwin environment", async () => { - await setGitToIgnoreCygwinLocalPackageDirectory(); const version = await cygwinVersion; const cachedPath = tool_cache.find("cygwin", version, "x86_64"); if (cachedPath === "") { @@ -165871,6 +165839,7 @@ async function setupCygwin() { "--quiet-mode", "--symlink-type=sys", "--upgrade-also", + `--local-package-dir=${CYGWIN_LOCAL_PACKAGE_DIR}`, `--packages=${packages}`, `--root=${CYGWIN_ROOT}`, `--site=${CYGWIN_MIRROR}`, @@ -165894,7 +165863,7 @@ async function setupCygwin() { async function composeCygwinCacheKeys() { const version = await cygwinVersion; - const key = `${CACHE_PREFIX}-setup-ocaml-cygwin-${CYGWIN_MIRROR_ENCODED_URI}-${version}`; + const key = `${CACHE_PREFIX}-setup-ocaml-cygwin-${version}`; const restoreKeys = [key]; return { key, restoreKeys }; } @@ -165935,12 +165904,7 @@ async function composeOpamCacheKeys() { } function composeCygwinCachePaths() { const cygwinRootSymlinkPath = external_node_path_namespaceObject.posix.join("/cygdrive", "d", "cygwin"); - const cygwinLocalPackageDirectory = external_node_path_namespaceObject.join(GITHUB_WORKSPACE, CYGWIN_MIRROR_ENCODED_URI); - const paths = [ - CYGWIN_ROOT, - cygwinLocalPackageDirectory, - cygwinRootSymlinkPath, - ]; + const paths = [CYGWIN_ROOT, cygwinRootSymlinkPath]; return paths; } function composeDuneCachePaths() { diff --git a/dist/post/index.js b/dist/post/index.js index e5728ed7..6f4f4767 100644 --- a/dist/post/index.js +++ b/dist/post/index.js @@ -111537,10 +111537,10 @@ const constants_PLATFORM = (() => { })(); const CYGWIN_MIRROR = "https://mirrors.kernel.org/sourceware/cygwin/"; const constants_GITHUB_WORKSPACE = external_node_process_.env.GITHUB_WORKSPACE ?? external_node_process_.cwd(); -const constants_CYGWIN_MIRROR_ENCODED_URI = encodeURIComponent(CYGWIN_MIRROR).toLowerCase(); // [HACK] https://github.com/ocaml/setup-ocaml/pull/55 const constants_CYGWIN_ROOT = external_node_path_namespaceObject.join("D:", "cygwin"); const CYGWIN_ROOT_BIN = external_node_path_namespaceObject.join(constants_CYGWIN_ROOT, "bin"); +const CYGWIN_LOCAL_PACKAGE_DIR = external_node_path_namespaceObject.join(constants_CYGWIN_ROOT, "packages"); const CYGWIN_BASH_ENV = external_node_path_namespaceObject.join(constants_CYGWIN_ROOT, "bash_env"); const DUNE_CACHE_ROOT = (() => { const xdgCacheHome = external_node_process_.env.XDG_CACHE_HOME; @@ -111765,7 +111765,7 @@ const version_resolvedCompiler = (async () => { async function composeCygwinCacheKeys() { const version = await cygwinVersion; - const key = `${CACHE_PREFIX}-setup-ocaml-cygwin-${CYGWIN_MIRROR_ENCODED_URI}-${version}`; + const key = `${CACHE_PREFIX}-setup-ocaml-cygwin-${version}`; const restoreKeys = [key]; return { key, restoreKeys }; } @@ -111806,12 +111806,7 @@ async function composeOpamCacheKeys() { } function composeCygwinCachePaths() { const cygwinRootSymlinkPath = path.posix.join("/cygdrive", "d", "cygwin"); - const cygwinLocalPackageDirectory = path.join(GITHUB_WORKSPACE, CYGWIN_MIRROR_ENCODED_URI); - const paths = [ - CYGWIN_ROOT, - cygwinLocalPackageDirectory, - cygwinRootSymlinkPath, - ]; + const paths = [CYGWIN_ROOT, cygwinRootSymlinkPath]; return paths; } function composeDuneCachePaths() { diff --git a/packages/setup-ocaml/src/cache.ts b/packages/setup-ocaml/src/cache.ts index a3be7380..54d01dc9 100644 --- a/packages/setup-ocaml/src/cache.ts +++ b/packages/setup-ocaml/src/cache.ts @@ -9,7 +9,6 @@ import * as system from "systeminformation"; import { ARCHITECTURE, CACHE_PREFIX, - CYGWIN_MIRROR_ENCODED_URI, CYGWIN_ROOT, DUNE_CACHE_ROOT, GITHUB_WORKSPACE, @@ -24,7 +23,7 @@ import { cygwinVersion } from "./windows.js"; async function composeCygwinCacheKeys() { const version = await cygwinVersion; - const key = `${CACHE_PREFIX}-setup-ocaml-cygwin-${CYGWIN_MIRROR_ENCODED_URI}-${version}`; + const key = `${CACHE_PREFIX}-setup-ocaml-cygwin-${version}`; const restoreKeys = [key]; return { key, restoreKeys }; } @@ -68,15 +67,7 @@ async function composeOpamCacheKeys() { function composeCygwinCachePaths() { const cygwinRootSymlinkPath = path.posix.join("/cygdrive", "d", "cygwin"); - const cygwinLocalPackageDirectory = path.join( - GITHUB_WORKSPACE, - CYGWIN_MIRROR_ENCODED_URI, - ); - const paths = [ - CYGWIN_ROOT, - cygwinLocalPackageDirectory, - cygwinRootSymlinkPath, - ]; + const paths = [CYGWIN_ROOT, cygwinRootSymlinkPath]; return paths; } diff --git a/packages/setup-ocaml/src/constants.ts b/packages/setup-ocaml/src/constants.ts index 70786b72..84ba56fb 100644 --- a/packages/setup-ocaml/src/constants.ts +++ b/packages/setup-ocaml/src/constants.ts @@ -58,14 +58,13 @@ export const CYGWIN_MIRROR = "https://mirrors.kernel.org/sourceware/cygwin/"; export const GITHUB_WORKSPACE = process.env.GITHUB_WORKSPACE ?? process.cwd(); -export const CYGWIN_MIRROR_ENCODED_URI = - encodeURIComponent(CYGWIN_MIRROR).toLowerCase(); - // [HACK] https://github.com/ocaml/setup-ocaml/pull/55 export const CYGWIN_ROOT = path.join("D:", "cygwin"); export const CYGWIN_ROOT_BIN = path.join(CYGWIN_ROOT, "bin"); +export const CYGWIN_LOCAL_PACKAGE_DIR = path.join(CYGWIN_ROOT, "packages"); + export const CYGWIN_BASH_ENV = path.join(CYGWIN_ROOT, "bash_env"); export const DUNE_CACHE_ROOT = (() => { diff --git a/packages/setup-ocaml/src/windows.ts b/packages/setup-ocaml/src/windows.ts index cf2242dd..ed3eeb6c 100644 --- a/packages/setup-ocaml/src/windows.ts +++ b/packages/setup-ocaml/src/windows.ts @@ -1,6 +1,3 @@ -import * as fs from "node:fs/promises"; -import * as os from "node:os"; -import * as path from "node:path"; import * as core from "@actions/core"; import { exec } from "@actions/exec"; import { HttpClient } from "@actions/http-client"; @@ -9,8 +6,8 @@ import * as toolCache from "@actions/tool-cache"; import * as cheerio from "cheerio"; import * as semver from "semver"; import { + CYGWIN_LOCAL_PACKAGE_DIR, CYGWIN_MIRROR, - CYGWIN_MIRROR_ENCODED_URI, CYGWIN_ROOT, } from "./constants.js"; @@ -37,40 +34,8 @@ export const cygwinVersion = (async () => { return version; })(); -async function setGitToIgnoreCygwinLocalPackageDirectory() { - const xdgConfigHome = process.env.XDG_CONFIG_HOME; - const homeDir = os.homedir(); - const globalGitConfigDir = xdgConfigHome - ? path.join(xdgConfigHome, "git") - : path.join(homeDir, ".config", "git"); - await fs.mkdir(globalGitConfigDir, { recursive: true }); - const globalGitIgnorePath = path.join(globalGitConfigDir, "ignore"); - try { - await fs.access(globalGitIgnorePath, fs.constants.R_OK); - const contents = await fs.readFile(globalGitIgnorePath, { - encoding: "utf8", - }); - if (!contents.includes(CYGWIN_MIRROR_ENCODED_URI)) { - await fs.appendFile(globalGitIgnorePath, CYGWIN_MIRROR_ENCODED_URI, { - encoding: "utf8", - }); - } - } catch { - await fs.writeFile(globalGitIgnorePath, CYGWIN_MIRROR_ENCODED_URI, { - encoding: "utf8", - }); - } finally { - await exec( - "git", - ["config", "--add", "--global", "core.excludesfile", globalGitIgnorePath], - { windowsVerbatimArguments: true }, - ); - } -} - export async function setupCygwin() { await core.group("Setting up Cygwin environment", async () => { - await setGitToIgnoreCygwinLocalPackageDirectory(); const version = await cygwinVersion; const cachedPath = toolCache.find("cygwin", version, "x86_64"); if (cachedPath === "") { @@ -106,6 +71,7 @@ export async function setupCygwin() { "--quiet-mode", "--symlink-type=sys", "--upgrade-also", + `--local-package-dir=${CYGWIN_LOCAL_PACKAGE_DIR}`, `--packages=${packages}`, `--root=${CYGWIN_ROOT}`, `--site=${CYGWIN_MIRROR}`,