mirror of
https://github.com/Nezumi-2711/winrar-keygen.git
synced 2026-09-22 05:41:48 +00:00
372 lines
14 KiB
YAML
372 lines
14 KiB
YAML
name: Build All Platforms
|
|
env:
|
|
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
|
|
on:
|
|
workflow_dispatch:
|
|
inputs:
|
|
windows_x64:
|
|
description: 'Build Windows x64'
|
|
type: boolean
|
|
default: false
|
|
windows_x86:
|
|
description: 'Build Windows x86'
|
|
type: boolean
|
|
default: false
|
|
windows_arm64:
|
|
description: 'Build Windows ARM64'
|
|
type: boolean
|
|
default: false
|
|
linux_x64:
|
|
description: 'Build Linux x64'
|
|
type: boolean
|
|
default: true
|
|
linux_arm64:
|
|
description: 'Build Linux ARM64'
|
|
type: boolean
|
|
default: true
|
|
macos_arm64:
|
|
description: 'Build macOS ARM64'
|
|
type: boolean
|
|
default: true
|
|
|
|
jobs:
|
|
# --- Windows x64 build (MSBuild + vcpkg) ---
|
|
windows-x64:
|
|
if: ${{ inputs.windows_x64 }}
|
|
name: Windows x64
|
|
runs-on: windows-2025
|
|
steps:
|
|
- uses: actions/checkout@v7.0.0
|
|
|
|
- name: Setup vcpkg
|
|
uses: lukka/run-vcpkg@v11.6
|
|
with:
|
|
vcpkgGitCommitId: '496a397e0e13e5cc6f897f740986a9523f3a282d'
|
|
|
|
- name: Setup MSBuild
|
|
uses: microsoft/setup-msbuild@v3
|
|
with:
|
|
vs-version: '[18.0,19.0)'
|
|
msbuild-architecture: x64
|
|
|
|
- name: Configure vcpkg
|
|
shell: pwsh
|
|
run: |
|
|
$ErrorActionPreference = "Stop"
|
|
"VCPKG_BINARY_SOURCES=clear;default,readwrite" | Out-File -FilePath $env:GITHUB_ENV -Append
|
|
|
|
if (-not $env:VCPKG_ROOT) {
|
|
$env:VCPKG_ROOT = Join-Path $env:GITHUB_WORKSPACE "vcpkg"
|
|
}
|
|
"VCPKG_ROOT=$env:VCPKG_ROOT" | Out-File -FilePath $env:GITHUB_ENV -Append
|
|
|
|
$portfile = Join-Path $env:VCPKG_ROOT "ports/gmp/portfile.cmake"
|
|
$content = Get-Content -Path $portfile -Raw
|
|
$content = $content.Replace(
|
|
"https://mirror.msys2.org/msys/x86_64/autoconf2.71-2.71-3-any.pkg.tar.zst",
|
|
"https://repo.msys2.org/msys/x86_64/autoconf2.71-2.71-4-any.pkg.tar.zst"
|
|
)
|
|
$content = $content.Replace(
|
|
"dd312c428b2e19afd00899eb53ea4255794dea4c19d1d6dea2419cb6a54209ea2130d48abbc20af12196b9f628143436f736fbf889809c2c2291be0c69c0e306",
|
|
"c93b791eb55893cbe7c425e764074837355fd165deb7b1775f652c8e25d9d1f0cdd4120ab710d56fb859b7df55c4f971eccda7c112448f60615bff8a2dc81166"
|
|
)
|
|
if ($content -notmatch "autoconf2\.71-2\.71-4") {
|
|
throw "Failed to patch gmp portfile to autoconf2.71-2.71-4"
|
|
}
|
|
Set-Content -Path $portfile -Value $content -NoNewline
|
|
|
|
$downloads = Join-Path $env:VCPKG_ROOT "downloads"
|
|
New-Item -ItemType Directory -Force -Path $downloads | Out-Null
|
|
$archive = Join-Path $downloads "autoconf2.71-2.71-4-any.pkg.tar.zst"
|
|
curl.exe -L --retry 5 --retry-delay 5 -o $archive "https://repo.msys2.org/msys/x86_64/autoconf2.71-2.71-4-any.pkg.tar.zst"
|
|
if ($LASTEXITCODE -ne 0) {
|
|
throw "Failed to download autoconf2.71 package"
|
|
}
|
|
$expected = "c93b791eb55893cbe7c425e764074837355fd165deb7b1775f652c8e25d9d1f0cdd4120ab710d56fb859b7df55c4f971eccda7c112448f60615bff8a2dc81166"
|
|
$actual = (Get-FileHash -Path $archive -Algorithm SHA512).Hash.ToLowerInvariant()
|
|
if ($actual -ne $expected) {
|
|
throw "SHA512 mismatch for autoconf2.71 package: $actual"
|
|
}
|
|
|
|
- name: Install dependencies
|
|
shell: pwsh
|
|
run: |
|
|
vcpkg install --x-wait-for-lock --triplet "x64-windows-static" --vcpkg-root "$env:VCPKG_ROOT\" "--x-manifest-root=$env:GITHUB_WORKSPACE\" "--x-install-root=$env:GITHUB_WORKSPACE\vcpkg_installed\x64-windows-static\"
|
|
if ($LASTEXITCODE -ne 0) {
|
|
exit $LASTEXITCODE
|
|
}
|
|
|
|
- name: Integrate vcpkg
|
|
run: vcpkg integrate install
|
|
|
|
- name: Build
|
|
run: |
|
|
msbuild winrar-keygen.vcxproj /p:Configuration=Release /p:Platform=x64 /p:VcpkgEnableManifest=true /p:VcpkgManifestInstall=false
|
|
|
|
- name: Prepare artifact
|
|
shell: pwsh
|
|
run: |
|
|
Copy-Item "bin/x64-Release/winrar-keygen.exe" "winrar-keygen-x64.exe"
|
|
|
|
- name: Upload artifact
|
|
uses: actions/upload-artifact@v7.0.1
|
|
with:
|
|
name: winrar-keygen-x64
|
|
path: winrar-keygen-x64.exe
|
|
|
|
# --- Windows x86 build (MSBuild + vcpkg) ---
|
|
windows-x86:
|
|
if: ${{ inputs.windows_x86 }}
|
|
name: Windows x86
|
|
runs-on: windows-2025
|
|
steps:
|
|
- uses: actions/checkout@v7.0.0
|
|
|
|
- name: Setup vcpkg
|
|
uses: lukka/run-vcpkg@v11.6
|
|
with:
|
|
vcpkgGitCommitId: '496a397e0e13e5cc6f897f740986a9523f3a282d'
|
|
|
|
- name: Setup MSBuild
|
|
uses: microsoft/setup-msbuild@v3
|
|
with:
|
|
vs-version: '[18.0,19.0)'
|
|
msbuild-architecture: x64
|
|
|
|
- name: Configure vcpkg
|
|
shell: pwsh
|
|
run: |
|
|
$ErrorActionPreference = "Stop"
|
|
"VCPKG_BINARY_SOURCES=clear;default,readwrite" | Out-File -FilePath $env:GITHUB_ENV -Append
|
|
|
|
if (-not $env:VCPKG_ROOT) {
|
|
$env:VCPKG_ROOT = Join-Path $env:GITHUB_WORKSPACE "vcpkg"
|
|
}
|
|
"VCPKG_ROOT=$env:VCPKG_ROOT" | Out-File -FilePath $env:GITHUB_ENV -Append
|
|
|
|
$portfile = Join-Path $env:VCPKG_ROOT "ports/gmp/portfile.cmake"
|
|
$content = Get-Content -Path $portfile -Raw
|
|
$content = $content.Replace(
|
|
"https://mirror.msys2.org/msys/x86_64/autoconf2.71-2.71-3-any.pkg.tar.zst",
|
|
"https://repo.msys2.org/msys/x86_64/autoconf2.71-2.71-4-any.pkg.tar.zst"
|
|
)
|
|
$content = $content.Replace(
|
|
"dd312c428b2e19afd00899eb53ea4255794dea4c19d1d6dea2419cb6a54209ea2130d48abbc20af12196b9f628143436f736fbf889809c2c2291be0c69c0e306",
|
|
"c93b791eb55893cbe7c425e764074837355fd165deb7b1775f652c8e25d9d1f0cdd4120ab710d56fb859b7df55c4f971eccda7c112448f60615bff8a2dc81166"
|
|
)
|
|
if ($content -notmatch "autoconf2\.71-2\.71-4") {
|
|
throw "Failed to patch gmp portfile to autoconf2.71-2.71-4"
|
|
}
|
|
Set-Content -Path $portfile -Value $content -NoNewline
|
|
|
|
$downloads = Join-Path $env:VCPKG_ROOT "downloads"
|
|
New-Item -ItemType Directory -Force -Path $downloads | Out-Null
|
|
$archive = Join-Path $downloads "autoconf2.71-2.71-4-any.pkg.tar.zst"
|
|
curl.exe -L --retry 5 --retry-delay 5 -o $archive "https://repo.msys2.org/msys/x86_64/autoconf2.71-2.71-4-any.pkg.tar.zst"
|
|
if ($LASTEXITCODE -ne 0) {
|
|
throw "Failed to download autoconf2.71 package"
|
|
}
|
|
$expected = "c93b791eb55893cbe7c425e764074837355fd165deb7b1775f652c8e25d9d1f0cdd4120ab710d56fb859b7df55c4f971eccda7c112448f60615bff8a2dc81166"
|
|
$actual = (Get-FileHash -Path $archive -Algorithm SHA512).Hash.ToLowerInvariant()
|
|
if ($actual -ne $expected) {
|
|
throw "SHA512 mismatch for autoconf2.71 package: $actual"
|
|
}
|
|
|
|
- name: Install dependencies
|
|
shell: pwsh
|
|
run: |
|
|
vcpkg install --x-wait-for-lock --triplet "x86-windows-static" --vcpkg-root "$env:VCPKG_ROOT\" "--x-manifest-root=$env:GITHUB_WORKSPACE\" "--x-install-root=$env:GITHUB_WORKSPACE\vcpkg_installed\x86-windows-static\"
|
|
if ($LASTEXITCODE -ne 0) {
|
|
exit $LASTEXITCODE
|
|
}
|
|
|
|
- name: Integrate vcpkg
|
|
run: vcpkg integrate install
|
|
|
|
- name: Build
|
|
run: |
|
|
msbuild winrar-keygen.vcxproj /p:Configuration=Release /p:Platform=Win32 /p:VcpkgEnableManifest=true /p:VcpkgManifestInstall=false
|
|
|
|
- name: Prepare artifact
|
|
shell: pwsh
|
|
run: |
|
|
Copy-Item "bin/Win32-Release/winrar-keygen.exe" "winrar-keygen-x86.exe"
|
|
|
|
- name: Upload artifact
|
|
uses: actions/upload-artifact@v7.0.1
|
|
with:
|
|
name: winrar-keygen-x86
|
|
path: winrar-keygen-x86.exe
|
|
|
|
# --- Windows ARM64 build (MSBuild + vcpkg) ---
|
|
windows-arm64:
|
|
if: ${{ inputs.windows_arm64 }}
|
|
name: Windows ARM64
|
|
runs-on: windows-2025
|
|
steps:
|
|
- uses: actions/checkout@v7.0.0
|
|
|
|
- name: Setup vcpkg
|
|
uses: lukka/run-vcpkg@v11.6
|
|
with:
|
|
vcpkgGitCommitId: '496a397e0e13e5cc6f897f740986a9523f3a282d'
|
|
|
|
- name: Setup MSBuild
|
|
uses: microsoft/setup-msbuild@v3
|
|
with:
|
|
vs-version: '[18.0,19.0)'
|
|
msbuild-architecture: x64
|
|
|
|
- name: Configure vcpkg
|
|
shell: pwsh
|
|
run: |
|
|
$ErrorActionPreference = "Stop"
|
|
"VCPKG_BINARY_SOURCES=clear;default,readwrite" | Out-File -FilePath $env:GITHUB_ENV -Append
|
|
|
|
if (-not $env:VCPKG_ROOT) {
|
|
$env:VCPKG_ROOT = Join-Path $env:GITHUB_WORKSPACE "vcpkg"
|
|
}
|
|
"VCPKG_ROOT=$env:VCPKG_ROOT" | Out-File -FilePath $env:GITHUB_ENV -Append
|
|
|
|
$portfile = Join-Path $env:VCPKG_ROOT "ports/gmp/portfile.cmake"
|
|
$content = Get-Content -Path $portfile -Raw
|
|
$content = $content.Replace(
|
|
"https://mirror.msys2.org/msys/x86_64/autoconf2.71-2.71-3-any.pkg.tar.zst",
|
|
"https://repo.msys2.org/msys/x86_64/autoconf2.71-2.71-4-any.pkg.tar.zst"
|
|
)
|
|
$content = $content.Replace(
|
|
"dd312c428b2e19afd00899eb53ea4255794dea4c19d1d6dea2419cb6a54209ea2130d48abbc20af12196b9f628143436f736fbf889809c2c2291be0c69c0e306",
|
|
"c93b791eb55893cbe7c425e764074837355fd165deb7b1775f652c8e25d9d1f0cdd4120ab710d56fb859b7df55c4f971eccda7c112448f60615bff8a2dc81166"
|
|
)
|
|
if ($content -notmatch "autoconf2\.71-2\.71-4") {
|
|
throw "Failed to patch gmp portfile to autoconf2.71-2.71-4"
|
|
}
|
|
Set-Content -Path $portfile -Value $content -NoNewline
|
|
|
|
$downloads = Join-Path $env:VCPKG_ROOT "downloads"
|
|
New-Item -ItemType Directory -Force -Path $downloads | Out-Null
|
|
$archive = Join-Path $downloads "autoconf2.71-2.71-4-any.pkg.tar.zst"
|
|
curl.exe -L --retry 5 --retry-delay 5 -o $archive "https://repo.msys2.org/msys/x86_64/autoconf2.71-2.71-4-any.pkg.tar.zst"
|
|
if ($LASTEXITCODE -ne 0) {
|
|
throw "Failed to download autoconf2.71 package"
|
|
}
|
|
$expected = "c93b791eb55893cbe7c425e764074837355fd165deb7b1775f652c8e25d9d1f0cdd4120ab710d56fb859b7df55c4f971eccda7c112448f60615bff8a2dc81166"
|
|
$actual = (Get-FileHash -Path $archive -Algorithm SHA512).Hash.ToLowerInvariant()
|
|
if ($actual -ne $expected) {
|
|
throw "SHA512 mismatch for autoconf2.71 package: $actual"
|
|
}
|
|
|
|
- name: Install dependencies
|
|
shell: pwsh
|
|
run: |
|
|
vcpkg install --x-wait-for-lock --triplet "arm64-windows-static" --vcpkg-root "$env:VCPKG_ROOT\" "--x-manifest-root=$env:GITHUB_WORKSPACE\" "--x-install-root=$env:GITHUB_WORKSPACE\vcpkg_installed\arm64-windows-static\"
|
|
if ($LASTEXITCODE -ne 0) {
|
|
exit $LASTEXITCODE
|
|
}
|
|
|
|
- name: Integrate vcpkg
|
|
run: vcpkg integrate install
|
|
|
|
- name: Build
|
|
run: |
|
|
msbuild winrar-keygen.vcxproj /p:Configuration=Release /p:Platform=ARM64 /p:VcpkgEnableManifest=true /p:VcpkgManifestInstall=false
|
|
|
|
- name: Prepare artifact
|
|
shell: pwsh
|
|
run: |
|
|
Copy-Item "bin/ARM64-Release/winrar-keygen.exe" "winrar-keygen-arm64.exe"
|
|
|
|
- name: Upload artifact
|
|
uses: actions/upload-artifact@v7.0.1
|
|
with:
|
|
name: winrar-keygen-arm64
|
|
path: winrar-keygen-arm64.exe
|
|
|
|
# --- Linux x64 build (CMake) ---
|
|
linux-x64:
|
|
if: ${{ inputs.linux_x64 }}
|
|
name: Linux x64
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v7.0.0
|
|
|
|
- name: Install dependencies
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install -y libgmp-dev
|
|
|
|
- name: Build
|
|
run: |
|
|
mkdir build && cd build
|
|
cmake .. -DCMAKE_BUILD_TYPE=Release
|
|
cmake --build . --config Release
|
|
|
|
- name: Prepare artifact
|
|
run: |
|
|
cp build/winrar-keygen winrar-keygen-linux-x64
|
|
chmod +x winrar-keygen-linux-x64
|
|
|
|
- name: Upload artifact
|
|
uses: actions/upload-artifact@v7.0.1
|
|
with:
|
|
name: winrar-keygen-linux-x64
|
|
path: winrar-keygen-linux-x64
|
|
|
|
# --- Linux ARM64 build (native runner) ---
|
|
linux-arm64:
|
|
if: ${{ inputs.linux_arm64 }}
|
|
name: Linux ARM64
|
|
runs-on: ubuntu-24.04-arm
|
|
steps:
|
|
- uses: actions/checkout@v7.0.0
|
|
|
|
- name: Install dependencies
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install -y libgmp-dev
|
|
|
|
- name: Build
|
|
run: |
|
|
mkdir build && cd build
|
|
cmake .. -DCMAKE_BUILD_TYPE=Release
|
|
cmake --build . --config Release
|
|
|
|
- name: Prepare artifact
|
|
run: |
|
|
cp build/winrar-keygen winrar-keygen-linux-arm64
|
|
chmod +x winrar-keygen-linux-arm64
|
|
|
|
- name: Upload artifact
|
|
uses: actions/upload-artifact@v7.0.1
|
|
with:
|
|
name: winrar-keygen-linux-arm64
|
|
path: winrar-keygen-linux-arm64
|
|
|
|
# --- macOS ARM64 build (CMake) ---
|
|
macos:
|
|
if: ${{ inputs.macos_arm64 }}
|
|
name: macOS ARM64
|
|
runs-on: macos-latest
|
|
steps:
|
|
- uses: actions/checkout@v7.0.0
|
|
|
|
- name: Install dependencies
|
|
run: brew list gmp &>/dev/null || brew install gmp
|
|
|
|
- name: Build
|
|
run: |
|
|
mkdir build && cd build
|
|
cmake .. -DCMAKE_BUILD_TYPE=Release
|
|
cmake --build . --config Release
|
|
|
|
- name: Prepare artifact
|
|
run: |
|
|
cp build/winrar-keygen winrar-keygen-macos-arm64
|
|
chmod +x winrar-keygen-macos-arm64
|
|
|
|
- name: Upload artifact
|
|
uses: actions/upload-artifact@v7.0.1
|
|
with:
|
|
name: winrar-keygen-macos-arm64
|
|
path: winrar-keygen-macos-arm64
|