Compare commits

...

85 Commits

Author SHA1 Message Date
github-actions[bot]
310d6e4aea Update versions-manifest (#255)
Co-authored-by: Service account <no-reply@microsoft.com>
2024-01-19 08:31:57 -06:00
github-actions[bot]
af22c2b8e4 Update versions-manifest (#251)
Co-authored-by: Service account <no-reply@microsoft.com>
2023-12-08 10:03:33 +01:00
github-actions[bot]
e605eda13a Update versions-manifest (#250)
Co-authored-by: Service account <no-reply@microsoft.com>
2023-12-05 17:14:53 +01:00
github-actions[bot]
96dae786ca Update versions-manifest (#249)
Co-authored-by: Service account <no-reply@microsoft.com>
2023-11-23 16:02:00 +01:00
github-actions[bot]
e642abaef8 Update versions-manifest (#248)
Co-authored-by: Service account <no-reply@microsoft.com>
2023-10-16 11:25:28 +02:00
Edgar Ramírez Mondragón
381057ce36 Update modules removed in Python 3.13 (#247) 2023-10-16 10:51:58 +02:00
github-actions[bot]
5da3a44cc2 Update versions-manifest (#244)
Co-authored-by: Service account <no-reply@microsoft.com>
2023-10-03 11:05:53 +02:00
Dmitry Shibanov
3880dd814a add logic with generation hash (#246) 2023-09-22 15:04:14 +02:00
Marko Zivic
ba0b46a6a1 Merge pull request #245 from actions/deprecation-policy
Add Support Notification Policy
2023-09-20 14:01:26 +02:00
Dusan Trickovic
b81fc1cff7 Update README.md and Add Support Notification Policy 2023-09-20 12:53:45 +02:00
github-actions[bot]
f4b33352f0 Update versions-manifest (#243)
Co-authored-by: Service account <no-reply@microsoft.com>
2023-09-19 18:28:50 +02:00
github-actions[bot]
8e2e28992d Update versions-manifest (#242)
Co-authored-by: Service account <no-reply@microsoft.com>
2023-09-06 17:04:12 +02:00
github-actions[bot]
38c560b52f Update versions-manifest (#241)
Co-authored-by: Service account <no-reply@microsoft.com>
2023-08-28 15:43:34 +02:00
github-actions[bot]
3dca5896d3 Update versions-manifest (#240)
Co-authored-by: Service account <no-reply@microsoft.com>
2023-08-07 15:33:08 +02:00
Dmitry Shibanov
1d88a8f21b add apt-get update (#239) 2023-08-07 14:16:32 +02:00
github-actions[bot]
c4456b9062 Update versions-manifest (#238) 2023-07-12 11:47:06 +02:00
github-actions[bot]
9d3aa48b3c Update versions-manifest (#237) 2023-06-23 15:51:47 +02:00
Dmitry Shibanov
c1cf5de988 Fix for python 3.7.17 macOS (#236) 2023-06-23 14:39:13 +02:00
github-actions[bot]
5a451d6492 Update versions-manifest (#235) 2023-06-21 15:16:24 +02:00
github-actions[bot]
87d20c715f Update versions-manifest (#234)
Co-authored-by: Service account <no-reply@microsoft.com>
2023-06-19 12:33:22 +02:00
github-actions[bot]
225ba42747 Update versions-manifest (#232)
Co-authored-by: Service account <no-reply@microsoft.com>
2023-06-09 13:32:30 +02:00
Dmitry Shibanov
ab4e944c0f Add fixes for 3.7.17 (#233) 2023-06-08 15:24:29 +02:00
github-actions[bot]
7693cef346 Update versions-manifest (#228)
Co-authored-by: Service account <no-reply@microsoft.com>
2023-05-25 16:09:27 +02:00
Dmitry Shibanov
c7573bf15e Remove tests for deprecated libraries (#229) 2023-05-24 18:52:49 +02:00
Dmitry Shibanov
80893f523f change regex for creating pr (#227) 2023-05-19 16:11:02 +02:00
Matthieu Darbois
6d04944fbd feat: build macOS arm64 packages (#214) 2023-05-17 13:58:51 +02:00
MaksimZhukov
256e6ddd57 Remove code related to Ubuntu 18.04. (#226) 2023-04-06 10:10:28 +02:00
github-actions[bot]
c6bbc68f56 Update versions-manifest (#225)
Co-authored-by: Service account <no-reply@microsoft.com>
2023-04-06 10:10:11 +02:00
Dmitry Shibanov
b539ede4c3 add root-user-action=ignore and check for .complete file (#223) 2023-03-09 11:18:26 +01:00
github-actions[bot]
e952c806a5 Update versions-manifest (#224)
Co-authored-by: Service account <no-reply@microsoft.com>
2023-03-08 12:24:05 +01:00
github-actions[bot]
ed7a676026 Update versions-manifest (#222)
Co-authored-by: Service account <no-reply@microsoft.com>
2023-03-06 14:21:40 +01:00
github-actions[bot]
b8accc4e9f Update versions-manifest (#221)
Co-authored-by: Service account <no-reply@microsoft.com>
2023-02-08 12:18:54 +01:00
github-actions[bot]
6f472a7a9e Update versions-manifest (#220)
Co-authored-by: Service account <no-reply@microsoft.com>
2023-02-07 15:33:29 +01:00
Dmitry Shibanov
71129be509 Add support for 3.7.3 python version (#219) 2023-02-07 10:39:57 +01:00
Ivan
dfc7050017 Update codeql-analysis workflow to use reusable workflow (#218) 2023-01-19 12:35:21 +01:00
Marko Zivic
eb846d7d39 Merge pull request #217 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 01/11/2023
2023-01-11 09:44:31 +01:00
Service account
e49c162d5a Update versions-manifest 2023-01-11 07:58:25 +00:00
Marko Zivic
ad06198644 Merge pull request #216 from actions/update-code-owners
Update CODEOWNERS
2022-12-27 09:27:18 +01:00
Evgenii Korolevskii
66b48edbf9 Update CODEOWNERS 2022-12-26 09:48:52 +01:00
github-actions[bot]
61e2b82f97 Update versions-manifest (#215)
Co-authored-by: Service account <no-reply@microsoft.com>
2022-12-19 11:41:06 +01:00
Marko Zivic
f99915cae1 Merge pull request #210 from MaksimZhukov/add-support-policy
Add support policy
2022-12-16 09:27:33 +01:00
MaksimZhukov
1fbaf20636 Change wording
Co-authored-by: Brian Cristante <33549821+brcrista@users.noreply.github.com>
2022-12-15 18:38:08 +01:00
MaksimZhukov
a4dd6d4b89 Change wording
Co-authored-by: Brian Cristante <33549821+brcrista@users.noreply.github.com>
2022-12-15 18:38:00 +01:00
MaksimZhukov
80b21460cf Change wording
Co-authored-by: Brian Cristante <33549821+brcrista@users.noreply.github.com>
2022-12-15 18:37:53 +01:00
MaksimZhukov
2e59cc3fa4 Change wording
Co-authored-by: Brian Cristante <33549821+brcrista@users.noreply.github.com>
2022-12-15 18:37:45 +01:00
MaksimZhukov
b7447f0e37 Change wording
Co-authored-by: Brian Cristante <33549821+brcrista@users.noreply.github.com>
2022-12-15 18:37:35 +01:00
Marko Zivic
b558df2c7a Merge pull request #209 from MaksimZhukov/introduce-reusable-workflows
Update workflows to use reusable ones
2022-12-14 09:41:48 +01:00
github-actions[bot]
6dd0b7502a Update versions-manifest (#212)
Co-authored-by: Service account <no-reply@microsoft.com>
2022-12-08 13:24:05 +01:00
github-actions[bot]
01d7e367e6 Update versions-manifest (#211)
Co-authored-by: Service account <no-reply@microsoft.com>
2022-12-07 10:10:05 +01:00
MaksimZhukov
fe45ddc7b4 Update README.md 2022-12-06 19:27:02 +01:00
MaksimZhukov
9feffedd12 Simplify if statement 2022-12-06 11:12:09 +01:00
github-actions[bot]
66440ccb17 Update versions-manifest (#208)
Co-authored-by: Service account <no-reply@microsoft.com>
2022-12-06 10:01:24 +01:00
MaksimZhukov
c483dd7702 Add workflow_dispatch event for manifest validation 2022-12-05 22:03:35 +01:00
MaksimZhukov
69e05af37b Simplify input usage 2022-12-05 22:01:29 +01:00
MaksimZhukov
626f42cb96 Update workflows to use reusable ones 2022-12-05 21:45:47 +01:00
github-actions[bot]
08fcc9e2f9 Update versions-manifest (#207) 2022-12-02 13:45:28 +01:00
github-actions[bot]
1248039d12 Update versions-manifest (#206) 2022-11-30 11:24:47 +01:00
Marko Zivic
150cd39a1c Merge pull request #205 from MaksimZhukov/v-mzhukov/migrate-python-generation-to-macos-11
Switch Python generation from macOS 10.15 to 11
2022-11-28 12:58:51 +01:00
MaksimZhukov
93c66279f2 Update a comment
Co-authored-by: Marko Zivic <100996310+marko-zivic-93@users.noreply.github.com>
2022-11-28 12:07:33 +01:00
MaksimZhukov
14f269ec5f Switch Python generation from macOS 10.15 to 11 2022-11-28 10:54:51 +01:00
Marko Zivic
188d4c2fb8 Merge pull request #204 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 11/22/2022
2022-11-22 16:54:57 +01:00
Service account
99b9e07db6 Update versions-manifest 2022-11-22 15:49:39 +00:00
Marko Zivic
875651ccf2 Merge pull request #203 from MaksimZhukov/python-3.12.0-alpha2
Remove asyncore and asynchat modules from tests
2022-11-22 16:13:17 +01:00
MaksimZhukov
f6ede0f473 Remove asyncore and asynchat modules from tests 2022-11-22 15:19:00 +01:00
Marko Zivic
60672e10e2 Merge pull request #201 from actions/rename-virt-env
Rename virtual-environments to runner-images
2022-11-14 10:53:24 +01:00
Aleksandr Chebotov
188c9d47fd update link to issues 2022-11-11 12:22:36 +01:00
Aleksandr Chebotov
01c7f11a0c revert CODEOWNERS 2022-11-11 12:20:24 +01:00
Aleksandr Chebotov
2cd33e8674 Rename virtual-environments to runner-images 2022-11-11 12:17:09 +01:00
Marko Zivic
16feed7bc1 Merge pull request #200 from MaksimZhukov/update-github-script-version
Update github-script action version
2022-11-09 13:24:30 +01:00
MaksimZhukov
fe8bc0106f Update github-script action version 2022-11-09 11:56:32 +01:00
Marko Zivic
4cb1787f1c Merge pull request #199 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 11/09/2022
2022-11-09 11:52:06 +01:00
Service account
c81386e1fd Update versions-manifest 2022-11-09 10:50:05 +00:00
Marko Zivic
b37d4148f9 Merge pull request #198 from MaksimZhukov/fix-upload-assets-issue
Downgrade version of the github-script action
2022-11-09 10:46:25 +01:00
MaksimZhukov
9b2450c6ee Update python-builder.yml 2022-11-09 10:22:23 +01:00
Marko Zivic
a6c0fa93f8 Merge pull request #197 from e-korolevskii/fix-tests-for-python-3.12
Fix tests for python 3.12
2022-11-08 11:44:54 +01:00
Evgenii Korolevskii
929dab97d0 test(modules-test): Remove check for smtpd in python >= 3.12 2022-11-04 15:25:35 +01:00
Evgenii Korolevskii
149b806fe5 test(config-test): Remove libreadline check for version >= 3.12 2022-11-04 15:23:59 +01:00
Aleksandr Chebotov
1c70aa4fc9 Update workflow task (#196)
* Update workflow task

* use $env:GITHUB_OUTPUT

* update submodule
2022-10-31 15:12:41 +01:00
github-actions[bot]
379db95d31 Update versions-manifest (#195)
Co-authored-by: Service account <no-reply@microsoft.com>
2022-10-26 12:47:26 +02:00
Vladimir Safonkin
105f6b74ad Skip sqlite test for python 3.11 and higher (#194) 2022-10-26 12:14:20 +02:00
Marko Zivic
0d8f04f6f8 Merge pull request #193 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 10/25/2022
2022-10-25 12:42:29 +02:00
Service account
11c48b4025 Update versions-manifest 2022-10-25 10:37:31 +00:00
Hugo van Kemenade
e7a13ade71 Only run scheduled jobs on upstream (#145) 2022-10-19 11:19:28 +02:00
github-actions[bot]
024142b9c3 Update versions-manifest (#192)
Co-authored-by: Service account <no-reply@microsoft.com>
2022-10-18 12:37:53 +02:00
github-actions[bot]
5988ec7f4a Update versions-manifest (#191)
Co-authored-by: Service account <no-reply@microsoft.com>
2022-10-18 09:55:49 +02:00
25 changed files with 2109 additions and 387 deletions

2
.github/CODEOWNERS vendored
View File

@@ -1 +1 @@
* @actions/virtual-environments-owners * @actions/setup-actions-team

View File

@@ -1,20 +1,21 @@
name: Build python package name: Build Python package
run-name: Generate Python ${{ inputs.VERSION || '3.11.0' }}
on: on:
workflow_dispatch: workflow_dispatch:
inputs: inputs:
VERSION: VERSION:
description: 'Python version to build and upload' description: 'Python version to build and upload'
default: '3.9.9' default: '3.11.0'
required: true required: true
PUBLISH_RELEASES: PUBLISH_RELEASES:
description: 'Whether to publish releases' description: 'Whether to publish releases'
required: true required: true
default: 'false' type: boolean
default: false
PLATFORMS: PLATFORMS:
description: 'Platforms for execution in "os" or "os_arch" format (arch is "x64" by default)' description: 'Platforms for execution in "os" or "os_arch" format (arch is "x64" by default)'
required: true required: true
default: 'ubuntu-18.04,ubuntu-20.04,ubuntu-22.04,macos-10.15,windows-2019_x64,windows-2019_x86' default: 'ubuntu-20.04,ubuntu-22.04,macos-11_x64,macos-11_arm64,windows-2019_x64,windows-2019_x86'
pull_request: pull_request:
paths-ignore: paths-ignore:
- 'versions-manifest.json' - 'versions-manifest.json'
@@ -24,7 +25,7 @@ on:
- 'main' - 'main'
env: env:
VERSION: ${{ github.event.inputs.VERSION || '3.9.9' }} VERSION: ${{ inputs.VERSION || '3.11.0' }}
defaults: defaults:
run: run:
shell: pwsh shell: pwsh
@@ -38,7 +39,7 @@ jobs:
- name: Generate execution matrix - name: Generate execution matrix
id: generate-matrix id: generate-matrix
run: | run: |
$configurations = "${{ github.event.inputs.platforms || 'ubuntu-18.04,ubuntu-20.04,ubuntu-22.04,macos-10.15,windows-2019_x64,windows-2019_x86' }}".Split(",").Trim() [String[]]$configurations = "${{ inputs.platforms || 'ubuntu-20.04,ubuntu-22.04,macos-11,macos-11_arm64,windows-2019_x64,windows-2019_x86' }}".Split(",").Trim()
$matrix = @() $matrix = @()
foreach ($configuration in $configurations) { foreach ($configuration in $configurations) {
@@ -56,7 +57,7 @@ jobs:
'arch' = $arch 'arch' = $arch
} }
} }
echo "::set-output name=matrix::$($matrix | ConvertTo-Json -Compress)" echo "matrix=$($matrix | ConvertTo-Json -Compress -AsArray)" >> $env:GITHUB_OUTPUT
build_python: build_python:
needs: generate_matrix needs: generate_matrix
@@ -66,11 +67,11 @@ jobs:
include: ${{ fromJson(needs.generate_matrix.outputs.matrix) }} include: ${{ fromJson(needs.generate_matrix.outputs.matrix) }}
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
env: env:
ARTIFACT_NAME: python-${{ github.event.inputs.VERSION || '3.9.9' }}-${{ matrix.platform }}-${{ matrix.arch }} ARTIFACT_NAME: python-${{ inputs.VERSION || '3.11.0' }}-${{ matrix.platform }}-${{ matrix.arch }}
steps: steps:
- name: Check out repository code - name: Check out repository code
uses: actions/checkout@v2 uses: actions/checkout@v3
with: with:
submodules: true submodules: true
@@ -80,7 +81,7 @@ jobs:
-Platform ${{ matrix.platform }} -Architecture ${{ matrix.arch }} -Platform ${{ matrix.platform }} -Architecture ${{ matrix.arch }}
- name: Publish artifact - name: Publish artifact
uses: actions/upload-artifact@v2 uses: actions/upload-artifact@v3
with: with:
name: ${{ env.ARTIFACT_NAME }} name: ${{ env.ARTIFACT_NAME }}
path: ${{ runner.temp }}/artifact path: ${{ runner.temp }}/artifact
@@ -93,11 +94,11 @@ jobs:
include: ${{ fromJson(needs.generate_matrix.outputs.matrix) }} include: ${{ fromJson(needs.generate_matrix.outputs.matrix) }}
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
env: env:
ARTIFACT_NAME: python-${{ github.event.inputs.VERSION || '3.9.9' }}-${{ matrix.platform }}-${{ matrix.arch }} ARTIFACT_NAME: python-${{ inputs.VERSION || '3.11.0' }}-${{ matrix.platform }}-${{ matrix.arch }}
steps: steps:
- name: Check out repository code - name: Check out repository code
uses: actions/checkout@v2 uses: actions/checkout@v3
with: with:
submodules: true submodules: true
@@ -105,7 +106,7 @@ jobs:
run: ./helpers/clean-toolcache.ps1 -ToolName "Python" run: ./helpers/clean-toolcache.ps1 -ToolName "Python"
- name: Download artifact - name: Download artifact
uses: actions/download-artifact@v2 uses: actions/download-artifact@v3
with: with:
path: ${{ runner.temp }} path: ${{ runner.temp }}
@@ -131,7 +132,7 @@ jobs:
working-directory: ${{ runner.temp }}/${{ env.ARTIFACT_NAME }} working-directory: ${{ runner.temp }}/${{ env.ARTIFACT_NAME }}
- name: Setup Python ${{ env.VERSION }} - name: Setup Python ${{ env.VERSION }}
uses: actions/setup-python@v3 uses: actions/setup-python@v4
with: with:
python-version: ${{ env.VERSION }} python-version: ${{ env.VERSION }}
architecture: ${{ matrix.arch }} architecture: ${{ matrix.arch }}
@@ -154,6 +155,7 @@ jobs:
$pesterContainer = New-PesterContainer -Path './python-tests.ps1' -Data @{ $pesterContainer = New-PesterContainer -Path './python-tests.ps1' -Data @{
Version="${{ env.VERSION }}"; Version="${{ env.VERSION }}";
Platform="${{ matrix.platform }}"; Platform="${{ matrix.platform }}";
Architecture="${{ matrix.arch }}";
} }
$Result = Invoke-Pester -Container $pesterContainer -PassThru $Result = Invoke-Pester -Container $pesterContainer -PassThru
if ($Result.FailedCount -gt 0) { if ($Result.FailedCount -gt 0) {
@@ -164,11 +166,11 @@ jobs:
publish_release: publish_release:
name: Publish release name: Publish release
if: github.event_name == 'workflow_dispatch' && github.event.inputs.PUBLISH_RELEASES == 'true' if: github.event_name == 'workflow_dispatch' && inputs.PUBLISH_RELEASES
needs: test_python needs: test_python
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/download-artifact@v2 - uses: actions/download-artifact@v3
- name: Publish Release ${{ env.VERSION }} - name: Publish Release ${{ env.VERSION }}
id: create_release id: create_release
@@ -181,21 +183,34 @@ jobs:
body: | body: |
Python ${{ env.VERSION }} Python ${{ env.VERSION }}
- name: Generate hash for packages
run: |
$childItems = Get-Childitem -Path '.'
$childItems | Foreach-Object {
$packageObj = Get-Childitem -Path $_.FullName | Select-Object -First 1
Write-Host "Package: $($packageObj.Name)"
$actualHash = (Get-FileHash -Path $packageObj.FullName -Algorithm sha256).Hash
$hashString = "$actualHash $($packageObj.Name)"
Write-Host "$hashString"
Add-Content -Path ./hashes.sha256 -Value "$hashString"
}
- name: Upload release assets - name: Upload release assets
uses: actions/github-script@v2 uses: actions/github-script@v6
with: with:
github-token: ${{ secrets.GITHUB_TOKEN }} github-token: ${{ secrets.GITHUB_TOKEN }}
script: | script: |
const fs = require('fs'); const fs = require('fs');
for (let artifactDir of fs.readdirSync('.')) { for (let artifactDir of fs.readdirSync('.')) {
let artifactName = fs.readdirSync(`${artifactDir}`)[0]; let artifactName = fs.lstatSync(artifactDir).isDirectory() ? fs.readdirSync(`${artifactDir}`)[0] : artifactDir;
console.log(`Upload ${artifactName} asset`); console.log(`Upload ${artifactName} asset`);
github.repos.uploadReleaseAsset({ github.rest.repos.uploadReleaseAsset({
owner: context.repo.owner, owner: context.repo.owner,
repo: context.repo.repo, repo: context.repo.repo,
release_id: ${{ steps.create_release.outputs.id }}, release_id: ${{ steps.create_release.outputs.id }},
name: artifactName, name: artifactName,
data: fs.readFileSync(`./${artifactDir}/${artifactName}`) data: fs.lstatSync(artifactDir).isDirectory() ? fs.readFileSync(`./${artifactDir}/${artifactName}`) : fs.readFileSync(`./${artifactName}`).toString()
}); });
} }
@@ -205,11 +220,11 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Trigger "Create Pull Request" workflow - name: Trigger "Create Pull Request" workflow
uses: actions/github-script@v3 uses: actions/github-script@v6
with: with:
github-token: ${{ secrets.PERSONAL_TOKEN }} github-token: ${{ secrets.GITHUB_TOKEN }}
script: | script: |
github.actions.createWorkflowDispatch({ github.rest.actions.createWorkflowDispatch({
owner: context.repo.owner, owner: context.repo.owner,
repo: context.repo.repo, repo: context.repo.repo,
workflow_id: 'create-pr.yml', workflow_id: 'create-pr.yml',

View File

@@ -1,70 +1,16 @@
# For most projects, this workflow file will not need changing; you simply need name: CodeQL analysis
# to commit it to your repository.
#
# You may wish to alter this file to override the set of languages analyzed,
# or to provide custom queries or build logic.
#
# ******** NOTE ********
# We have attempted to detect the languages in your repository. Please check
# the `language` matrix defined below to confirm you have the correct set of
# supported CodeQL languages.
#
name: "CodeQL"
on: on:
push: push:
branches: [ main ] branches: [ main ]
pull_request: pull_request:
# The branches below must be a subset of the branches above
branches: [ main ] branches: [ main ]
schedule: schedule:
- cron: '30 8 * * 2' - cron: '0 3 * * 0'
jobs: jobs:
analyze: call-codeQL-analysis:
name: Analyze name: CodeQL analysis
runs-on: ubuntu-latest uses: actions/reusable-workflows/.github/workflows/codeql-analysis.yml@main
permissions: with:
actions: read languages: "['python']"
contents: read
security-events: write
strategy:
fail-fast: false
matrix:
language: [ 'python' ]
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ]
# Learn more about CodeQL language support at https://git.io/codeql-language-support
steps:
- name: Checkout repository
uses: actions/checkout@v3
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v1
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
# By default, queries listed here will override any specified in a config file.
# Prefix the list here with "+" to use these queries and those in the config file.
# queries: ./path/to/local/query, your-org/your-repo/queries@main
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
uses: github/codeql-action/autobuild@v1
# Command-line programs to run using the OS shell.
# 📚 https://git.io/JvXDl
# ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
# and modify them (or add more) to build your code if your project
# uses a compiled language
#- run: |
# make bootstrap
# make release
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v1

View File

@@ -2,32 +2,9 @@ name: Create Pull Request
on: on:
workflow_dispatch: workflow_dispatch:
defaults:
run:
shell: pwsh
jobs: jobs:
create_pr: create-pr:
name: Create Pull Request uses: actions/versions-package-tools/.github/workflows/create-pr-to-update-manifest.yml@main
runs-on: ubuntu-latest with:
steps: tool-name: "python"
- uses: actions/checkout@v2 secrets: inherit
with:
submodules: true
- name: Create versions-manifest.json
run: |
./helpers/packages-generation/manifest-generator.ps1 -RepositoryFullName "$env:GITHUB_REPOSITORY" `
-GitHubAccessToken "${{secrets.GITHUB_TOKEN}}" `
-OutputFile "./versions-manifest.json" `
-ConfigurationFile "./config/python-manifest-config.json"
- name: Create GitHub PR
run: |
$formattedDate = Get-Date -Format "MM/dd/yyyy"
./helpers/github/create-pull-request.ps1 `
-RepositoryFullName "$env:GITHUB_REPOSITORY" `
-AccessToken "${{secrets.GITHUB_TOKEN}}" `
-BranchName "update-versions-manifest-file" `
-CommitMessage "Update versions-manifest" `
-PullRequestTitle "[versions-manifest] Update for release from ${formattedDate}" `
-PullRequestBody "Update versions-manifest.json for release from ${formattedDate}"

View File

@@ -4,92 +4,10 @@ on:
- cron: '0 3,15 * * *' - cron: '0 3,15 * * *'
workflow_dispatch: workflow_dispatch:
env:
TOOL_NAME: "Python"
defaults:
run:
shell: pwsh
jobs: jobs:
find_new_versions: get-new-python-versions:
name: Find new versions uses: actions/versions-package-tools/.github/workflows/get-new-tool-versions.yml@main
runs-on: ubuntu-latest with:
outputs: tool-name: "Python"
versions_output: ${{ steps.Get_new_versions.outputs.TOOL_VERSIONS }} image-url: "https://avatars.githubusercontent.com/u/1525981?s=200&v=4"
steps: secrets: inherit
- uses: actions/checkout@v2
with:
submodules: true
- id: Get_new_versions
name: Get new versions
run: ./helpers/get-new-tool-versions/get-new-tool-versions.ps1 -ToolName ${{ env.TOOL_NAME }}
check_new_versions:
name: Check new versions
runs-on: ubuntu-latest
needs: find_new_versions
env:
TOOL_VERSIONS: ${{needs.find_new_versions.outputs.versions_output}}
steps:
- uses: actions/checkout@v2
with:
submodules: true
- name: Check Versions
if: env.TOOL_VERSIONS == ''
run: |
Write-Host "No new versions were found"
Import-Module "./helpers/github/github-api.psm1"
$gitHubApi = Get-GitHubApi -RepositoryFullName "$env:GITHUB_REPOSITORY" `
-AccessToken "${{ secrets.PERSONAL_TOKEN }}"
$gitHubApi.CancelWorkflow("$env:GITHUB_RUN_ID")
Start-Sleep -Seconds 60
- name: Send Slack notification
run: |
$pipelineUrl = "$env:GITHUB_SERVER_URL/$env:GITHUB_REPOSITORY/actions/runs/$env:GITHUB_RUN_ID"
$message = "The following versions of '${{ env.TOOL_NAME }}' are available to upload: ${{ env.TOOL_VERSIONS }}\nLink to the pipeline: $pipelineUrl"
./helpers/get-new-tool-versions/send-slack-notification.ps1 -Url "${{ secrets.SLACK_CHANNEL_URL }}" `
-ToolName "${{ env.TOOL_NAME }}" `
-ImageUrl "https://avatars.githubusercontent.com/u/1525981?s=200&v=4" `
-Text "$message"
trigger_builds:
name: Trigger builds
runs-on: ubuntu-latest
needs: [find_new_versions, check_new_versions]
env:
TOOL_VERSIONS: ${{needs.find_new_versions.outputs.versions_output}}
environment: Get Available Tools Versions - Publishing Approval
steps:
- uses: actions/checkout@v2
with:
submodules: true
- name: Trigger "Build python packages" workflow
run:
./helpers/github/run-ci-builds.ps1 -RepositoryFullName "$env:GITHUB_REPOSITORY" `
-AccessToken "${{ secrets.PERSONAL_TOKEN }}" `
-WorkflowFileName "python-builder.yml" `
-WorkflowDispatchRef "main" `
-ToolVersions "${{ env.TOOL_VERSIONS }}" `
-PublishReleases "true"
check_build:
name: Check build for failures
runs-on: ubuntu-latest
needs: [find_new_versions, check_new_versions, trigger_builds]
if: failure()
steps:
- uses: actions/checkout@v2
with:
submodules: true
- name: Send Slack notification if build fails
run: |
$pipelineUrl = "$env:GITHUB_SERVER_URL/$env:GITHUB_REPOSITORY/actions/runs/$env:GITHUB_RUN_ID"
$message = "The build of the '${{ env.TOOL_NAME }}' detection pipeline failed :progress-error:\nLink to the pipeline: $pipelineUrl"
./helpers/get-new-tool-versions/send-slack-notification.ps1 -Url "${{ secrets.SLACK_CHANNEL_URL }}" `
-ToolName "${{ env.TOOL_NAME }}" `
-Text "$message" `
-ImageUrl "https://avatars.githubusercontent.com/u/1525981?s=200&v=4"

View File

@@ -11,7 +11,7 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v2 uses: actions/checkout@v3
with: with:
submodules: true submodules: true
@@ -21,7 +21,7 @@ jobs:
Install-Module Pester -Force -Scope CurrentUser Install-Module Pester -Force -Scope CurrentUser
- name: Run tests - name: Run tests
shell: pwsh shell: pwsh
run: | run: |
Import-Module Pester Import-Module Pester
Invoke-Pester -Configuration @{ Invoke-Pester -Configuration @{

View File

@@ -21,11 +21,11 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Check out repository code - name: Check out repository code
uses: actions/checkout@v2 uses: actions/checkout@v3
- name: Trigger python workflow - name: Trigger python workflow
run: | run: |
$versions = ${{ github.event.inputs.versions }} $versions = ${{ github.event.inputs.versions }}
./builders/python-versions-runner.ps1 -Versions $versions.Split(",") -PublishRelease ${{ github.event.inputs.publish-releases }} ./builders/python-versions-runner.ps1 -Versions $versions.Split(",") -PublishRelease ${{ github.event.inputs.publish-releases }}
env: env:
PERSONAL_TOKEN: ${{ secrets.PERSONAL_TOKEN }} TOKEN: ${{ secrets.GITHUB_TOKEN }}

View File

@@ -14,11 +14,11 @@ jobs:
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
os: [macos-latest, windows-latest, ubuntu-18.04, ubuntu-20.04] os: [macos-latest, windows-latest, ubuntu-20.04, ubuntu-22.04]
python: [3.5.4, 3.6.7, 3.7.5, 3.8.1] python: [3.9.12, 3.10.8, 3.11.10]
steps: steps:
- name: setup-python ${{ matrix.python }} - name: setup-python ${{ matrix.python }}
uses: actions/setup-python@v3 uses: actions/setup-python@v4
with: with:
python-version: ${{ matrix.python }} python-version: ${{ matrix.python }}

View File

@@ -17,7 +17,7 @@ jobs:
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
os: [macos-latest, windows-latest, ubuntu-18.04, ubuntu-20.04] os: [macos-latest, windows-latest, ubuntu-20.04, ubuntu-22.04]
steps: steps:
- name: Setup Python ${{ github.event.inputs.version }} - name: Setup Python ${{ github.event.inputs.version }}
uses: actions/setup-python@main uses: actions/setup-python@main

View File

@@ -1,48 +1,21 @@
name: Validate manifest name: Validate manifest
on: on:
# The GITHUB_TOKEN secret is used to create a PR
# The pull_request event will not be triggered by it
# That's one of the reasons we need the schedule to validate the versions-manifest.json file
schedule: schedule:
- cron: '0 8,20 * * *' - cron: '0 8,20 * * *'
workflow_dispatch:
pull_request: pull_request:
branches: branches:
- main - main
paths: paths:
- 'versions-manifest.json' - 'versions-manifest.json'
env:
TOOL_NAME: "Python"
defaults:
run:
shell: pwsh
jobs: jobs:
validation: manifest:
runs-on: ubuntu-latest uses: actions/versions-package-tools/.github/workflows/validate-manifest.yml@main
steps: with:
- uses: actions/checkout@v2 tool-name: "Python"
with: image-url: "https://avatars.githubusercontent.com/u/1525981?s=200&v=4"
submodules: true secrets: inherit
- name: Validate python-versions manifest
run: .\helpers\packages-generation\manifest-validator.ps1 -ManifestPath '.\versions-manifest.json'
check_build:
name: Check validation for failures
runs-on: ubuntu-latest
needs: [validation]
if: failure()
steps:
- uses: actions/checkout@v2
with:
submodules: true
- name: Send Slack notification if validation fails
run: |
$pipelineUrl = "$env:GITHUB_SERVER_URL/$env:GITHUB_REPOSITORY/actions/runs/$env:GITHUB_RUN_ID"
$message = "The validation of python-versions manifest failed. \nLink to the pipeline: $pipelineUrl"
.\helpers\get-new-tool-versions\send-slack-notification.ps1 -Url "${{ secrets.SLACK_CHANNEL_URL }}" `
-ToolName "${{ env.TOOL_NAME }}" `
-Text "$message" `
-ImageUrl "https://www.python.org/static/community_logos/python-powered-h-100x130.png"

View File

@@ -1,16 +1,27 @@
# Python for Actions # Python for Actions
This repository contains the code and scripts that we use to build Python packages used in [virtual-environments](https://github.com/actions/virtual-environments) and accessible through the [setup-python](https://github.com/actions/setup-python) Action. This repository contains the code and scripts that we use to build Python packages used in [runner-images](https://github.com/actions/runner-images) and accessible through the [setup-python](https://github.com/actions/setup-python) Action.
File [versions-manifest.json](./versions-manifest.json) contains the list of available and released versions. File [versions-manifest.json](./versions-manifest.json) contains the list of available and released versions.
> Caution: this is prepared for and only permitted for use by actions `virtual-environments` and `setup-python` action. > Caution: this is prepared for and only permitted for use by actions `runner-images` and `setup-python` action.
**Status**: Currently under development and in use for beta and preview actions. This repo is undergoing rapid changes. Some versions are pre-installed on [runner-images](https://github.com/actions/runner-images) images.
More versions are available to install on-the-fly through the [`setup-python`](https://github.com/actions/setup-python) action.
Some versions are pre-installed on [virtual-environments](https://github.com/actions/virtual-environments) images. ## Building installation packages
More versions will (soon!) be available to install on-the-fly through the [`setup-python`](https://github.com/actions/setup-python) action. **Ubuntu:** The official Python sources are downloaded from [python.org](https://www.python.org/ftp/python/), built using the `make` tool, and archived along with the installation script for further distribution and installation. We build each Python version against all [versions of Ubuntu](https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners#supported-runners-and-hardware-resources) that are available at the time the Python version is released.
## Adding new versions **macOS:**
We are trying to build and release new versions of Python as soon as they are released. Please open an issue in [actions/virtual-environments](https://github.com/actions/virtual-environments) if any versions are missing. - For **Python < 3.11**, the official Python sources are downloaded from [python.org](https://www.python.org/ftp/python/), built using the `make` tool, and archived along with the installation script for further distribution and installation. For backward compatibility, we build each Python version against the oldest [version of macOS](https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners#supported-runners-and-hardware-resources) that is available at the time the Python version is released.
- For **Python >= 3.11**, the official macOS `universal2` Python binaries are simply downloaded from [python.org](https://www.python.org/ftp/python/) and archived along with the installation script for further distribution and installation.
**Windows:** The official Python executables are simply downloaded from [python.org](https://www.python.org/ftp/python/) and archived along with the installation script for further distribution and installation.
## Support policy
We aim to make new versions of Python available as soon as they are released. Both stable and prerelease versions are considered for building and releasing. Please open an issue in [actions/setup-python](https://github.com/actions/setup-python) if a version you're looking for isn't available.
When a new version of an operating system is released and made available for use with [GitHub hosted runners](https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners#supported-runners-and-hardware-resources), we will provide the **latest existing patch versions of Python for all major versions that have not reached [end-of-life](https://devguide.python.org/versions/)**. Any subsequent Python versions will be made available for the new OS as well.
Beginning **approximately six months prior** to the removal of a Python version from the [versions-manifest.json](https://github.com/actions/python-versions/blob/main/versions-manifest.json) file, a pinned issue will be created in the [setup-python](https://github.com/actions/setup-python) repository. This pinned issue will provide important details about the upcoming end of support, including the specific date, as well as any other notes, relevant updates or alternatives. We encourage users to regularly check pinned issues for updates on tool versions they are using for maximum transparency, security, performance and overall compatibility with their projects.
## Contribution ## Contribution
Contributions are welcome! See [Contributor's Guide](./CONTRIBUTING.md) for more details about contribution process and code structure Contributions are welcome! See [Contributor's Guide](./CONTRIBUTING.md) for more details about contribution process and code structure

View File

@@ -12,10 +12,10 @@ function Invoke-Workflow {
} }
} | ConvertTo-Json } | ConvertTo-Json
$headers = @{ $headers = @{
Authorization="Bearer $env:PERSONAL_TOKEN" Authorization="Bearer $env:TOKEN"
} }
$actionsRepoUri = "$env:GITHUB_API_URL/repos/$env:GITHUB_REPOSITORY/actions" $actionsRepoUri = "$env:GITHUB_API_URL/repos/$env:GITHUB_REPOSITORY/actions"
Invoke-RestMethod -uri "$actionsRepoUri/workflows/python-builder.yml/dispatches" -method POST -headers $headers -body $payload Invoke-RestMethod -uri "$actionsRepoUri/workflows/build-python-packages.yml/dispatches" -method POST -headers $headers -body $payload
$result = [PSCustomObject]@{ $result = [PSCustomObject]@{
Version = $Version Version = $Version

View File

@@ -7,7 +7,7 @@ class macOSPythonBuilder : NixPythonBuilder {
.DESCRIPTION .DESCRIPTION
Contains methods that required to build macOS Python artifact from sources. Inherited from base NixPythonBuilder. Contains methods that required to build macOS Python artifact from sources. Inherited from base NixPythonBuilder.
While python.org provides precompiled binaries for macOS, switching to them risks breaking existing customers. While python.org provides precompiled binaries for macOS, switching to them risks breaking existing customers.
If we wanted to start using the official binaries instead of building from source, we should avoid changing previous versions If we wanted to start using the official binaries instead of building from source, we should avoid changing previous versions
so we remain backwards compatible. so we remain backwards compatible.
@@ -31,6 +31,14 @@ class macOSPythonBuilder : NixPythonBuilder {
.SYNOPSIS .SYNOPSIS
Prepare system environment by installing dependencies and required packages. Prepare system environment by installing dependencies and required packages.
#> #>
if ($this.Version -eq "3.7.17") {
# We have preinstalled ncurses and readLine on the hoster runners. But we need to install bzip2 for
# setting up an environemnt
# If we get any issues realted to ncurses or readline we can try to run this command
# brew install ncurses readline
Execute-Command -Command "brew install bzip2"
}
} }
[void] Configure() { [void] Configure() {
@@ -64,9 +72,22 @@ class macOSPythonBuilder : NixPythonBuilder {
$env:CFLAGS = "-I/usr/local/opt/openssl@1.1/include -I/usr/local/opt/zlib/include" $env:CFLAGS = "-I/usr/local/opt/openssl@1.1/include -I/usr/local/opt/zlib/include"
} else { } else {
$configureString += " --with-openssl=/usr/local/opt/openssl@1.1" $configureString += " --with-openssl=/usr/local/opt/openssl@1.1"
# For Python 3.7.2 and 3.7.3 we need to provide PATH for zlib to pack it properly. Otherwise the build will fail
# with the error: zipimport.ZipImportError: can't decompress data; zlib not available
if ($this.Version -eq "3.7.2" -or $this.Version -eq "3.7.3" -or $this.Version -eq "3.7.17") {
$env:LDFLAGS = "-L/usr/local/opt/zlib/lib"
$env:CFLAGS = "-I/usr/local/opt/zlib/include"
}
if ($this.Version -gt "3.7.12") { if ($this.Version -gt "3.7.12") {
$configureString += " --with-tcltk-includes='-I /usr/local/opt/tcl-tk/include' --with-tcltk-libs='-L/usr/local/opt/tcl-tk/lib -ltcl8.6 -ltk8.6'" $configureString += " --with-tcltk-includes='-I /usr/local/opt/tcl-tk/include' --with-tcltk-libs='-L/usr/local/opt/tcl-tk/lib -ltcl8.6 -ltk8.6'"
} }
if ($this.Version -eq "3.7.17") {
$env:LDFLAGS += " -L$(brew --prefix bzip2)/lib -L$(brew --prefix readline)/lib -L$(brew --prefix ncurses)/lib"
$env:CFLAGS += " -I$(brew --prefix bzip2)/include -I$(brew --prefix readline)/include -I$(brew --prefix ncurses)/include"
}
} }
### Compile with support of loadable sqlite extensions. Unavailable for Python 2.* ### Compile with support of loadable sqlite extensions. Unavailable for Python 2.*
@@ -143,6 +164,7 @@ class macOSPythonBuilder : NixPythonBuilder {
$variablesToReplace = @{ $variablesToReplace = @{
"{{__VERSION_FULL__}}" = $this.Version; "{{__VERSION_FULL__}}" = $this.Version;
"{{__PKG_NAME__}}" = $this.GetPkgName(); "{{__PKG_NAME__}}" = $this.GetPkgName();
"{{__ARCH__}}" = $this.Architecture;
} }
$variablesToReplace.keys | ForEach-Object { $installationTemplateContent = $installationTemplateContent.Replace($_, $variablesToReplace[$_]) } $variablesToReplace.keys | ForEach-Object { $installationTemplateContent = $installationTemplateContent.Replace($_, $variablesToReplace[$_]) }
@@ -158,7 +180,7 @@ class macOSPythonBuilder : NixPythonBuilder {
$PkgVersion = [semver]"3.11.0-beta.1" $PkgVersion = [semver]"3.11.0-beta.1"
if ($this.Version -ge $PkgVersion) { if (($this.Version -ge $PkgVersion) -or ($this.Architecture -eq "arm64")) {
Write-Host "Download Python $($this.Version) [$($this.Architecture)] package..." Write-Host "Download Python $($this.Version) [$($this.Architecture)] package..."
$this.DownloadPkg() $this.DownloadPkg()

View File

@@ -72,6 +72,7 @@ class UbuntuPythonBuilder : NixPythonBuilder {
$tkinterInstallString = "sudo apt install -y python-tk tk-dev" $tkinterInstallString = "sudo apt install -y python-tk tk-dev"
} }
Execute-Command -Command "sudo apt-get update"
Execute-Command -Command $tkinterInstallString Execute-Command -Command $tkinterInstallString
### Install dependent packages ### Install dependent packages

View File

@@ -1,5 +1,5 @@
{ {
"regex": "python-\\d+\\.\\d+\\.\\d+-(\\w+\\.\\d+)?-?(\\w+)-(\\d+\\.\\d+)?-?(x\\d+)", "regex": "python-\\d+\\.\\d+\\.\\d+-(\\w+\\.\\d+)?-?(\\w+)-(\\d+\\.\\d+)?-?((x|arm)\\d+)",
"groups": { "groups": {
"arch": 4, "arch": 4,
"platform": 2, "platform": 2,

Submodule helpers updated: 6f1aa3ce73...6fbb1f0f20

View File

@@ -2,6 +2,7 @@ set -e
PYTHON_FULL_VERSION="{{__VERSION_FULL__}}" PYTHON_FULL_VERSION="{{__VERSION_FULL__}}"
PYTHON_PKG_NAME="{{__PKG_NAME__}}" PYTHON_PKG_NAME="{{__PKG_NAME__}}"
ARCH="{{__ARCH__}}"
MAJOR_VERSION=$(echo $PYTHON_FULL_VERSION | cut -d '.' -f 1) MAJOR_VERSION=$(echo $PYTHON_FULL_VERSION | cut -d '.' -f 1)
MINOR_VERSION=$(echo $PYTHON_FULL_VERSION | cut -d '.' -f 2) MINOR_VERSION=$(echo $PYTHON_FULL_VERSION | cut -d '.' -f 2)
@@ -18,7 +19,7 @@ fi
PYTHON_TOOLCACHE_PATH=$TOOLCACHE_ROOT/Python PYTHON_TOOLCACHE_PATH=$TOOLCACHE_ROOT/Python
PYTHON_TOOLCACHE_VERSION_PATH=$PYTHON_TOOLCACHE_PATH/$PYTHON_FULL_VERSION PYTHON_TOOLCACHE_VERSION_PATH=$PYTHON_TOOLCACHE_PATH/$PYTHON_FULL_VERSION
PYTHON_TOOLCACHE_VERSION_ARCH_PATH=$PYTHON_TOOLCACHE_VERSION_PATH/x64 PYTHON_TOOLCACHE_VERSION_ARCH_PATH=$PYTHON_TOOLCACHE_VERSION_PATH/$ARCH
PYTHON_FRAMEWORK_PATH="/Library/Frameworks/Python.framework/Versions/${MAJOR_VERSION}.${MINOR_VERSION}" PYTHON_FRAMEWORK_PATH="/Library/Frameworks/Python.framework/Versions/${MAJOR_VERSION}.${MINOR_VERSION}"
PYTHON_APPLICATION_PATH="/Applications/Python ${MAJOR_VERSION}.${MINOR_VERSION}" PYTHON_APPLICATION_PATH="/Applications/Python ${MAJOR_VERSION}.${MINOR_VERSION}"
@@ -29,10 +30,10 @@ if [ ! -d $PYTHON_TOOLCACHE_PATH ]; then
else else
# remove ALL other directories for same major.minor python versions # remove ALL other directories for same major.minor python versions
find $PYTHON_TOOLCACHE_PATH -name "${MAJOR_VERSION}.${MINOR_VERSION}.*"|while read python_version;do find $PYTHON_TOOLCACHE_PATH -name "${MAJOR_VERSION}.${MINOR_VERSION}.*"|while read python_version;do
python_version_x64="$python_version/x64" python_version_arch="$python_version/$ARCH"
if [ -e "$python_version_x64" ];then if [ -e "$python_version_arch" ];then
echo "Deleting Python $python_version_x64" echo "Deleting Python $python_version_arch"
rm -rf "$python_version_x64" rm -rf "$python_version_arch"
fi fi
done done
fi fi
@@ -54,7 +55,13 @@ echo "Create additional symlinks (Required for the UsePythonVersion Azure Pipeli
ln -s ./bin/$PYTHON_MAJOR_DOT_MINOR python ln -s ./bin/$PYTHON_MAJOR_DOT_MINOR python
cd bin/ cd bin/
ln -s $PYTHON_MAJOR_DOT_MINOR $PYTHON_MAJOR_MINOR
# This symlink already exists if Python version with the same major.minor version is installed,
# since we do not remove the framework folder
if [ ! -f $PYTHON_MAJOR_MINOR ]; then
ln -s $PYTHON_MAJOR_DOT_MINOR $PYTHON_MAJOR_MINOR
fi
if [ ! -f python ]; then if [ ! -f python ]; then
ln -s $PYTHON_MAJOR_DOT_MINOR python ln -s $PYTHON_MAJOR_DOT_MINOR python
fi fi
@@ -63,10 +70,10 @@ chmod +x ../python $PYTHON_MAJOR $PYTHON_MAJOR_DOT_MINOR $PYTHON_MAJOR_MINOR pyt
echo "Upgrading pip..." echo "Upgrading pip..."
./python -m ensurepip ./python -m ensurepip
./python -m pip install --ignore-installed pip --disable-pip-version-check --no-warn-script-location ./python -m pip install --ignore-installed pip --disable-pip-version-check --no-warn-script-location --root-user-action=ignore
echo "Install OpenSSL certificates" echo "Install OpenSSL certificates"
sh -e "${PYTHON_APPLICATION_PATH}/Install Certificates.command" sh -e "${PYTHON_APPLICATION_PATH}/Install Certificates.command"
echo "Create complete file" echo "Create complete file"
touch $PYTHON_TOOLCACHE_VERSION_PATH/x64.complete touch $PYTHON_TOOLCACHE_VERSION_PATH/${ARCH}.complete

View File

@@ -50,7 +50,7 @@ chmod +x ../python $PYTHON_MAJOR $PYTHON_MAJOR_DOT_MINOR $PYTHON_MAJORMINOR pyth
echo "Upgrading pip..." echo "Upgrading pip..."
./python -m ensurepip ./python -m ensurepip
./python -m pip install --ignore-installed pip --disable-pip-version-check --no-warn-script-location ./python -m pip install --ignore-installed pip --disable-pip-version-check --no-warn-script-location --root-user-action=ignore
echo "Create complete file" echo "Create complete file"
touch $PYTHON_TOOLCACHE_VERSION_PATH/x64.complete touch $PYTHON_TOOLCACHE_VERSION_PATH/x64.complete

View File

@@ -101,7 +101,9 @@ if ($null -ne $InstalledVersions) {
if (Test-Path -Path $InstalledVersion) { if (Test-Path -Path $InstalledVersion) {
Write-Host "Deleting $InstalledVersion..." Write-Host "Deleting $InstalledVersion..."
Remove-Item -Path $InstalledVersion -Recurse -Force Remove-Item -Path $InstalledVersion -Recurse -Force
Remove-Item -Path "$($InstalledVersion.Parent.FullName)/${Architecture}.complete" -Force -Verbose if (Test-Path -Path "$($InstalledVersion.Parent.FullName)/${Architecture}.complete") {
Remove-Item -Path "$($InstalledVersion.Parent.FullName)/${Architecture}.complete" -Force -Verbose
}
} }
} }
} else { } else {
@@ -132,7 +134,7 @@ if ($MajorVersion -ne "2") {
Write-Host "Install and upgrade Pip" Write-Host "Install and upgrade Pip"
$PythonExePath = Join-Path -Path $PythonArchPath -ChildPath "python.exe" $PythonExePath = Join-Path -Path $PythonArchPath -ChildPath "python.exe"
cmd.exe /c "$PythonExePath -m ensurepip && $PythonExePath -m pip install --upgrade pip --no-warn-script-location" cmd.exe /c "$PythonExePath -m ensurepip && $PythonExePath -m pip install --upgrade pip --no-warn-script-location --root-user-action=ignore"
Write-Host "Create complete file" Write-Host "Create complete file"
New-Item -ItemType File -Path $PythonVersionPath -Name "$Architecture.complete" | Out-Null New-Item -ItemType File -Path $PythonVersionPath -Name "$Architecture.complete" | Out-Null

View File

@@ -5,16 +5,16 @@ $Configuration = Read-ConfigurationFile -Filepath $ConfigurationFile
$stableTestCases = @( $stableTestCases = @(
@{ ReleaseName = "python-3.8.3-darwin-x64.tar.gz"; ExpectedResult = @{ platform = "darwin"; platform_version = $null; arch = "x64"} }, @{ ReleaseName = "python-3.8.3-darwin-x64.tar.gz"; ExpectedResult = @{ platform = "darwin"; platform_version = $null; arch = "x64"} },
@{ ReleaseName = "python-3.8.3-linux-18.04-x64.tar.gz"; ExpectedResult = @{ platform = "linux"; platform_version = "18.04"; arch = "x64"} },
@{ ReleaseName = "python-3.8.3-linux-20.04-x64.tar.gz"; ExpectedResult = @{ platform = "linux"; platform_version = "20.04"; arch = "x64"} }, @{ ReleaseName = "python-3.8.3-linux-20.04-x64.tar.gz"; ExpectedResult = @{ platform = "linux"; platform_version = "20.04"; arch = "x64"} },
@{ ReleaseName = "python-3.8.3-linux-22.04-x64.tar.gz"; ExpectedResult = @{ platform = "linux"; platform_version = "22.04"; arch = "x64"} },
@{ ReleaseName = "python-3.8.3-win32-x64.zip"; ExpectedResult = @{ platform = "win32"; platform_version = $null; arch = "x64"} }, @{ ReleaseName = "python-3.8.3-win32-x64.zip"; ExpectedResult = @{ platform = "win32"; platform_version = $null; arch = "x64"} },
@{ ReleaseName = "python-3.8.3-win32-x86.zip"; ExpectedResult = @{ platform = "win32"; platform_version = $null; arch = "x86"} } @{ ReleaseName = "python-3.8.3-win32-x86.zip"; ExpectedResult = @{ platform = "win32"; platform_version = $null; arch = "x86"} }
) | ForEach-Object { $_.Configuration = $Configuration; $_ } ) | ForEach-Object { $_.Configuration = $Configuration; $_ }
$unstableTestCases = @( $unstableTestCases = @(
@{ ReleaseName = "python-3.9.0-alpha.2-darwin-x64.tar.gz"; ExpectedResult = @{ platform = "darwin"; platform_version = $null; arch = "x64"} }, @{ ReleaseName = "python-3.9.0-alpha.2-darwin-x64.tar.gz"; ExpectedResult = @{ platform = "darwin"; platform_version = $null; arch = "x64"} },
@{ ReleaseName = "python-3.9.0-rc.4-linux-18.04-x64.tar.gz"; ExpectedResult = @{ platform = "linux"; platform_version = "18.04"; arch = "x64"} },
@{ ReleaseName = "python-3.9.0-beta.2-linux-20.04-x64.tar.gz"; ExpectedResult = @{ platform = "linux"; platform_version = "20.04"; arch = "x64"} }, @{ ReleaseName = "python-3.9.0-beta.2-linux-20.04-x64.tar.gz"; ExpectedResult = @{ platform = "linux"; platform_version = "20.04"; arch = "x64"} },
@{ ReleaseName = "python-3.9.0-rc.4-linux-22.04-x64.tar.gz"; ExpectedResult = @{ platform = "linux"; platform_version = "22.04"; arch = "x64"} },
@{ ReleaseName = "python-3.9.0-beta.2-win32-x64.zip"; ExpectedResult = @{ platform = "win32"; platform_version = $null; arch = "x64"} }, @{ ReleaseName = "python-3.9.0-beta.2-win32-x64.zip"; ExpectedResult = @{ platform = "win32"; platform_version = $null; arch = "x64"} },
@{ ReleaseName = "python-3.9.0-beta.2-win32-x86.zip"; ExpectedResult = @{ platform = "win32"; platform_version = $null; arch = "x86"} } @{ ReleaseName = "python-3.9.0-beta.2-win32-x86.zip"; ExpectedResult = @{ platform = "win32"; platform_version = $null; arch = "x86"} }
) | ForEach-Object { $_.Configuration = $Configuration; $_ } ) | ForEach-Object { $_.Configuration = $Configuration; $_ }

View File

@@ -2,7 +2,9 @@ param (
[semver] [Parameter (Mandatory = $true)] [ValidateNotNullOrEmpty()] [semver] [Parameter (Mandatory = $true)] [ValidateNotNullOrEmpty()]
$Version, $Version,
[string] [Parameter (Mandatory = $true)] [ValidateNotNullOrEmpty()] [string] [Parameter (Mandatory = $true)] [ValidateNotNullOrEmpty()]
$Platform $Platform,
[string] [Parameter (Mandatory = $true)] [ValidateNotNullOrEmpty()]
$Architecture
) )
Import-Module (Join-Path $PSScriptRoot "../helpers/pester-extensions.psm1") Import-Module (Join-Path $PSScriptRoot "../helpers/pester-extensions.psm1")
@@ -56,7 +58,7 @@ Describe "Tests" {
# } # }
# } # }
if (($Version -ge "3.2.0") -and -not ([semver]"$($Version.Major).$($Version.Minor)" -eq [semver]"3.11" -and $Version.PreReleaseLabel)) { if (($Version -ge "3.2.0") -and ($Version -lt "3.11.0") -and (($Platform -ne "darwin") -or ($Architecture -ne "arm64"))) {
It "Check if sqlite3 module is installed" { It "Check if sqlite3 module is installed" {
"python ./sources/python-sqlite3.py" | Should -ReturnZeroExitCode "python ./sources/python-sqlite3.py" | Should -ReturnZeroExitCode
} }
@@ -80,7 +82,7 @@ Describe "Tests" {
It "Check if python configuration is correct" { It "Check if python configuration is correct" {
$nativeVersion = Convert-Version -version $Version $nativeVersion = Convert-Version -version $Version
"python ./sources/python-config-test.py $Version $nativeVersion" | Should -ReturnZeroExitCode "python ./sources/python-config-test.py $Version $nativeVersion $Architecture" | Should -ReturnZeroExitCode
} }
It "Check if shared libraries are linked correctly" { It "Check if shared libraries are linked correctly" {
@@ -93,7 +95,8 @@ Describe "Tests" {
It "Validate Pyinstaller" { It "Validate Pyinstaller" {
"pip install pyinstaller" | Should -ReturnZeroExitCode "pip install pyinstaller" | Should -ReturnZeroExitCode
"pyinstaller --onefile ./sources/simple-test.py" | Should -ReturnZeroExitCode "pyinstaller --onefile ./sources/simple-test.py" | Should -ReturnZeroExitCode
"./dist/simple-test" | Should -ReturnZeroExitCode $distPath = [IO.Path]::Combine($pwd, "dist", "simple-test")
"$distPath" | Should -ReturnZeroExitCode
} }
} }

View File

@@ -1,6 +1,4 @@
import distutils.sysconfig
import sysconfig import sysconfig
from pprint import pprint from pprint import pprint
pprint(sysconfig.get_config_vars()) pprint(sysconfig.get_config_vars())
pprint(distutils.sysconfig.get_config_vars())

View File

@@ -1,5 +1,3 @@
import distutils.sysconfig
from distutils.version import LooseVersion
import sysconfig import sysconfig
import sys import sys
import platform import platform
@@ -9,12 +7,13 @@ import os
os_type = platform.system() os_type = platform.system()
version = sys.argv[1] version = sys.argv[1]
nativeVersion = sys.argv[2] nativeVersion = sys.argv[2]
architecture = sys.argv[3]
versions=version.split(".") versions=version.split(".")
version_major=int(versions[0]) version_major=int(versions[0])
version_minor=int(versions[1]) version_minor=int(versions[1])
pkg_installer = os_type == 'Darwin' and (version_major == 3 and version_minor >= 11) pkg_installer = os_type == 'Darwin' and ((version_major == 3 and version_minor >= 11) or (architecture == "arm64"))
lib_dir_path = sysconfig.get_config_var('LIBDIR') lib_dir_path = sysconfig.get_config_var('LIBDIR')
ld_library_name = sysconfig.get_config_var('LDLIBRARY') ld_library_name = sysconfig.get_config_var('LDLIBRARY')
@@ -40,7 +39,7 @@ if lib_dir_path != expected_lib_dir_path:
### Validate shared libraries ### Validate shared libraries
if is_shared: if is_shared:
print('%s was built with shared extensions' % ld_library_name) print('%s was built with shared extensions' % ld_library_name)
### Validate libpython extension ### Validate libpython extension
ld_library_extension = ld_library_name.split('.')[-1] ld_library_extension = ld_library_name.split('.')[-1]
if ld_library_extension != expected_ld_library_extension: if ld_library_extension != expected_ld_library_extension:
@@ -54,7 +53,7 @@ else:
### Validate macOS ### Validate macOS
if os_type == 'Darwin': if os_type == 'Darwin':
### Validate openssl links ### Validate openssl links
if LooseVersion(nativeVersion) < LooseVersion("3.7.0"): if version_major == 3 and version_minor < 7:
expected_ldflags = '-L/usr/local/opt/openssl@1.1/lib' expected_ldflags = '-L/usr/local/opt/openssl@1.1/lib'
ldflags = sysconfig.get_config_var('LDFLAGS') ldflags = sysconfig.get_config_var('LDFLAGS')
@@ -64,7 +63,7 @@ if os_type == 'Darwin':
else: else:
expected_openssl_includes = '-I/usr/local/opt/openssl@1.1/include' expected_openssl_includes = '-I/usr/local/opt/openssl@1.1/include'
expected_openssl_ldflags ='-L/usr/local/opt/openssl@1.1/lib' expected_openssl_ldflags ='-L/usr/local/opt/openssl@1.1/lib'
openssl_includes = sysconfig.get_config_var('OPENSSL_INCLUDES') openssl_includes = sysconfig.get_config_var('OPENSSL_INCLUDES')
openssl_ldflags = sysconfig.get_config_var('OPENSSL_LDFLAGS') openssl_ldflags = sysconfig.get_config_var('OPENSSL_LDFLAGS')
@@ -78,6 +77,7 @@ if os_type == 'Darwin':
exit(1) exit(1)
### Validate libreadline ### Validate libreadline
if not have_libreadline: if sys.version_info < (3, 12):
print('Missing libreadline') if not have_libreadline:
exit(1) print('Missing libreadline')
exit(1)

View File

@@ -7,7 +7,6 @@ from __future__ import print_function
import importlib import importlib
import sys import sys
import platform
# The Python standard library as of Python 3.0 # The Python standard library as of Python 3.0
standard_library = [ standard_library = [
@@ -266,10 +265,35 @@ if sys.version_info >= (3, 10):
if sys.version_info >= (3, 11): if sys.version_info >= (3, 11):
standard_library.remove('binhex') standard_library.remove('binhex')
# Exclude tkinter and turtle for Python 3.11 alpha temporarily # 'smtpd', 'asyncore' and 'asynchat' modules have been removed from Python 3.12
if sys.version_info >= (3, 11) and platform.system() == 'Linux' and '18.04' in platform.version(): # https://docs.python.org/dev/whatsnew/3.12.html
standard_library.remove('tkinter') if sys.version_info >= (3, 12):
standard_library.remove('turtle') standard_library.remove('distutils')
standard_library.remove('imp')
standard_library.remove('smtpd')
standard_library.remove('asyncore')
standard_library.remove('asynchat')
# 'aifc', 'cgi', 'cgitb', 'chunk', 'crypt', 'imghdr', 'lib2to3', 'mailcap', 'nntplib',
# 'pipes', 'sndhdr', 'sunau', 'telnetlib', 'uu' and 'xdrlib' modules have been removed
# from Python 3.13
# https://docs.python.org/dev/whatsnew/3.13.html
if sys.version_info >= (3, 13):
standard_library.remove('aifc')
standard_library.remove('cgi')
standard_library.remove('cgitb')
standard_library.remove('chunk')
standard_library.remove('crypt')
standard_library.remove('imghdr')
standard_library.remove('lib2to3')
standard_library.remove('mailcap')
standard_library.remove('nntplib')
standard_library.remove('pipes')
standard_library.remove('sndhdr')
standard_library.remove('sunau')
standard_library.remove('telnetlib')
standard_library.remove('uu')
standard_library.remove('xdrlib')
# Remove tkinter and Easter eggs # Remove tkinter and Easter eggs
excluded_modules = [ excluded_modules = [

File diff suppressed because it is too large Load Diff