Skip to content

Windows-build-CI

Windows-build-CI #142

Workflow file for this run

name: Windows-build-CI
on:
workflow_dispatch:
inputs:
branch:
description: 'The branch to build'
required: true
default: '3.12'
tag_short_version:
description: 'The short version of cpython upstream, eg: use 3.12.0 instead of v3.12.0'
required: true
default: '3.12.0'
jobs:
build:
env:
APP_NAME: windows-python-installer
runs-on: windows-latest
steps:
- name: Checkout repository and submodules
uses: actions/checkout@v3
with:
submodules: recursive
ref: ${{ github.event.inputs.branch }}
- name: Install winget
uses: Cyberboss/install-winget@v1
- name: Install Microsoft.VisualStudio.Component.VC.140
run: |
# Try to fix: C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\VC\v170\Microsoft.CppBuild.targets(456,5): error MSB8020: The build tools for Visual Studio 2015 (Platform Toolset = 'v140') cannot be found. To build using the v140 build tools, please install Visual Studio 2015 build tools. Alternatively, you may upgrade to the current Visual Studio tools by selecting the Project menu or right-click the solution, and then selecting "Retarget solution". [D:\a\windows-python-installer\windows-python-installer\cpython\Tools\msi\bundle\bootstrap\pythonba.vcxproj]
# https://learn.microsoft.com/en-us/visualstudio/install/workload-component-id-vs-build-tools?view=vs-2022
# https://learn.microsoft.com/en-us/visualstudio/install/use-command-line-parameters-to-install-visual-studio?view=vs-2022#use-winget-to-install-or-modify-visual-studio
# https://github.com/MicrosoftDocs/visualstudio-docs/blob/main/docs/install/use-command-line-parameters-to-install-visual-studio.md
winget install --accept-source-agreements --accept-package-agreements --force --id Microsoft.VisualStudio.2022.Enterprise --override "--quiet --add Microsoft.VisualStudio.Component.VC.140"
# https://winstall.app/apps/Microsoft.VisualStudio.2019.BuildTools
# winget install --id=Microsoft.VisualStudio.2019.BuildTools -e
- name: 'Checkout and push specified tag version of cpython'
run: |
git status
git config --global pull.rebase false
git config --global user.name "github-actions[bot]"
git config --global user.email "github-actions[bot]@users.noreply.github.com"
cd cpython
git remote -v
git fetch --all --tags
git checkout tags/v${{ github.event.inputs.tag_short_version }}
git status
cd ..
git add cpython
git commit -m "update python to ${{ github.event.inputs.tag_short_version }}"
git tag ${{ github.event.inputs.tag_short_version }}
git push
git push --tag
- name: Install HTML Help Workshop as hhc.exe is need when build chm
run: |
rem unzip resources/html_help_workshop.zip
resources\htmlhelp.exe /T:%cd%\html_help_workshop /C /Q
echo %cd%\html_help_workshop>> %GITHUB_PATH%
shell: cmd
- name: Testing ${{ github.event.inputs.tag_short_version }}...
run: |
echo %PATH%
where hh hhc
echo GITHUB_REF_NAME: %GITHUB_REF_NAME%
echo github.event.inputs.tag_short_version: ${{ github.event.inputs.tag_short_version }}
shell: cmd
- uses: actions/setup-python@v4
with:
python-version: '3.10'
- name: Download source code of dependencies (OpenSSL, Tk, etc.)
run: |
call PCbuild/get_externals.bat
call Tools/msi/get_externals.bat
working-directory: cpython
shell: cmd
- name: Apply patches ...
run: |
git apply ../patches/layout.html.patch
git apply ../patches/PythonBootstrapperApplication.cpp.patch
git apply ../patches/exe_files.wxs.patch
git apply ../patches/posixmodule.c.patch
git apply ../patches/_winapi.c.patch
git status
git diff
working-directory: cpython
- name: Copy api-ms-win-core-path-l1-1-0.dll to cpython/PCbuild/{win32,amd64}/
run: |
unzip resources/api-ms-win-core-path-blender-0.3.1.zip
mkdir -p cpython/PCbuild/{win32,amd64}
cp api-ms-win-core-path-blender/x86/api-ms-win-core-path-l1-1-0.dll cpython/PCbuild/win32/
cp api-ms-win-core-path-blender/x64/api-ms-win-core-path-l1-1-0.dll cpython/PCbuild/amd64/
shell: bash
- name: Building ...
run: |
rem -b -> Incrementally build Python rather than rebuilding
rem -D -> Do not build documentation
rem --skip-pgo -> Build x64 installers without using PGO
rem documentation is shared by all platforms, so we need to build it only once
call Tools\msi\buildrelease.bat -x86 -b
call Tools\msi\buildrelease.bat -x64 -b -D
rem build chm docs
rem see https://github.com/python/cpython/pull/32038
call Doc\make.bat htmlhelp
working-directory: cpython
shell: cmd
- name: Checking files ...
run: |
ls -l Doc/build/htmlhelp/ Doc/build/html/ PCbuild/win32/en-us/ PCbuild/amd64/en-us/ || true
working-directory: cpython
shell: bash
- uses: xresloader/upload-to-github-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ github.event.inputs.tag_short_version }}
file: |-
cpython/Doc/build/htmlhelp/python*.chm;
cpython/PCbuild/win32/en-us/python-${{ github.event.inputs.tag_short_version }}-embed-win32.zip;
cpython/PCbuild/win32/en-us/python-${{ github.event.inputs.tag_short_version }}.exe;
cpython/PCbuild/win32/en-us/python*.nupkg;
cpython/PCbuild/amd64/en-us/python-${{ github.event.inputs.tag_short_version }}-embed-amd64.zip;
cpython/PCbuild/amd64/en-us/python-${{ github.event.inputs.tag_short_version }}-amd64.exe;
cpython/PCbuild/amd64/en-us/python*.nupkg;
tags: true
draft: false
overwrite: true