From 7a89293d05c7549677f24dbf37025ad89786b278 Mon Sep 17 00:00:00 2001 From: Steve Dower Date: Tue, 10 Nov 2020 00:14:14 +0000 Subject: [PATCH] PEP-101: Improve description of Windows build steps for release (#1710) --- pep-0101.txt | 50 +++++++++++++++++++++----------------------------- 1 file changed, 21 insertions(+), 29 deletions(-) diff --git a/pep-0101.txt b/pep-0101.txt index c34c59a22..c989412ba 100644 --- a/pep-0101.txt +++ b/pep-0101.txt @@ -370,44 +370,36 @@ to perform some manual editing steps. order to create the release. There are things you can do while you wait though, so keep reading until you hit the next STOP. -- The WE builds the Windows helpfile, using (in Doc/):: +- The WE generates and publishes the Windows files using the Azure + Pipelines build scripts in ``.azure-pipelines/windows-release/``, + currently set up at https://dev.azure.com/Python/cpython/_build?definitionId=21. - % make.bat htmlhelp (on Windows) + Note that this build requires a separate VM containing the code signing + certificate. This VM is managed by the WE to ensure only official releases + have access to the certificate. - to create suitable input for HTML Help Workshop in build/htmlhelp. HTML - Help Workshop is then fired up on the created python33.hhp file, finally - resulting in an python33.chm file. + The build process runs in multiple stages, with each stage's output being + available as a downloadable artifact. The stages are: -- The WE then generates Windows installer files for each Windows - target architecture (for Python 3.3, this means x86 and AMD64). + - Compile all variants of binaries (32-bit, 64-bit, debug/release), + including running profile-guided optimization. - - The WE has one checkout tree per target architecture, and builds the - pcbuild.sln project for the appropriate architecture. + - Compile the HTML Help file containing the Python documentation - - PC\\icons.mak must have been run with nmake. + - Codesign all the binaries with the PSF's certificate - - The cmd.exe window in which this is run must have Cygwin/bin in its - path (at least for x86). + - Create packages for python.org, nuget.org, the embeddable distro and + the Windows Store - - The cmd.exe window must have MS compiler tools for the target - architecture in its path (VS 2010 for Python 3.3). + - Perform basic verification of the installers - - The WE then edits Tools/msi/config.py (a file only present locally) - to update full_current_version and sets snapshot to false. Currently - for a release config.py looks like:: + - Upload packages to python.org and nuget.org, purge download caches and + run a test download. - snapshot=0 - full_current_version="3.3.5rc2" - certname="Python Software Foundation - PCBUILD='PCbuild\\amd64' - - The last line is only present for the amd64 checkout. - - - Now the WE runs msi.py with ActivePython or Python with pywin32. - - The WE checksums the files (``*.msi``, ``*.chm``, ``*-pdb.zip``), uploads them to - downloads.nyc1.psf.io together with gpg signature files, and emails you the - location and md5sums. + After the uploads are complete, the WE copies the generated hashes from + the build logs and emails them to the RM. The Windows Store packages are + uploaded manually to https://partner.microsoft.com/dashboard/home by the + WE. - The ME builds Mac installer packages and uploads them to downloads.nyc1.psf.io together with gpg signature files.