mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-09-20 23:42:54 +00:00
Move check_profile's downloads to a per-user cache outside the repo
The validator, fixture archives and unpacked fixture trees no longer live under <repo>/.test/check_profiles, so every worktree on a machine shares one copy instead of re-downloading. macOS, Linux and Windows each use their own user cache dir, named apart from OrcaSlicer's per-user dirs. The now-unused /.test/ ignore rule is dropped.
This commit is contained in:
@@ -91,7 +91,8 @@ Paths below are relative to this skill. Commands run from the repository root.
|
||||
```
|
||||
|
||||
On Windows use `py -3` instead of `python3`, and `scripts\check_profile.bat -Vendor "<Vendor>"`
|
||||
/ `scripts\check_profile.bat`. Logs: `.test/check_profiles/logs/<check>.log`.
|
||||
/ `scripts\check_profile.bat`. Logs land in a per-user cache dir (see
|
||||
[validation.md](references/validation.md)).
|
||||
Id checks remain tree-wide under `--vendor`; filament-only bundles skip the default slice check.
|
||||
See [validation.md](references/validation.md) for flags, coverage and error remedies.
|
||||
5. **Verify the changed behavior.** Slice newly added non-default processes explicitly, and
|
||||
|
||||
@@ -20,8 +20,11 @@ default Windows client refuses to run a checked-out `.ps1` at all. The `.ps1` fi
|
||||
probing `py -3`, then `python`, then `python3`; run the tool by hand with `py -3` for the same reason.
|
||||
|
||||
Every check in the run happens even after an earlier one fails; the script exits non-zero if any did, and writes
|
||||
`.test/check_profiles/logs/<check>.log` plus, on failure, `.test/check_profiles/pr_comment.md` — the same
|
||||
report CI posts on the PR. A stale `.test/check_profiles/.lock` after a crash must be removed by hand.
|
||||
`logs/<check>.log` plus, on failure, `pr_comment.md` under a per-user cache dir — the same report CI posts on the PR.
|
||||
That dir is `~/Library/Caches/orca-profile-check` on macOS, `${XDG_CACHE_HOME:-~/.cache}/orca-profile-check` on Linux
|
||||
and `%LOCALAPPDATA%\orca-profile-check` on Windows; it is named apart from OrcaSlicer's own per-user dirs and sits
|
||||
outside the checkout, so every worktree shares one copy. `--work-dir` / `-WorkDir` overrides it. A stale `.lock`
|
||||
there after a crash must be removed by hand.
|
||||
|
||||
## The five checks
|
||||
|
||||
@@ -150,9 +153,10 @@ Two things it therefore does **not** enforce:
|
||||
|
||||
Built from `src/dev-utils/OrcaSlicer_profile_validator.cpp` (`-DORCA_TOOLS=ON`).
|
||||
Both scripts find a local build under `build*/` — `check_profile.sh` tries Release, RelWithDebInfo, then
|
||||
Debug, and `check_profile.ps1` adds MinSizeRel — else they download the nightly into
|
||||
`.test/check_profiles/validator`. Pass `--download` / `-Download` to match CI exactly, since a stale
|
||||
local build is used silently. Windows looks for `OrcaSlicer_profile_validator.exe`.
|
||||
Debug, and `check_profile.ps1` adds MinSizeRel — else they download the nightly into the
|
||||
`validator` subdirectory of the per-user cache dir (see above). Pass `--download` / `-Download` to
|
||||
match CI exactly, since a stale local build is used silently. Windows looks for
|
||||
`OrcaSlicer_profile_validator.exe`.
|
||||
|
||||
If your build lives somewhere else entirely, point at it with `--validator` / `-Validator`, or set
|
||||
`ORCA_PROFILE_VALIDATOR` (`$env:ORCA_PROFILE_VALIDATOR` in PowerShell).
|
||||
|
||||
@@ -52,5 +52,4 @@ internal_docs/
|
||||
__pycache__/
|
||||
*.pyc
|
||||
*.opc
|
||||
/.test/
|
||||
docs/superpowers/
|
||||
@@ -21,8 +21,10 @@
|
||||
normalize and update-index would still rewrite.
|
||||
|
||||
Everything that has to be downloaded - the profile validator and the custom-preset fixture
|
||||
archives - lands under <repo>\.test\check_profiles and is reused on the next run. That
|
||||
directory also holds one log per check plus a copy of the comment CI would post on the PR.
|
||||
archives - lands under a per-user cache directory (%LOCALAPPDATA%\orca-profile-check) and
|
||||
is reused on the next run. Being outside the checkout, that directory is shared by every
|
||||
worktree on the machine. It also holds one log per check plus a copy of the comment CI would
|
||||
post on the PR.
|
||||
|
||||
resources\profiles\user, which the validator creates as its data dir but a CI checkout never
|
||||
has, is moved aside for the duration of the run and restored on exit. Only one run per work
|
||||
@@ -60,8 +62,8 @@
|
||||
Re-download the validator and fixtures instead of using the cache.
|
||||
|
||||
.PARAMETER WorkDir
|
||||
Downloads, logs and fixture trees (default: .test\check_profiles). Point it somewhere short,
|
||||
such as D:\t, if a fixture tree trips Windows' 260-character path limit.
|
||||
Downloads, logs and fixture trees (default: %LOCALAPPDATA%\orca-profile-check). Point it
|
||||
somewhere short, such as D:\t, if a fixture tree trips Windows' 260-character path limit.
|
||||
|
||||
.PARAMETER LogLevel
|
||||
Validator log level (default: 2, as in CI).
|
||||
@@ -212,7 +214,10 @@ if ($Vendor) {
|
||||
$VendorArgs = if ($Vendor) { @('-v', $Vendor) } else { @() }
|
||||
$VendorPyArgs = if ($Vendor) { @('--vendor', $Vendor) } else { @() }
|
||||
|
||||
if (-not $WorkDir) { $WorkDir = Join-Path $RepoRoot '.test\check_profiles' }
|
||||
if (-not $WorkDir) {
|
||||
# Per-user cache dir, so every worktree on the machine shares one set of downloads.
|
||||
$WorkDir = Join-Path ([Environment]::GetFolderPath('LocalApplicationData')) 'orca-profile-check'
|
||||
}
|
||||
$LogDir = Join-Path $WorkDir 'logs'
|
||||
try { New-Item -ItemType Directory -Force -Path $LogDir | Out-Null } catch { Die "cannot create ${LogDir}: $_" }
|
||||
$WorkDir = (Resolve-Path -LiteralPath $WorkDir).Path
|
||||
|
||||
@@ -7,8 +7,9 @@
|
||||
# continue-on-error), then the script exits non-zero once at the end.
|
||||
#
|
||||
# Everything that has to be downloaded - the profile validator and the custom-preset fixture
|
||||
# archives - lands under <repo>/.test/check_profiles/ and is reused on the next run. That
|
||||
# directory also holds one log per check plus a copy of the comment CI would post on the PR.
|
||||
# archives - lands under a per-user cache directory and is reused on the next run. Being outside
|
||||
# the checkout, that directory is shared by every worktree on the machine. It also holds one log
|
||||
# per check plus a copy of the comment CI would post on the PR.
|
||||
#
|
||||
# resources/profiles/user, which the validator creates as its data dir but a CI checkout never
|
||||
# has, is moved aside for the duration of the run and restored on exit. Only one run per work
|
||||
@@ -33,9 +34,20 @@ SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)"
|
||||
REPO_ROOT="$(cd -- "${SCRIPT_DIR}/.." && pwd)"
|
||||
|
||||
HOST_ARCH="$(uname -m)"
|
||||
HOST_OS="$(uname -s)"
|
||||
case "${HOST_OS}" in
|
||||
Darwin*) HOST_OS=Darwin ;;
|
||||
MINGW*|MSYS*|CYGWIN*) HOST_OS=Windows ;;
|
||||
Linux*) HOST_OS=Linux ;;
|
||||
esac
|
||||
|
||||
PROFILES_DIR="${REPO_ROOT}/resources/profiles"
|
||||
WORK_DIR="${REPO_ROOT}/.test/check_profiles"
|
||||
case "${HOST_OS}" in
|
||||
Darwin) DEFAULT_WORK_DIR="${HOME}/Library/Caches/orca-profile-check" ;;
|
||||
Windows) DEFAULT_WORK_DIR="${LOCALAPPDATA:-${HOME}/AppData/Local}/orca-profile-check" ;;
|
||||
*) DEFAULT_WORK_DIR="${XDG_CACHE_HOME:-${HOME}/.cache}/orca-profile-check" ;;
|
||||
esac
|
||||
WORK_DIR="${DEFAULT_WORK_DIR}"
|
||||
VALIDATOR="${ORCA_PROFILE_VALIDATOR:-}"
|
||||
# Vendor to check, named after its <Vendor>.json - empty means every vendor, which is exactly what
|
||||
# both the validator's -v and orca_profile_tool.py check's --vendor take an empty value to mean.
|
||||
@@ -75,7 +87,7 @@ Options:
|
||||
downloaded for this platform
|
||||
--download ignore local builds and use the downloaded nightly validator
|
||||
--refresh re-download the validator and fixtures instead of using the cache
|
||||
--work-dir DIR downloads, logs and fixture trees (default: .test/check_profiles)
|
||||
--work-dir DIR downloads, logs and fixture trees (default: ${DEFAULT_WORK_DIR})
|
||||
-l, --log-level N validator log level (default: ${LOG_LEVEL}, as in CI)
|
||||
-h, --help show this help
|
||||
|
||||
@@ -304,8 +316,8 @@ EOF
|
||||
# holding the signed .app, Windows an .exe.
|
||||
download_validator() {
|
||||
local dest="${WORK_DIR}/validator" binary dmg app mounted app_src
|
||||
case "$(uname -s)" in
|
||||
Linux*)
|
||||
case "${HOST_OS}" in
|
||||
Linux)
|
||||
case "${HOST_ARCH}" in
|
||||
arm64|aarch64) msg "the nightly Linux validator is x86_64; build it locally for ${HOST_ARCH}" ;;
|
||||
esac
|
||||
@@ -313,7 +325,7 @@ download_validator() {
|
||||
fetch "${VALIDATOR_RELEASE_URL}/OrcaSlicer_profile_validator_Linux_Ubuntu2404_nightly" "${binary}" || return 1
|
||||
chmod +x "${binary}" || return 1
|
||||
;;
|
||||
Darwin*)
|
||||
Darwin)
|
||||
dmg="${dest}/OrcaSlicer_profile_validator.dmg"
|
||||
app="${dest}/OrcaSlicer_profile_validator.app"
|
||||
binary="${app}/Contents/MacOS/OrcaSlicer_profile_validator"
|
||||
@@ -332,13 +344,13 @@ download_validator() {
|
||||
[ -x "${binary}" ] || { msg "no validator app inside ${dmg}"; return 1; }
|
||||
fi
|
||||
;;
|
||||
MINGW*|MSYS*|CYGWIN*)
|
||||
Windows)
|
||||
binary="${dest}/OrcaSlicer_profile_validator.exe"
|
||||
fetch "${VALIDATOR_RELEASE_URL}/OrcaSlicer_profile_validator_Windows_nightly.exe" "${binary}" || return 1
|
||||
chmod +x "${binary}" || return 1
|
||||
;;
|
||||
*)
|
||||
msg "no nightly validator published for $(uname -s); build it (-DORCA_TOOLS=ON) and pass --validator"
|
||||
msg "no nightly validator published for ${HOST_OS}; build it (-DORCA_TOOLS=ON) and pass --validator"
|
||||
return 1
|
||||
;;
|
||||
esac
|
||||
|
||||
Reference in New Issue
Block a user