1parameters: 2 ARM64TclTk: true 3 4steps: 5 - template: ./checkout.yml 6 7 - powershell: | 8 $d = (.\PCbuild\build.bat -V) | %{ if($_ -match '\s+(\w+):\s*(.+)\s*$') { @{$Matches[1] = $Matches[2];} }}; 9 Write-Host "##vso[task.setvariable variable=SigningDescription]Python $($d.PythonVersion)" 10 displayName: 'Update signing description' 11 condition: and(succeeded(), not(variables['SigningDescription'])) 12 13 - task: DownloadPipelineArtifact@1 14 displayName: 'Download artifact: doc' 15 inputs: 16 artifactName: doc 17 targetPath: $(Build.BinariesDirectory)\doc 18 19 - task: CopyFiles@2 20 displayName: 'Merge documentation files' 21 inputs: 22 sourceFolder: $(Build.BinariesDirectory)\doc 23 targetFolder: $(Build.SourcesDirectory)\Doc\build 24 25 - task: DownloadPipelineArtifact@1 26 displayName: 'Download artifact: bin_win32' 27 inputs: 28 artifactName: bin_win32 29 targetPath: $(Build.BinariesDirectory)\win32 30 31 - task: DownloadPipelineArtifact@1 32 displayName: 'Download artifact: bin_win32_d' 33 inputs: 34 artifactName: bin_win32_d 35 targetPath: $(Build.BinariesDirectory)\win32 36 37 - task: DownloadPipelineArtifact@1 38 displayName: 'Download artifact: bin_amd64' 39 inputs: 40 artifactName: bin_amd64 41 targetPath: $(Build.BinariesDirectory)\amd64 42 43 - task: DownloadPipelineArtifact@1 44 displayName: 'Download artifact: bin_amd64_d' 45 inputs: 46 artifactName: bin_amd64_d 47 targetPath: $(Build.BinariesDirectory)\amd64 48 49 - task: DownloadPipelineArtifact@1 50 displayName: 'Download artifact: bin_arm64' 51 condition: and(succeeded(), eq(variables['PublishARM64'], 'true')) 52 inputs: 53 artifactName: bin_arm64 54 targetPath: $(Build.BinariesDirectory)\arm64 55 56 - task: DownloadPipelineArtifact@1 57 displayName: 'Download artifact: bin_arm64_d' 58 condition: and(succeeded(), eq(variables['PublishARM64'], 'true')) 59 inputs: 60 artifactName: bin_arm64_d 61 targetPath: $(Build.BinariesDirectory)\arm64 62 63 - task: DownloadPipelineArtifact@1 64 displayName: 'Download artifact: tcltk_lib_win32' 65 inputs: 66 artifactName: tcltk_lib_win32 67 targetPath: $(Build.BinariesDirectory)\tcltk_lib_win32 68 69 - task: DownloadPipelineArtifact@1 70 displayName: 'Download artifact: tcltk_lib_amd64' 71 inputs: 72 artifactName: tcltk_lib_amd64 73 targetPath: $(Build.BinariesDirectory)\tcltk_lib_amd64 74 75 - ${{ if eq(parameters.ARM64TclTk, true) }}: 76 - task: DownloadPipelineArtifact@1 77 displayName: 'Download artifact: tcltk_lib_arm64' 78 condition: and(succeeded(), eq(variables['PublishARM64'], 'true')) 79 inputs: 80 artifactName: tcltk_lib_arm64 81 targetPath: $(Build.BinariesDirectory)\tcltk_lib_arm64 82 83 - powershell: | 84 copy $(Build.BinariesDirectory)\amd64\Activate.ps1 Lib\venv\scripts\common\Activate.ps1 -Force 85 displayName: 'Copy signed files into sources' 86 condition: and(succeeded(), variables['SigningCertificate']) 87 88 - script: | 89 call Tools\msi\get_externals.bat 90 call PCbuild\find_python.bat 91 echo ##vso[task.setvariable variable=PYTHON]%PYTHON% 92 call PCbuild/find_msbuild.bat 93 echo ##vso[task.setvariable variable=MSBUILD]%MSBUILD% 94 displayName: 'Get external dependencies' 95 96 - script: | 97 %PYTHON% -m pip install blurb 98 %PYTHON% -m blurb merge -f Misc\NEWS 99 displayName: 'Merge NEWS file' 100 101 - script: | 102 %MSBUILD% Tools\msi\launcher\launcher.wixproj 103 displayName: 'Build launcher installer' 104 env: 105 Platform: x86 106 Py_OutDir: $(Build.BinariesDirectory) 107 108 - script: | 109 %MSBUILD% Tools\msi\bundle\releaselocal.wixproj /t:Rebuild /p:RebuildAll=true 110 displayName: 'Build win32 installer' 111 env: 112 Platform: x86 113 Py_OutDir: $(Build.BinariesDirectory) 114 PYTHON: $(Build.BinariesDirectory)\win32\python.exe 115 PythonForBuild: $(Build.BinariesDirectory)\win32\python.exe 116 PYTHONHOME: $(Build.SourcesDirectory) 117 TclTkLibraryDir: $(Build.BinariesDirectory)\tcltk_lib_win32 118 BuildForRelease: true 119 120 - script: | 121 %MSBUILD% Tools\msi\bundle\releaselocal.wixproj /t:Rebuild /p:RebuildAll=true 122 displayName: 'Build amd64 installer' 123 env: 124 Platform: x64 125 Py_OutDir: $(Build.BinariesDirectory) 126 PYTHON: $(Build.BinariesDirectory)\amd64\python.exe 127 PythonForBuild: $(Build.BinariesDirectory)\amd64\python.exe 128 PYTHONHOME: $(Build.SourcesDirectory) 129 TclTkLibraryDir: $(Build.BinariesDirectory)\tcltk_lib_amd64 130 BuildForRelease: true 131 132 - script: | 133 %MSBUILD% Tools\msi\bundle\releaselocal.wixproj /t:Rebuild /p:RebuildAll=true 134 displayName: 'Build arm64 installer' 135 condition: and(succeeded(), eq(variables['PublishARM64'], 'true')) 136 env: 137 Platform: ARM64 138 Py_OutDir: $(Build.BinariesDirectory) 139 PYTHON: $(Build.BinariesDirectory)\win32\python.exe 140 PythonForBuild: $(Build.BinariesDirectory)\win32\python.exe 141 PYTHONHOME: $(Build.SourcesDirectory) 142 BuildForRelease: true 143 ${{ if eq(parameters.ARM64TclTk, true) }}: 144 TclTkLibraryDir: $(Build.BinariesDirectory)\tcltk_lib_arm64 145 146 - task: CopyFiles@2 147 displayName: 'Assemble artifact: msi (win32)' 148 inputs: 149 sourceFolder: $(Build.BinariesDirectory)\win32\en-us 150 targetFolder: $(Build.ArtifactStagingDirectory)\msi\win32 151 contents: | 152 *.msi 153 *.cab 154 *.exe 155 156 - task: CopyFiles@2 157 displayName: 'Assemble artifact: msi (amd64)' 158 inputs: 159 sourceFolder: $(Build.BinariesDirectory)\amd64\en-us 160 targetFolder: $(Build.ArtifactStagingDirectory)\msi\amd64 161 contents: | 162 *.msi 163 *.cab 164 *.exe 165 166 - task: CopyFiles@2 167 displayName: 'Assemble artifact: msi (arm64)' 168 condition: and(succeeded(), eq(variables['PublishARM64'], 'true')) 169 inputs: 170 sourceFolder: $(Build.BinariesDirectory)\arm64\en-us 171 targetFolder: $(Build.ArtifactStagingDirectory)\msi\arm64 172 contents: | 173 *.msi 174 *.cab 175 *.exe 176 177 - task: PublishPipelineArtifact@0 178 displayName: 'Publish MSI' 179 inputs: 180 targetPath: '$(Build.ArtifactStagingDirectory)\msi' 181 artifactName: msi 182