diff --git a/.github/ci-windows-cross.py b/.github/ci-windows-cross.py index 5382b5b6105..4327d10ca60 100755 --- a/.github/ci-windows-cross.py +++ b/.github/ci-windows-cross.py @@ -24,16 +24,47 @@ def print_version(): run([str(bitcoind), "-version"]) +def check_manifests(): + release_dir = Path.cwd() / "bin" + manifest_path = release_dir / "bitcoind.manifest" + + cmd_bitcoind_manifest = [ + "mt.exe", + "-nologo", + f"-inputresource:{release_dir / 'bitcoind.exe'}", + f"-out:{manifest_path}", + ] + run(cmd_bitcoind_manifest) + print(manifest_path.read_text()) + + skipped = { # Skip as they currently do not have manifests + "fuzz.exe", + "bench_bitcoin.exe", + "test_kernel.exe", + } + for entry in release_dir.iterdir(): + if entry.suffix.lower() != ".exe": + continue + if entry.name in skipped: + print(f"Skipping {entry.name} (no manifest present)") + continue + print(f"Checking {entry.name}") + run(["mt.exe", "-nologo", f"-inputresource:{entry}", "-validate_manifest"]) + + def main(): parser = argparse.ArgumentParser(description="Utility to run Windows CI steps.") steps = [ "print_version", + "check_manifests", ] parser.add_argument("step", choices=steps, help="CI step to perform.") args = parser.parse_args() if args.step == "print_version": print_version() + elif args.step == "check_manifests": + check_manifests() if __name__ == "__main__": diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c6ac3472e71..9efdb3c31c0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -412,23 +412,7 @@ jobs: - *SET_UP_VS - name: Check executable manifests - shell: pwsh -Command "$PSVersionTable; $PSNativeCommandUseErrorActionPreference = $true; $ErrorActionPreference = 'Stop'; & '{0}'" - run: | - mt.exe -nologo -inputresource:bin\bitcoind.exe -out:bitcoind.manifest - Get-Content bitcoind.manifest - - Get-ChildItem -Filter "bin\*.exe" | ForEach-Object { - $exeName = $_.Name - - # Skip as they currently do not have manifests - if ($exeName -eq "fuzz.exe" -or $exeName -eq "bench_bitcoin.exe" -or $exeName -eq "test_kernel.exe") { - Write-Host "Skipping $exeName (no manifest present)" - return - } - - Write-Host "Checking $exeName" - & mt.exe -nologo -inputresource:$_.FullName -validate_manifest - } + run: py -3 .github/ci-windows-cross.py check_manifests - name: Run unit tests # Can't use ctest here like other jobs as we don't have a CMake build tree.