-
-
Notifications
You must be signed in to change notification settings - Fork 25
112 lines (87 loc) · 3.58 KB
/
build-windows.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
name: Build Millennium (Windows)
on:
workflow_dispatch:
jobs:
build:
runs-on: windows-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
submodules: true
- name: (Generator) Setup Minimal MSVC
uses: ilammy/msvc-dev-cmd@v1
with:
arch: x86
- name: (Python) Download 3.11.8 win32 source
run: |
# download python 3.11.8 source code
curl -o Python-3.11.8.tgz https://www.python.org/ftp/python/3.11.8/Python-3.11.8.tgz
# extract the tarball
tar -xzvf Python-3.11.8.tgz >nul 2>&1
# enter the source directory
cd Python-3.11.8
# specify multithreaded runtime library, to exlude the need of MSVS runtime 140
- name: (Python) Stage Python 3.11.8 static build
run: |
cd Python-3.11.8
$vcxprojPath = "PCbuild/pythoncore.vcxproj"
$content = Get-Content $vcxprojPath -Raw # Read the entire content as a single string
Write-Output "Original Content:"
Write-Output $content
$pattern = '</ClCompile>'
$replacement = @"
<RuntimeLibrary Condition="'`$(Configuration)|`$(Platform)'=='Release|Win32'">MultiThreaded</RuntimeLibrary>
<RuntimeLibrary Condition="'`$(Configuration)|`$(Platform)'=='Debug|Win32'">MultiThreadedDebug</RuntimeLibrary>
</ClCompile>
"@
$modifiedContent = $content -replace [regex]::Escape($pattern), $replacement
Write-Output "`nModified Content:"
Write-Output $modifiedContent
$modifiedContent | Set-Content $vcxprojPath
shell: pwsh
- name: (Python) Build 3.11.8
run: |
cd Python-3.11.8
# get python external libs before build
./PCbuild/get_externals.bat
# build python 3.11.8 as win32 and release
msbuild PCBuild/pcbuild.sln /p:Configuration=Release /p:Platform=Win32 /p:RuntimeLibrary=MT
# verify python is installed
PCbuild\win32\python.exe --version
- name: (Generator) Integrate VS2022
uses: microsoft/setup-msbuild@v2
with:
vs-version: '17'
- name: (Generator) Install CMake
uses: jwlawson/actions-setup-cmake@v2
with:
cmake-version: '3.21.1'
- name: (Dependency) Install vcpkg
run: |
# clone vcpkg to
git clone https://github.com/microsoft/vcpkg.git
cd vcpkg
# bootstrap and install vcpkg
.\bootstrap-vcpkg.bat
.\vcpkg integrate install
shell: pwsh
- name: (Generator) Configure CMake
run: |
# set vs variables for cache generation
"C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat"
# generate cache for x86/win32 with vs
# - actions-windows-x86 @ CMakeUserPresets.json
# - GITHUB_ACTION_BUILD (boolean) is a macro to help set include paths in CMakeLists.txt
cmake --preset=actions-windows-x86 -G "Visual Studio 17 2022" -A Win32 -DGITHUB_ACTION_BUILD=ON
- name: Build Millennium
run: |
# build millennium with msvc; x86; release
cmake --build build --config Release
# Move the python311.dll binary to the release directory
move D:\a\Millennium\Millennium\Python-3.11.8\PCbuild\win32\python311.dll D:\a\Millennium\Millennium\build\Release\python311.dll
- name: Upload Build Artifact
uses: actions/upload-artifact@v4
with:
name: millennium
path: D:/a/Millennium/Millennium/build/Release