The product lock existed because five repositories had to be pinned to reproduce one product. Four of them are directories now, so a commit of this repository already pins them and there is nothing left for the lock to say about them. What it still records is what the product consumes from outside: the engine submodule, the helpcodes and the dictionary release. CI gains a job per component instead of a reusable workflow that checked out locked commits and rebuilt them. The release workflow no longer stages five sibling checkouts under historical names and no longer carries a second sparse checkout for its own scripts; Prepare-PackageFiles.ps1 already took the source directory names as parameters, so it is told the new ones, plus where the product-wide notice now lives. Two checks the removed cross-repository pins used to provide are replaced in kind: the pages are verified against the engine submodule's web contract in CI rather than by locking UiHtml and Engine together, and the engine bump triage that Server carried moves here and now also says so when a bump leaves the lock behind.
28 lines
1.7 KiB
PowerShell
28 lines
1.7 KiB
PowerShell
param(
|
|
[Parameter(Mandatory = $true)][string]$ServerRoot,
|
|
[Parameter(Mandatory = $true)][string]$HelpcodeRoot,
|
|
[Parameter(Mandatory = $true)][string]$StagingRoot,
|
|
[string]$BuildDir = 'build'
|
|
)
|
|
$ErrorActionPreference = 'Stop'
|
|
$automationRoot = (Resolve-Path (Join-Path $PSScriptRoot '../..')).Path
|
|
$server = (Resolve-Path $ServerRoot).Path
|
|
python (Join-Path $automationRoot 'scripts/product_lock.py') verify-checkout helpcode $HelpcodeRoot
|
|
if ($LASTEXITCODE -ne 0) { throw 'Helpcodes do not match the product lock' }
|
|
python (Join-Path $automationRoot 'scripts/product_lock.py') fetch-dictionaries --staging-root $StagingRoot
|
|
if ($LASTEXITCODE -ne 0) { throw 'Could not provision locked dictionaries' }
|
|
$verified = (Resolve-Path (Join-Path $StagingRoot 'MetasequoiaImeDict/out')).Path
|
|
# Some Windows-only helpers still resolve LOCALAPPDATA; isolate those and the
|
|
# cross-platform engine under the same root so no installed dictionary is used.
|
|
$env:LOCALAPPDATA = Join-Path (Resolve-Path $StagingRoot).Path 'user-local'
|
|
$data = Join-Path $env:LOCALAPPDATA 'metasequoiaime'
|
|
New-Item -ItemType Directory -Force -Path $data | Out-Null
|
|
Copy-Item (Join-Path $verified '*') -Destination $data -Force
|
|
Copy-Item (Join-Path $HelpcodeRoot 'helpcodes') -Destination $data -Recurse -Force
|
|
Copy-Item (Join-Path $server 'assets/tables/*') -Destination $data -Force
|
|
Copy-Item (Join-Path $server 'assets/config/config.toml') -Destination $data -Force
|
|
$env:METASEQUOIA_IME_DATA_DIR = $data
|
|
ctest --test-dir (Join-Path $server $BuildDir) -C Release --output-on-failure --timeout 120
|
|
if ($LASTEXITCODE -ne 0) { throw 'Server integration tests failed for the locked product' }
|
|
& (Join-Path $PSScriptRoot 'probe-server.ps1') -ServerRoot $server -BuildDir $BuildDir
|