🔧 Fix automated builds

This commit is contained in:
bitcookies
2026-04-06 10:49:59 +08:00
parent 49209b47b2
commit 3d2b0aa202
3 changed files with 117 additions and 23 deletions
+111 -19
View File
@@ -1,20 +1,39 @@
name: Build All Platforms name: Build All Platforms
env:
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
on: on:
workflow_dispatch: 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: jobs:
# --- Windows builds (MSBuild + vcpkg) --- # --- Windows x64 build (MSBuild + vcpkg) ---
windows: windows-x64:
strategy: if: ${{ inputs.windows_x64 }}
matrix: name: Windows x64
include:
- platform: x64
artifact: winrar-keygen-x64
- platform: Win32
artifact: winrar-keygen-x86
- platform: ARM64
artifact: winrar-keygen-arm64
name: Windows ${{ matrix.platform }}
runs-on: windows-latest runs-on: windows-latest
steps: steps:
- uses: actions/checkout@v6.0.2 - uses: actions/checkout@v6.0.2
@@ -22,29 +41,100 @@ jobs:
- name: Setup vcpkg - name: Setup vcpkg
uses: lukka/run-vcpkg@v11 uses: lukka/run-vcpkg@v11
with: with:
vcpkgGitCommitId: 'a34c873a9717a888f58dc05268dea15592c2f0ff' vcpkgGitCommitId: 'c3867e714dd3a51c272826eea77267876517ed99'
- name: Integrate vcpkg
run: vcpkg integrate install
- name: Setup MSBuild - name: Setup MSBuild
uses: microsoft/setup-msbuild@v2 uses: microsoft/setup-msbuild@v2
- name: Build - name: Build
run: | run: |
msbuild winrar-keygen.sln /p:Configuration=Release /p:Platform=${{ matrix.platform }} /p:VcpkgEnableManifest=true msbuild winrar-keygen.vcxproj /p:Configuration=Release /p:Platform=x64 /p:VcpkgEnableManifest=true
- name: Prepare artifact - name: Prepare artifact
shell: pwsh shell: pwsh
run: | run: |
$src = "bin/${{ matrix.platform }}-Release/winrar-keygen.exe" Copy-Item "bin/x64-Release/winrar-keygen.exe" "winrar-keygen-x64.exe"
Copy-Item $src "${{ matrix.artifact }}.exe"
- name: Upload artifact - name: Upload artifact
uses: actions/upload-artifact@v6.0.0 uses: actions/upload-artifact@v6.0.0
with: with:
name: ${{ matrix.artifact }} name: winrar-keygen-x64
path: ${{ matrix.artifact }}.exe path: winrar-keygen-x64.exe
# --- Windows x86 build (MSBuild + vcpkg) ---
windows-x86:
if: ${{ inputs.windows_x86 }}
name: Windows x86
runs-on: windows-latest
steps:
- uses: actions/checkout@v6.0.2
- name: Setup vcpkg
uses: lukka/run-vcpkg@v11
with:
vcpkgGitCommitId: 'c3867e714dd3a51c272826eea77267876517ed99'
- name: Integrate vcpkg
run: vcpkg integrate install
- name: Setup MSBuild
uses: microsoft/setup-msbuild@v2
- name: Build
run: |
msbuild winrar-keygen.vcxproj /p:Configuration=Release /p:Platform=Win32 /p:VcpkgEnableManifest=true
- 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@v6.0.0
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-latest
steps:
- uses: actions/checkout@v6.0.2
- name: Setup vcpkg
uses: lukka/run-vcpkg@v11
with:
vcpkgGitCommitId: 'c3867e714dd3a51c272826eea77267876517ed99'
- name: Integrate vcpkg
run: vcpkg integrate install
- name: Setup MSBuild
uses: microsoft/setup-msbuild@v2
- name: Build
run: |
msbuild winrar-keygen.vcxproj /p:Configuration=Release /p:Platform=ARM64 /p:VcpkgEnableManifest=true
- 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@v6.0.0
with:
name: winrar-keygen-arm64
path: winrar-keygen-arm64.exe
# --- Linux x64 build (CMake) --- # --- Linux x64 build (CMake) ---
linux-x64: linux-x64:
if: ${{ inputs.linux_x64 }}
name: Linux x64 name: Linux x64
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
@@ -74,6 +164,7 @@ jobs:
# --- Linux ARM64 build (native runner) --- # --- Linux ARM64 build (native runner) ---
linux-arm64: linux-arm64:
if: ${{ inputs.linux_arm64 }}
name: Linux ARM64 name: Linux ARM64
runs-on: ubuntu-24.04-arm runs-on: ubuntu-24.04-arm
steps: steps:
@@ -103,13 +194,14 @@ jobs:
# --- macOS ARM64 build (CMake) --- # --- macOS ARM64 build (CMake) ---
macos: macos:
if: ${{ inputs.macos_arm64 }}
name: macOS ARM64 name: macOS ARM64
runs-on: macos-latest runs-on: macos-latest
steps: steps:
- uses: actions/checkout@v6.0.2 - uses: actions/checkout@v6.0.2
- name: Install dependencies - name: Install dependencies
run: brew install gmp run: brew list gmp &>/dev/null || brew install gmp
- name: Build - name: Build
run: | run: |
+4 -4
View File
@@ -51,7 +51,7 @@ public:
__FieldTraits::Load(_Val, pbBuffer, cbBuffer); __FieldTraits::Load(_Val, pbBuffer, cbBuffer);
} }
template<typename __Dummy = std::enable_if<BitSizeValue <= sizeof(uintptr_t) * 8>::type> template<bool _Cond = (BitSizeValue <= sizeof(uintptr_t) * 8), std::enable_if_t<_Cond, int> = 0>
GaloisField(GaloisFieldInitByDump, uintptr_t SerializedValue) { GaloisField(GaloisFieldInitByDump, uintptr_t SerializedValue) {
__FieldTraits::Load(_Val, SerializedValue); __FieldTraits::Load(_Val, SerializedValue);
} }
@@ -62,7 +62,7 @@ public:
return *this; return *this;
} }
template<typename __Dummy = std::enable_if<BitSizeValue <= sizeof(uintptr_t) * 8>::type> template<bool _Cond = (BitSizeValue <= sizeof(uintptr_t) * 8), std::enable_if_t<_Cond, int> = 0>
GaloisField<__FieldTraits>& operator=(uintptr_t SerializedValue) { GaloisField<__FieldTraits>& operator=(uintptr_t SerializedValue) {
__FieldTraits::Load(_Val, SerializedValue); __FieldTraits::Load(_Val, SerializedValue);
return *this; return *this;
@@ -194,7 +194,7 @@ public:
return Result; return Result;
} }
template<typename __Dummy = std::enable_if<BitSizeValue <= sizeof(uintptr_t) * 8>::type> template<bool _Cond = (BitSizeValue <= sizeof(uintptr_t) * 8), std::enable_if_t<_Cond, int> = 0>
uintptr_t Dump() const noexcept { uintptr_t Dump() const noexcept {
return __FieldTraits::Dump(_Val); return __FieldTraits::Dump(_Val);
} }
@@ -207,7 +207,7 @@ public:
return __FieldTraits::Dump(_Val); return __FieldTraits::Dump(_Val);
} }
template<typename __Dummy = std::enable_if<BitSizeValue <= sizeof(uintptr_t) * 8>::type> template<bool _Cond = (BitSizeValue <= sizeof(uintptr_t) * 8), std::enable_if_t<_Cond, int> = 0>
GaloisField<__FieldTraits>& Load(uintptr_t SerializedValue) { GaloisField<__FieldTraits>& Load(uintptr_t SerializedValue) {
__FieldTraits::Load(_Val, SerializedValue); __FieldTraits::Load(_Val, SerializedValue);
return *this; return *this;
+2
View File
@@ -149,6 +149,7 @@
<Link> <Link>
<SubSystem>Console</SubSystem> <SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
@@ -184,6 +185,7 @@
<EnableCOMDATFolding>true</EnableCOMDATFolding> <EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences> <OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">