Compare commits

..

441 Commits

Author SHA1 Message Date
github-actions[bot]
94c566800e Update versions-manifest (#344)
Co-authored-by: Service account <no-reply@microsoft.com>
2025-06-12 11:00:59 -05:00
github-actions[bot]
7c0308cd7d Update versions-manifest (#342)
Co-authored-by: Service account <no-reply@microsoft.com>
2025-06-04 12:36:07 -05:00
github-actions[bot]
bcf6ecc82e Update versions-manifest (#341)
Co-authored-by: Service account <no-reply@microsoft.com>
2025-05-28 00:12:01 -05:00
Matthieu Darbois
2eea8c8fed chore: use windows-11-arm runner instead of custom one (#338)
This allows contributors to test on GitHub hosted Windows ARM64 runners easily now that those runners are available for free for public repositories
2025-05-27 13:36:58 -05:00
Max Schmitt
56544d4840 fix(windows): verbose output on Windows (#339) 2025-05-15 22:11:05 -05:00
github-actions[bot]
96e291c21e Update versions-manifest (#340)
Co-authored-by: Service account <no-reply@microsoft.com>
2025-05-07 23:34:45 -05:00
Hugo van Kemenade
d5e8ad6406 Remove EOL Python code, set 3.9 as base, add 3.14 stdlib module (#317)
* Remove redundant Python 2 code

* Use Python 3.2 as base version

* Use Python 3.3 as base version

* Use Python 3.4 as base version

* Use Python 3.5 as base version

* Use Python 3.6 as base version

* Use Python 3.7 as base version

* Use Python 3.8 as base version

* Use Python 3.9 as base version

* Add annotationlib for Python 3.14

* Fix syntax error
2025-04-24 15:29:21 -05:00
aparnajyothi-y
5c01d17435 Remove Ubuntu 20.04 and Update Stable and Unstable Versions for Tests (#336)
* Remove ubuntu-20.04 and updated the stable and unstable test cases

* arch update for freethreaded

* Remove duplicate 'ubuntu-latest' from matrix OS

---------

Co-authored-by: Haritha <73516759+HarithaVattikuti@users.noreply.github.com>
2025-04-16 12:06:27 -05:00
Matthieu Darbois
bc5b4d5490 chore: use ubuntu-*-arm runners instead of custom ones (#330)
This allows contributors to test on GitHub hosted Linux ARM64 runners easily now that those runners are available for free for public repositories: https://github.blog/changelog/2025-01-16-linux-arm64-hosted-runners-now-available-for-free-in-public-repositories-public-preview/
2025-04-15 14:45:36 -05:00
github-actions[bot]
a12e3a2eaa Update versions-manifest (#337)
Co-authored-by: Service account <no-reply@microsoft.com>
2025-04-09 11:22:45 -05:00
github-actions[bot]
5ebefacc0b Update versions-manifest (#335)
Co-authored-by: Service account <no-reply@microsoft.com>
2025-03-17 12:17:01 -05:00
github-actions[bot]
1c10cada84 Update versions-manifest (#334)
Co-authored-by: Service account <no-reply@microsoft.com>
2025-03-10 13:40:46 -05:00
github-actions[bot]
3854fb534e Update versions-manifest (#333)
Co-authored-by: Service account <no-reply@microsoft.com>
2025-02-24 12:29:37 -06:00
Sam Gross
d456108e6b Support building free-threaded CPython (#319)
* Support building free-threaded CPython

Add support for Python's free threading build mode where the global
interpreter lock is disabled. The packages are marked using a suffix on
the architecture, like 'x64-freethreaded' or 'arm64-freethreaded'.

* Match '-freethreaded' in arch

* Use type 'string' instead of 'str'

* On Linux, only delete Python installations with the same architecture.

This matches the macOS behavior and allows users to install both the
free-threading and default builds at the same time.
2025-02-20 08:42:21 -06:00
github-actions[bot]
e550a75036 Update versions-manifest (#332)
Co-authored-by: Service account <no-reply@microsoft.com>
2025-02-12 09:42:34 -06:00
github-actions[bot]
4f85d6a62f Update versions-manifest (#331)
Co-authored-by: Service account <no-reply@microsoft.com>
2025-02-05 09:02:58 -06:00
github-actions[bot]
e5b79ff409 Update versions-manifest (#329)
Co-authored-by: Service account <no-reply@microsoft.com>
2025-01-15 09:24:57 -06:00
priya-kinthali
4cee44596d Enhance workflows: Add Ubuntu-24 Testing (#326)
* include ubuntu24 testing in workflows

* included macos-13 testing
2024-12-19 13:08:49 -06:00
github-actions[bot]
d7df8df9ba Update versions-manifest (#327)
Co-authored-by: Service account <no-reply@microsoft.com>
2024-12-18 11:26:47 -06:00
github-actions[bot]
54c77b6778 Update versions-manifest (#325)
Co-authored-by: Service account <no-reply@microsoft.com>
2024-12-16 10:23:58 -06:00
HarithaVattikuti
87721c9ae3 Fix tkinter issues (#324) 2024-12-12 12:49:43 -06:00
github-actions[bot]
5bbc2cab12 Update versions-manifest (#322)
Co-authored-by: Service account <no-reply@microsoft.com>
2024-12-04 13:29:08 -06:00
github-actions[bot]
771cbab387 Update versions-manifest (#321)
Co-authored-by: Service account <no-reply@microsoft.com>
2024-11-20 08:31:56 -06:00
aparnajyothi-y
7069021fff Update openssl 1.1 to 3 (#316)
* Update openssl to 3

* openssl update 3
2024-11-04 19:18:59 -06:00
priya-kinthali
d8ae6ee095 updated the latest versions and included macos-13 (#315) 2024-10-21 15:25:52 -05:00
github-actions[bot]
dd24c2e5e7 Update versions-manifest (#314)
Co-authored-by: Service account <no-reply@microsoft.com>
2024-10-16 11:26:00 -05:00
github-actions[bot]
48bcef9764 Update versions-manifest (#312)
Co-authored-by: Service account <no-reply@microsoft.com>
2024-10-08 09:52:56 -05:00
github-actions[bot]
5d096de548 Update versions-manifest (#310)
Co-authored-by: Service account <no-reply@microsoft.com>
2024-10-07 22:28:59 -05:00
github-actions[bot]
b0ba1dbe1e Update versions-manifest (#309)
Co-authored-by: Service account <no-reply@microsoft.com>
2024-10-03 11:32:43 -05:00
github-actions[bot]
8eb4ff3a92 Update versions-manifest (#308)
Co-authored-by: Service account <no-reply@microsoft.com>
2024-10-02 23:40:17 -05:00
github-actions[bot]
98e79473eb Update versions-manifest (#307)
Co-authored-by: Service account <no-reply@microsoft.com>
2024-09-30 14:52:11 -05:00
github-actions[bot]
16955773ac Update versions-manifest (#306)
Co-authored-by: Service account <no-reply@microsoft.com>
2024-09-09 14:30:08 -05:00
github-actions[bot]
c41d908608 Update versions-manifest (#305)
Co-authored-by: Service account <no-reply@microsoft.com>
2024-08-29 11:27:37 -05:00
aparnajyothi-y
8dd72e5592 Fix for the build failures on the self-hosted Ubuntu 24.04 arm64 runner for no restart (#304)
* Update build-python-packages.yml

* Update build-python-packages.yml

* fix for ubuntu 24.04 issue for no restart
2024-08-29 09:03:33 -05:00
github-actions[bot]
b8cfd51f65 Update versions-manifest (#303)
Co-authored-by: Service account <no-reply@microsoft.com>
2024-08-13 23:24:55 -05:00
aparnajyothi-y
bb9054d05d Fix for the build failures on the ubuntu 24.04 runner (#302)
* Update build-python-packages.yml

* Update build-python-packages.yml
2024-08-13 14:11:29 -05:00
github-actions[bot]
c8a840c660 Update versions-manifest (#301)
Co-authored-by: Service account <no-reply@microsoft.com>
2024-08-07 10:12:25 -05:00
github-actions[bot]
b423327e4a Update versions-manifest (#300)
Co-authored-by: Service account <no-reply@microsoft.com>
2024-08-06 08:44:31 -05:00
aparnajyothi-y
2f8ab97baf Fix for the Codeql-analysis.yml workflow failure (#299)
* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml

* Update codeql-analysis.yml
2024-07-25 08:47:57 -05:00
github-actions[bot]
9d3be767fc Update versions-manifest (#298)
Co-authored-by: Service account <no-reply@microsoft.com>
2024-07-22 08:53:23 -05:00
github-actions[bot]
80d68b2b90 Update versions-manifest (#297)
Co-authored-by: Service account <no-reply@microsoft.com>
2024-07-17 17:08:23 -05:00
github-actions[bot]
2438e271b9 Update versions-manifest (#296)
Co-authored-by: Service account <no-reply@microsoft.com>
2024-07-16 08:56:00 -05:00
HarithaVattikuti
3970f04eb4 Add support for Ubuntu 24 arm64 runner (#294)
* Add support for Ubuntu 24 arm64 runner

* Update macos runner
2024-07-15 16:15:55 -05:00
github-actions[bot]
57f2d897a8 Update versions-manifest (#293)
Co-authored-by: Service account <no-reply@microsoft.com>
2024-07-01 08:35:03 -05:00
github-actions[bot]
0c9a1f7cd6 Update versions-manifest (#292)
Co-authored-by: Service account <no-reply@microsoft.com>
2024-06-26 12:15:49 -05:00
aparnajyothi-y
0e5f00e5d0 Add windows arm64 support (#291)
* Update build-python-packages.yml

* windows arm64 support

* Update build-python-packages.yml

* Update build-python-packages.yml

* Update build-python-packages.yml

* Update build-python-packages.yml

* Update build-python-packages.yml
2024-06-25 13:14:08 -05:00
github-actions[bot]
1d2e861434 Update versions-manifest (#289)
Co-authored-by: Service account <no-reply@microsoft.com>
2024-06-23 23:48:32 -05:00
Matthieu Darbois
d55f04f8e6 build ubuntu-22.04_arm64 on setup-actions-ubuntu-arm64-2-core (#280) 2024-06-20 08:10:34 -05:00
Priya Gupta
cb2aecd6d9 Add Support for Linux arm64 Builds (#274)
* Included ubuntu-arm64 in  Build Python package yml

* Updated builder and installer scripts

* Updated test scripts

* Modified test file

* Replaced macos-11 with macos-13

* Update build-python-packages.yml
2024-06-13 09:17:40 -05:00
github-actions[bot]
1c85886f9c Update versions-manifest (#284)
Co-authored-by: Service account <no-reply@microsoft.com>
2024-06-11 21:40:26 -05:00
HarithaVattikuti
f14b797a5d Fix for corrupted published artifacts (#286)
* Add skippublishercheck

* Update download-artifact

* Remove skipcheck
2024-06-11 11:36:42 -05:00
HarithaVattikuti
cc396a6be6 Add skippublishercheck (#283) 2024-06-10 09:35:28 -05:00
HarithaVattikuti
1693c7defb Revert "Update versions-manifest (#281)" (#282)
This reverts commit 8108f421b7.
2024-06-10 08:28:48 -05:00
github-actions[bot]
8108f421b7 Update versions-manifest (#281)
Co-authored-by: Service account <no-reply@microsoft.com>
2024-06-09 23:48:30 -05:00
Priya Gupta
8bbb5413e0 Update build-python-packages.yml (#279) 2024-06-09 23:03:19 -05:00
Matthieu Darbois
c990e6da95 chore: update action versions (#267)
This removes Node.js 16 deprecation warnings
2024-05-22 08:08:47 -05:00
HarithaVattikuti
521be20d1e Updated arm64 versions (#273) 2024-05-10 12:16:17 -05:00
github-actions[bot]
064829bd03 Update versions-manifest (#272)
Co-authored-by: Service account <no-reply@microsoft.com>
2024-05-09 21:56:46 -05:00
github-actions[bot]
b77a7dee85 Update versions-manifest (#270)
Co-authored-by: Service account <no-reply@microsoft.com>
2024-05-09 10:10:04 -05:00
Matthieu Darbois
37e7166250 fix: always reinstall pip (#271)
* fix: always reinstall pip

If the default pip version is also the latest one,
then the `pip` executable will be missing as the default pip
is installed only as `pip3`/`pip3.x`.

In order to always provide a `pip` executable, always reinstall pip.

* chore(ci): change default version to 3.12.3

Default to the latest stable version.
2024-05-09 08:58:58 -05:00
Matthieu Darbois
eb9433f569 feat: add ubuntu-24.04 (#269)
* feat: add ubuntu-24.04

* chore: drop support for Python 2.x builds
2024-05-08 08:33:12 -05:00
Matthieu Darbois
7c3d29faf2 fix: use --upgrade rather than --ignore-installed to upgrade pip (#268)
* fix: use `--upgrade` rather than `--ignore-installed` to upgrade pip

This removes left over files when upgrading pip.

* remove all installed python on macOS
2024-05-08 08:32:38 -05:00
github-actions[bot]
c03f98f186 Update versions-manifest (#266)
Co-authored-by: Service account <no-reply@microsoft.com>
2024-04-29 09:49:41 -05:00
Matthieu Darbois
2573fc9af9 fix: use environment variable for PIP_ROOT_USER_ACTION (#265)
* fix: error out on install failure in "Apply build artifact to the local machine" step

* fix: error out on pip installation / update failure

* fix: use environment variable for `PIP_ROOT_USER_ACTION`

This extends the fix from #259 since every platform for 3.8.10 / 3.9.13 has been rebuilt instead of just macOS arm64 being added.

The regression was introduced in #223
2024-04-29 08:32:44 -05:00
github-actions[bot]
b643f0d07f Update versions-manifest (#264)
Co-authored-by: Service account <no-reply@microsoft.com>
2024-04-25 09:25:58 -05:00
Matthieu Darbois
29394d0042 fix: use environment variable for PIP_ROOT_USER_ACTION (#259)
The option does not exists in every pip version, using the environment variable allows for pip not to fail in this case.
2024-04-24 22:44:10 -05:00
github-actions[bot]
3545308dfe Update versions-manifest (#263)
Co-authored-by: Service account <no-reply@microsoft.com>
2024-04-10 08:55:23 -05:00
github-actions[bot]
fa96e2aca9 Update versions-manifest (#262)
Co-authored-by: Service account <no-reply@microsoft.com>
2024-04-03 08:08:11 -05:00
github-actions[bot]
1dbece3419 Update versions-manifest (#261)
Co-authored-by: Service account <no-reply@microsoft.com>
2024-03-20 23:04:31 -05:00
github-actions[bot]
627cd1691f Update versions-manifest (#260)
Co-authored-by: Service account <no-reply@microsoft.com>
2024-03-12 22:55:28 -05:00
github-actions[bot]
c685daccab Update versions-manifest (#258)
Co-authored-by: Service account <no-reply@microsoft.com>
2024-02-16 09:17:14 -06:00
HarithaVattikuti
eaf1258a7f version update (#257) 2024-02-14 11:34:20 -06:00
github-actions[bot]
9903e2d963 Update versions-manifest (#256)
Co-authored-by: Service account <no-reply@microsoft.com>
2024-02-07 22:49:09 -06:00
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
github-actions[bot]
1982aae0b6 Update versions-manifest (#190)
Co-authored-by: Service account <no-reply@microsoft.com>
2022-10-03 11:09:51 +02:00
Matthieu Darbois
1e1d9f9032 fix: setup OpenSSL certificates in macos-pkg-setup-template.sh (#189)
The macOS pkg installer does not setup default certificates for OpenSSL.
A script is provided by the macOS pkg installer to setup those using the certifi PyPI package.
Let's run this script as part of the setup template in order to be able to do HTTPS downloads out of the box.
2022-10-03 10:13:05 +02:00
Marko Zivic
a1a012d197 Merge pull request #188 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 09/15/2022
2022-09-15 13:28:01 +02:00
Service account
ff7fd271bf Update versions-manifest 2022-09-15 08:54:58 +00:00
Sergey Dolin
3b05f53807 Instal osx python from prebuilt packagese (#184)
* Download osx packages and setup script

* install from pkg for 3.11 only

* More debug

* More debug

* fix version check

* New-Item build_output.txt

* installationTemplateLocation

* fix version

* fix beta version

* fix building from source

* fix building from source

* fix pkg name

* fix setup.sh

* fix test

* Fix config test with semver

* Fix PYTHON_MAJOR_MINOR

* migrate from .format to interpolation

* add PYTHON_FRAMEWORK_PATH variable

* improve pkg condition
2022-09-15 10:31:47 +02:00
Mikhail Timofeev
a28c508174 Merge pull request #187 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 09/12/2022
2022-09-12 18:37:00 +03:00
Service account
9db1c7f445 Update versions-manifest 2022-09-12 15:35:21 +00:00
Mikhail Timofeev
41636d5136 Merge pull request #186 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 09/07/2022
2022-09-07 18:19:40 +03:00
Service account
18ea6bb558 Update versions-manifest 2022-09-07 15:08:24 +00:00
Mikhail Timofeev
a22c344dd0 Merge pull request #185 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 09/06/2022
2022-09-06 18:44:30 +03:00
Service account
ae0a460cc0 Update versions-manifest 2022-09-06 15:31:15 +00:00
github-actions[bot]
c8b327c44a Update versions-manifest (#183)
Co-authored-by: Service account <no-reply@microsoft.com>
2022-08-10 09:52:56 +02:00
Marko Zivic
e1b4a49828 Merge pull request #154 from actions/aloviedo-patch-1
Create codeql-analysis.yml
2022-08-03 10:25:26 +02:00
Mikhail Timofeev
42d1484d64 Merge pull request #182 from actions/update-versions-manifest-file 2022-08-02 19:43:45 +04:00
Service account
e41999429c Update versions-manifest 2022-08-02 15:39:41 +00:00
Mikhail Timofeev
241f220314 Merge pull request #180 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 07/27/2022
2022-07-27 19:33:15 +04:00
Service account
49da3d9917 Update versions-manifest 2022-07-27 06:38:20 +00:00
Marko Zivic
88aa9c4b9e Merge pull request #179 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 07/22/2022
2022-07-22 13:33:20 +02:00
Service account
d4c91ae863 Update versions-manifest 2022-07-22 10:49:38 +00:00
Marko Zivic
0f8d1383b5 Merge pull request #178 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 07/22/2022
2022-07-22 12:42:56 +02:00
Service account
ee30dbfe58 Update versions-manifest 2022-07-22 09:32:14 +00:00
Marko Zivic
f64b4b67c1 Merge pull request #177 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 07/13/2022
2022-07-13 11:14:43 +02:00
Service account
d57d1eae31 Update versions-manifest 2022-07-13 06:49:01 +00:00
Vladimir Safonkin
714163cc44 Disable universal2 macOS builds (#175)
* Disable universal2 macOS builds

* Debug

* Disable universal build and tcl test
2022-07-11 16:09:47 +02:00
Marko Zivic
eaa180e241 Merge pull request #174 from brcrista/patch-1
Document why we build from source on macOS
2022-06-29 15:49:14 +02:00
Brian Cristante
12ba6443e8 Document why we build from source on macOS 2022-06-28 11:50:54 -04:00
Marko Zivic
73379f970f Merge pull request #171 from akv-platform/v-sdolin/issue-402
Explicitly link brew tcl/tk
2022-06-27 09:18:28 +02:00
Marko Zivic
8a2b258410 Merge pull request #173 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 06/20/2022
2022-06-20 16:39:35 +02:00
Service account
d974a7a429 Update versions-manifest 2022-06-20 14:34:17 +00:00
Mikhail Koliada
34c0e9a4d6 [macOS] fix 3.8.13 build (#172) 2022-06-20 16:09:51 +02:00
Sergey Dolin
edcd32dbf1 Check tcltk for any platform and version 2022-06-18 14:48:22 +02:00
Sergey Dolin
045abfcc36 Print versions 2022-06-17 12:53:40 +02:00
Sergey Dolin
6524532238 Add test 2022-06-17 11:50:52 +02:00
Sergey Dolin
0f97bcdc23 Explicity set tcl/tk library 2022-06-17 09:08:45 +02:00
Mikhail Timofeev
bf3c64f950 Merge pull request #170 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 06/07/2022
2022-06-07 11:10:20 +04:00
Service account
f59a9522eb Update versions-manifest 2022-06-07 06:59:43 +00:00
github-actions[bot]
290229025b Update versions-manifest (#169)
Co-authored-by: Service account <no-reply@microsoft.com>
2022-06-06 14:29:55 +02:00
Vladimir Safonkin
5aad86b0d9 Merge pull request #167 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 06/02/2022
2022-06-02 20:52:19 +02:00
Vladimir Safonkin
52b4d85b8e Merge pull request #114 from bwoodsend/universal2
Compile in universal2 mode for macOS Python >= 3.9.1.
2022-06-02 16:28:49 +02:00
Service account
34e7ffccfb Update versions-manifest 2022-06-02 10:36:23 +00:00
Vladimir Safonkin
c3505cc6ce Merge pull request #166 from vsafonkin/v-vsafonkin/update-action-version
Bump setup-python action to v3 in the builder and test workflow.
2022-06-02 12:02:26 +02:00
Vladimir Safonkin
15394f2e9d Bump setup-python action to v3 2022-06-02 11:11:55 +02:00
Marko Zivic
22f110545c Merge pull request #165 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 06/02/2022
2022-06-02 10:07:33 +02:00
Service account
46959ea985 Update versions-manifest 2022-06-02 07:42:15 +00:00
Vladimir Safonkin
b7ef994bae Merge pull request #164 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 06/01/2022
2022-06-01 10:35:19 +02:00
Service account
687538e9a4 Update versions-manifest 2022-06-01 06:34:41 +00:00
Mikhail Timofeev
1d967fc811 Merge pull request #163 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 05/18/2022
2022-05-18 14:53:41 +04:00
Service account
bbe229eb2e Update versions-manifest 2022-05-18 07:24:59 +00:00
bwoodsend
3c5fa6de18 Compile in universal2 mode for macOS Python >= 3.9.1.
Using `universal2` Python environments is currently the only way to build Python
wheels which support macOS M1.
2022-05-15 19:04:56 +01:00
Mikhail Timofeev
0d45fa8df4 Merge pull request #162 from actions/update-versions-manifest-file 2022-05-08 20:19:03 +04:00
Service account
f41dd90d80 Update versions-manifest 2022-05-08 15:31:51 +00:00
Marko Zivic
b104d17dcc Merge pull request #161 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 05/04/2022
2022-05-04 11:35:03 +02:00
Service account
8f6a357755 Update versions-manifest 2022-05-04 09:06:41 +00:00
Mikhail Timofeev
53bd6a1e0c Merge pull request #160 from mikhailkoliada/add_ubuntu22-04
Add Ubuntu22.04 support
2022-05-04 11:28:14 +04:00
Mikhail Koliada
8fd7008b44 Add Ubuntu22.04 support 2022-05-03 19:18:56 +02:00
Marko Zivic
1b8db98a89 Merge pull request #159 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 04/29/2022
2022-04-29 11:48:58 +02:00
Service account
2b001ef9b4 Update versions-manifest 2022-04-29 08:39:35 +00:00
Marko Zivic
dfcce03e53 Merge pull request #157 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 04/15/2022
2022-04-15 12:40:43 +02:00
Service account
c58bf9c525 Update versions-manifest 2022-04-15 06:22:48 +00:00
Vladimir Safonkin
fb0cb927f6 Merge pull request #155 from vsafonkin/v-vsafonkin/python-3.11.0-alpha-7
Exclude tkinter and turtle for Python 3.11.0 alpha7 on Ubuntu 18.04
2022-04-12 19:08:12 +03:00
Vladimir Safonkin
a1129e9e45 Exclude tkinter and turtle for Python 3.11.0 alpha7 on Ubuntu 18.04 2022-04-11 09:04:36 +02:00
aloviedo
7d68c84e28 Create codeql-analysis.yml 2022-03-30 06:49:36 -07:00
Ethan Chiu
7e0253ff52 Merge pull request #153 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 03/24/2022
2022-03-24 11:47:07 -07:00
Ethan Chiu
769f6822ee Merge branch 'main' into update-versions-manifest-file 2022-03-24 11:46:23 -07:00
Service account
18aeba4a09 Update versions-manifest 2022-03-24 18:06:51 +00:00
Mikhail Timofeev
5f1fbb8e56 Merge pull request #152 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 03/24/2022
2022-03-24 22:06:29 +04:00
Service account
cda7fd9128 Update versions-manifest 2022-03-24 18:04:48 +00:00
Ethan Chiu
5ce03b9d33 Merge pull request #151 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 03/24/2022
2022-03-24 07:30:07 -07:00
Service account
daf0a68842 Update versions-manifest 2022-03-24 14:26:38 +00:00
Ethan Chiu
78b21b7354 Merge pull request #150 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 03/21/2022
2022-03-21 13:47:28 -07:00
Service account
ce8fa50334 Update versions-manifest 2022-03-21 20:31:43 +00:00
Ethan Chiu
8bea4cf3f8 Merge pull request #149 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 03/21/2022
2022-03-21 10:19:11 -07:00
Service account
cf55c35a73 Update versions-manifest 2022-03-21 17:06:45 +00:00
Ethan Chiu
b4ee3eb7b0 Merge pull request #148 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 03/21/2022
2022-03-21 10:01:42 -07:00
Service account
153004cc91 Update versions-manifest 2022-03-21 16:00:38 +00:00
Mikhail Timofeev
3d1cc99059 Merge pull request #147 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 03/19/2022
2022-03-20 23:53:10 +04:00
Service account
ce7d5698da Update versions-manifest 2022-03-19 19:32:06 +00:00
Ethan Chiu
386cf095d8 Merge pull request #146 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 03/17/2022
2022-03-17 12:22:11 -07:00
Service account
2552b10e27 Update versions-manifest 2022-03-17 19:09:53 +00:00
Ethan Chiu
cd04e6bb36 Merge pull request #142 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 03/17/2022
2022-03-17 11:35:53 -07:00
Service account
0cbb516273 Update versions-manifest 2022-03-17 03:48:11 +00:00
Maksim Shilov
ba3a558474 Remove AzDo related code (#144) 2022-02-25 20:02:07 +03:00
Mikhail Timofeev
79e9e3beab Merge pull request #143 from nikolai-frolov/users/v-nfrolov/update-python-builder
Add ability to choose platform to build Python
2022-02-21 11:11:41 +03:00
Maksim Shilov
e74fccfe13 Adding python-versions-runner workflow (#137) 2022-02-18 15:14:27 +03:00
nikolai-frolov
044e2816fb Minor corrections according to comments 2022-02-18 13:18:51 +03:00
nikolai-frolov
588fb9d893 Update generate_matrix job to allow execution via PR 2022-02-17 11:55:26 +03:00
nikolai-frolov
3ec6c98bc8 Add ability to choose platform to build Python 2022-02-16 20:42:04 +03:00
github-actions[bot]
797eb71c41 Update versions-manifest (#141)
Co-authored-by: Service account <no-reply@microsoft.com>
2022-02-07 10:44:15 +03:00
github-actions[bot]
210583e703 Update versions-manifest (#140)
Co-authored-by: Service account <no-reply@microsoft.com>
2022-02-04 11:51:05 +03:00
github-actions[bot]
8cfdc61c3b Update versions-manifest (#139)
Co-authored-by: Service account <no-reply@microsoft.com>
2022-02-03 10:43:25 +03:00
github-actions[bot]
b27516266f Update versions-manifest (#138)
Co-authored-by: Service account <no-reply@microsoft.com>
2022-01-27 10:54:24 +03:00
Dmitry Shibanov
8beb652c81 extend check for all alpha versions of 3.11 python (#136) 2022-01-27 10:23:10 +03:00
Mikhail Timofeev
7e70acf5f2 Merge pull request #135 from mikhailkoliada/migrate_to_pester5
Migrate build pipeline to Pester v5
2022-01-25 11:28:40 +03:00
Mikhail Koliada
135879dbe3 assign results to a var 2022-01-24 20:31:33 +03:00
Mikhail Timofeev
765df7c393 Merge pull request #134 from shilovmaksim/shilovmaksim/get-python-versions
Migrate get-python-packages workflow from ado to gh
2022-01-24 11:03:27 +03:00
Mikhail Koliada
811f1bc41a install latest pester 2022-01-21 13:26:46 +03:00
Mikhail Koliada
133a2c6b96 Migrate build pipeline to Pester v5 2022-01-21 12:55:40 +03:00
Maksim Shilov
ba826d5d0b Correct names for workflow, jobs and workflows to trigger 2022-01-21 12:06:50 +03:00
Maksim Shilov
9975c96a92 Migrate get-python-packages to gh 2022-01-21 11:56:38 +03:00
Mikhail Timofeev
a5914bfabd Merge pull request #132 from mikhailkoliada/python_versions_gh_migrate
Migrate python-versions pipeline from AzDO to GH Actions
2022-01-17 10:54:57 +03:00
github-actions[bot]
af28f23a02 Update versions-manifest (#133)
Co-authored-by: Service account <no-reply@microsoft.com>
2022-01-16 18:47:43 +03:00
Mikhail Koliada
e3851845a3 Update python-builder.psm1 2022-01-15 14:28:07 +03:00
Mikhail Koliada
3beea61c1f specify architecture on setup 2022-01-14 19:56:43 +03:00
Mikhail Koliada
41f641758a another round of improvements 2022-01-14 19:53:00 +03:00
Mikhail Koliada
3792b6282a misc improvements 2022-01-14 12:03:40 +03:00
Mikhail Koliada
4a2af81ac1 Update .github/workflows/python-builder.yml
Co-authored-by: Mikhail Timofeev <48208649+miketimofeev@users.noreply.github.com>
2022-01-13 19:27:50 +03:00
Mikhail Koliada
59e54b2d8b Migrate python-versions pipeline to GH Actions 2022-01-13 18:38:58 +03:00
Mikhail Timofeev
c310309d73 Merge pull request #131 from actions/v-mkoliada/switch_to_win2019
Migrate windows pipelines to windows-2019
2021-12-22 16:50:33 +03:00
Mikhail Koliada
026f6eb35e Migrate windows pipelines to windows-2019 2021-12-22 14:34:13 +03:00
Mikhail Timofeev
71d3f7dafc Merge pull request #130 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 12/22/2021
2021-12-22 13:54:20 +03:00
Service account
79fa4f7a23 Update versions-manifest 2021-12-22 10:53:57 +00:00
Mikhail Timofeev
63966c6b23 Merge pull request #128 from actions/v-mkoliada/clean_macos-10.15_migration
Migrate macOS pipelines to macOS-10.15
2021-12-22 13:02:02 +03:00
Mikhail Koliada
e9b568c830 Migrate macOS pipelines to macOS-10.15 2021-12-22 12:34:45 +03:00
Mikhail Timofeev
9e322ab404 Merge pull request #129 from actions/python3.11_sqlite
Skip sqlite module test for python3.11.0-alpha.3
2021-12-22 10:58:11 +03:00
Mikhail Koliada
1499930abd Skip sqlite module test for python3.11 2021-12-21 20:51:08 +03:00
Mikhail Timofeev
5aa825ba9f Merge pull request #127 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 12/14/2021
2021-12-14 16:33:21 +03:00
Service account
1a5414fab1 Update versions-manifest 2021-12-14 13:26:26 +00:00
github-actions[bot]
2e89c64089 Update versions-manifest (#126) 2021-11-16 09:54:41 +03:00
Mikhail Timofeev
71d75d73e0 Merge pull request #125 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 11/06/2021
2021-11-06 11:03:26 +03:00
Service account
d5c09cb931 Update versions-manifest 2021-11-06 08:02:31 +00:00
github-actions[bot]
6f2b7dc488 Update versions-manifest (#123)
Co-authored-by: Service account <no-reply@microsoft.com>
2021-10-19 15:34:31 +03:00
Hugo van Kemenade
641a2765a7 When upgrading pip, don't warn there's a new version of pip available (#117) 2021-10-18 14:37:19 +03:00
Nikolay Frolov
cd4aab3bcf Uptake of the latest changes for helpers submodule (#121) 2021-10-14 16:56:42 +03:00
MaksimZhukov
a0626d7456 Merge pull request #122 from actions/remove-ubuntu16
Remove Ubuntu 16.04 from pipeline
2021-10-14 11:37:19 +03:00
MaksimZhukov
c188065d51 Update build-python-packages.yml 2021-10-14 10:59:35 +03:00
MaksimZhukov
33626e4771 Merge pull request #120 from vsafonkin/v-vlsafo/remove-ubuntu-16.04
Remove Ubuntu 16.04 from images
2021-10-13 12:36:06 +03:00
Vladimir Safonkin
6b02f07da7 Remove Ubuntu 16.04 from images 2021-10-12 16:10:31 +03:00
MaksimZhukov
42ff8b9a2a Merge pull request #119 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 10/12/2021
2021-10-12 03:10:57 +03:00
Service account
3562b8bc34 Update versions-manifest 2021-10-12 00:09:27 +00:00
MaksimZhukov
94d9e62fbb Merge pull request #118 from dmitry-shibanov/v-dmshib/fix-python-3.11.0-alpha.1
Fix python generation for 3.11
2021-10-12 02:47:20 +03:00
Dmitry Shibanov
816cfb12d1 add possible fixes for python 3.11.0-alpha.1 2021-10-11 15:18:43 +03:00
MaksimZhukov
668a260bba Merge pull request #116 from nikolai-frolov/helpers-update
Uptake of the latest changes for helpers submodule
2021-10-07 11:10:23 +03:00
Nikolay Frolov
4f1d1dda80 Uptake of the latest changes for helpers submodule 2021-10-06 18:53:17 +03:00
Mikhail Timofeev
8eb345d3b8 Merge pull request #115 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 10/05/2021
2021-10-05 10:51:45 +03:00
Service account
2dce5239a3 Update versions-manifest 2021-10-05 07:46:24 +00:00
MaksimZhukov
d5472c1012 Merge pull request #107 from Yuriy-Kukushkin/main
Move manifest validation pipeline from Azure DevOps
2021-09-15 14:06:03 +03:00
Yuriy-Kukushkin
ae216d3a0b Updated event 2021-09-15 13:58:04 +03:00
Yuriy-Kukushkin
cd4f6ca68b Updated submodule 2021-09-15 10:59:16 +03:00
MaksimZhukov
ec9012838d Merge pull request #113 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 09/13/2021
2021-09-13 14:59:18 +03:00
Service account
15c1e1e92a Update versions-manifest 2021-09-13 09:48:05 +00:00
Yuriy-Kukushkin
0075d77064 Added token 2021-09-09 18:01:20 +03:00
MaksimZhukov
d2b344f99d Merge pull request #112 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 09/08/2021
2021-09-08 12:14:26 +03:00
Service account
246bfead61 Update versions-manifest 2021-09-08 08:59:59 +00:00
MaksimZhukov
490db05934 Merge pull request #111 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 09/06/2021
2021-09-06 19:03:59 +03:00
Service account
92c8370e8e Update versions-manifest 2021-09-06 15:57:20 +00:00
MaksimZhukov
b3e4f66ad2 Merge pull request #109 from dibir-magomedsaygitov/v-dimago/add-flag-for-python-builder
Set the CFLAGS environment variable for python builder
2021-09-06 18:16:59 +03:00
MaksimZhukov
8d36c70cd9 Merge pull request #110 from actions/mazhuk/add-manual-trigger
Add manual trigger
2021-09-06 14:51:38 +03:00
MaksimZhukov
cafef413c6 Update releases-validation.yml 2021-09-06 14:49:01 +03:00
Dibir Magomedsaygitov
fb7c9cac65 add flag for python builder 2021-09-06 14:35:31 +03:00
MaksimZhukov
4af5e99917 Merge pull request #108 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 09/06/2021
2021-09-06 12:31:51 +03:00
Service account
e2e5ffd8ae Update versions-manifest 2021-09-06 09:28:51 +00:00
Yuriy-Kukushkin
4db82a6ce6 Removed event 2021-09-02 10:14:09 +03:00
Yuriy-Kukushkin
cc1f58e61a Removed test data 2021-09-01 21:39:47 +03:00
Yuriy-Kukushkin
9d8a813dad Updated helpers submodule 2021-09-01 21:30:45 +03:00
Yuriy-Kukushkin
ae1d3a167a Added test changes 2021-09-01 18:30:47 +03:00
Yuriy-Kukushkin
9be4c52826 Created validate-manifest.yml 2021-09-01 18:25:40 +03:00
Mikhail Timofeev
41e5bb2c77 Merge pull request #104 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 08/04/2021
2021-08-04 09:42:36 +03:00
Service account
377d03cd57 Update versions-manifest 2021-08-04 06:34:42 +00:00
github-actions[bot]
e68c876eef Update versions-manifest (#102)
Co-authored-by: Service account <no-reply@microsoft.com>
2021-07-11 20:05:18 +03:00
Alena Sviridenko
bafafe0b03 Merge pull request #101 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 07/06/2021
2021-07-06 15:17:06 +03:00
Service account
877b6db711 Update versions-manifest 2021-07-06 11:16:26 +00:00
Alena Sviridenko
572e1b8c6b Merge pull request #99 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 06/28/2021
2021-06-28 23:38:05 +03:00
Service account
2299a1c570 Update versions-manifest 2021-06-28 20:29:52 +00:00
Alena Sviridenko
42c89ca94a Merge pull request #98 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 06/18/2021
2021-06-18 10:52:08 +03:00
Service account
c63d3d41a9 Update versions-manifest 2021-06-18 07:29:57 +00:00
MaksimZhukov
d35d265aa0 Merge pull request #97 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 06/02/2021
2021-06-02 14:43:30 +03:00
Service account
d58fdbe79e Update versions-manifest 2021-06-02 11:40:27 +00:00
MaksimZhukov
c5438521f1 Merge pull request #96 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 05/25/2021
2021-05-25 16:59:23 +03:00
Service account
c67d314ddc Update versions-manifest 2021-05-25 10:47:44 +00:00
Ray
ae7e50b370 Test registry path before invoking Get-ChildItem (#95) 2021-05-25 10:26:11 +03:00
Alena Sviridenko
7d36f506c4 Merge pull request #94 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 05/04/2021
2021-05-04 11:12:38 +03:00
Service account
f670a2adea Update versions-manifest 2021-05-04 08:10:58 +00:00
MaksimZhukov
505f65215c Merge pull request #93 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 04/29/2021
2021-04-29 15:40:40 +03:00
Service account
4598952486 Update versions-manifest 2021-04-29 12:38:53 +00:00
Alena Sviridenko
42bcd17332 [versions-manifest] Update for release from 04/19/2021 #92
[versions-manifest] Update for release from 04/19/2021
2021-04-19 11:13:43 +03:00
Service account
878244d959 Update versions-manifest 2021-04-19 08:01:02 +00:00
github-actions[bot]
42c2eea389 Update versions-manifest (#90)
Co-authored-by: Service account <no-reply@microsoft.com>
2021-04-08 15:23:08 +03:00
MaksimZhukov
493c59469e Merge pull request #89 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 04/07/2021
2021-04-07 18:56:08 +03:00
Service account
bd93b9d693 Update versions-manifest 2021-04-07 14:58:50 +00:00
MaksimZhukov
d0e5494ee2 Merge pull request #88 from actions/v-mazhuk/skip-alpha-beta
Ignore tkinter module for alpha & beta versions of Pyrhon 3.10.0
2021-04-07 17:40:08 +03:00
MaksimZhukov
0601c2bfde Fix condition 2021-04-07 16:53:52 +03:00
MaksimZhukov
4eb1751819 Update condition to skip all alpha and beta python versions for 3.10.0 2021-04-07 15:50:08 +03:00
MaksimZhukov
54aba042fd Merge pull request #87 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 04/04/2021
2021-04-05 00:21:06 +03:00
Service account
31ab2bc9f8 Update versions-manifest 2021-04-04 21:12:41 +00:00
Alena Sviridenko
5f4f86cc5e Merge pull request #86 from actions/update-versions-manifest-file 2021-04-04 08:03:09 +03:00
Service account
8ea13d774e Update versions-manifest 2021-04-03 23:22:19 +00:00
github-actions[bot]
afecc6a8b9 Update versions-manifest (#85)
Co-authored-by: Service account <no-reply@microsoft.com>
2021-03-10 18:51:43 +03:00
Alena Sviridenko
f4b22cc454 Ignore tkinter build fail for 3.10.0-alpha.6 #84
Ignore tkinter build fail for 3.10.0-alpha.6
2021-03-10 11:21:11 +03:00
Sergey Dolin
281024aec4 Skip tkinter failed build for alpha.6 2021-03-09 12:48:12 +05:00
github-actions[bot]
17b1cd02ca Update versions-manifest (#83)
Co-authored-by: Service account <no-reply@microsoft.com>
2021-02-20 10:54:47 +03:00
MaksimZhukov
33a76c361a Merge pull request #82 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 02/16/2021
2021-02-16 15:47:39 +03:00
Service account
371f79b70a Update versions-manifest 2021-02-16 12:20:03 +00:00
MaksimZhukov
3b961aaf4b Merge pull request #81 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 02/04/2021
2021-02-04 20:32:52 +03:00
Service account
e67096ebd1 Update versions-manifest 2021-02-04 12:52:56 +00:00
MaksimZhukov
bd7c907270 Merge pull request #80 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 01/27/2021
2021-01-27 15:52:45 +03:00
Service account
8a3240d440 Update versions-manifest 2021-01-27 12:15:12 +00:00
MaksimZhukov
0da39d896f Merge pull request #79 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 01/26/2021
2021-01-26 18:38:27 +03:00
Service account
9fb025cb4b Update versions-manifest 2021-01-26 08:25:00 +00:00
MaksimZhukov
2c5eb53471 Merge pull request #78 from vsafonkin/v-vlsafo/windows-python3-symlink
Add symlink `python3`
2021-01-25 12:27:40 +03:00
Vladimir Safonkin
4a64b9faa7 Remove test changes in manifest 2021-01-22 11:01:41 +03:00
Vladimir Safonkin
f122228a65 Update manifest 2021-01-21 16:17:21 +03:00
Vladimir Safonkin
de3f713ccc Create python3 symlink on Windows 2021-01-21 11:02:09 +03:00
Maxim Lobanov
918fe6dc0f Create CODEOWNERS (#75)
* Create CODEOWNERS

* Update CODEOWNERS
2021-01-20 21:38:34 +03:00
MaksimZhukov
21af7aa4a5 Merge pull request #77 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 01/13/2021
2021-01-13 13:44:09 +03:00
Service account
39774a2eb7 Update versions-manifest 2021-01-13 09:34:15 +00:00
MaksimZhukov
5c48eb00d0 Merge pull request #76 from dmitry-shibanov/v-dmshib/fix-warning-location
Add flag to skip warnings location of pip
2021-01-13 10:54:39 +03:00
Dmitry Shibanov
f102cb2a16 add flag to skip warnings of location of pip 2021-01-11 11:29:39 +03:00
github-actions[bot]
dc6698e2f1 Update versions-manifest (#74)
Co-authored-by: Service account <no-reply@microsoft.com>
2021-01-06 12:04:57 +03:00
MaksimZhukov
50aa2873fc Merge pull request #73 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 12/22/2020
2020-12-22 10:11:27 +03:00
MaksimZhukov
cf414aaddb Merge pull request #72 from actions/v-mazhuk/fix-cask-issue
Remove the temporary step with PowerShell version upgrade
2020-12-22 10:11:16 +03:00
Service account
139e1b9608 Update versions-manifest 2020-12-22 01:06:28 +00:00
MaksimZhukov
f4137da2f9 Remove temporary step 2020-12-22 03:41:24 +03:00
MaksimZhukov
456c8c380c Update the brew upgrade command 2020-12-22 03:38:12 +03:00
MaksimZhukov
30a06d5828 Merge pull request #71 from actions/v-mazhuk/add-test-workflow
Add a new workflow to test Python versions
2020-12-16 09:23:36 +03:00
MaksimZhukov
d3614793c0 Add a new workflow to test Python versions 2020-12-15 17:31:08 +03:00
MaksimZhukov
fab0879a3d Merge pull request #70 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 12/15/2020
2020-12-15 11:48:07 +03:00
Service account
105a61d2c8 Update versions-manifest 2020-12-15 08:12:39 +00:00
MaksimZhukov
9515b3b32a Merge pull request #68 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 12/10/2020
2020-12-10 12:53:39 +03:00
Service account
597694ec77 Update versions-manifest 2020-12-10 09:25:34 +00:00
MaksimZhukov
a6b76b25b6 Merge pull request #69 from actions/v-mazhuk/fix-python-3.10
Update the list of modules in tests for Python 3.10
2020-12-10 12:05:36 +03:00
MaksimZhukov
3a4a0fd269 Update the list of modules in tests for Python 3.10 2020-12-10 11:45:28 +03:00
MaksimZhukov
c4836579b7 Merge pull request #65 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 11/27/2020
2020-11-30 13:33:41 +03:00
Service account
ed01c1359f Update versions-manifest 2020-11-27 08:24:08 +00:00
MaksimZhukov
650a155a9a Merge pull request #66 from dmitry-shibanov/v-dmshib/fix-StrictVersion
Replace StrictVersion to LooseVersion
2020-11-25 19:14:54 +03:00
Dmitry Shibanov
28d23216d1 Update python-config-test.py 2020-11-24 22:41:59 +03:00
MaksimZhukov
6468490367 Merge pull request #64 from actions/v-mazhuk/fix-powerhell-issue-with-paths
Fix PowerShell issue with relative paths
2020-11-23 17:35:28 +03:00
MaksimZhukov
4be9a4cca1 Update overwriteExistingFiles input 2020-11-23 16:47:07 +03:00
MaksimZhukov
89a619f4b9 Fix PowerShell issue with relative paths 2020-11-23 13:29:46 +03:00
MaksimZhukov
ac42875cb8 Merge pull request #63 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 11/09/2020
2020-11-09 16:00:27 +03:00
Service account
280f63ac35 Update versions-manifest 2020-11-09 12:34:15 +00:00
MaksimZhukov
f85839ce0d Merge pull request #62 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 11/04/2020
2020-11-06 09:35:07 +03:00
Service account
594273ac16 Update versions-manifest 2020-11-04 17:39:24 +00:00
MaksimZhukov
bc57fd3c5f Merge pull request #59 from actions/update-versions-manifest-file
[versions-manifest] Build main Python versions with 1.1 version of openssl
2020-10-29 15:51:35 +03:00
Service account
a887886318 Update versions-manifest 2020-10-29 08:58:36 +00:00
Dmitry Shibanov
ff4ca0b2e5 skip test for python 2 (#60)
Co-authored-by: Dmitry Shibanov <v-dmshib@microsoft.com>
2020-10-29 10:39:08 +03:00
MaksimZhukov
0b6a06284d Merge pull request #58 from dmitry-shibanov/v-dmshib/rebuild-python-openssl
Change version of openssl for python building.
2020-10-28 15:17:45 +03:00
Dmitry Shibanov
50e47adc8b remove debug lines 2020-10-27 11:56:49 +03:00
Dmitry Shibanov
99a84463ad revert test changes 2020-10-27 11:45:49 +03:00
Dmitry Shibanov
a7aea91c95 change links 2020-10-21 19:18:35 +03:00
Dmitry Shibanov
cdd1351989 change to static path 2020-10-21 15:55:45 +03:00
Dmitry Shibanov
2aa5c75cf9 change connection 2020-10-21 10:58:28 +03:00
Dmitry Shibanov
13b26039fa add fix to confirm uninstalling 2020-10-20 15:47:44 +03:00
Dmitry Shibanov
aa8915507a add new openssl 2020-10-20 13:12:41 +03:00
MaksimZhukov
57bf4da3a5 Merge pull request #57 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 10/14/2020
2020-10-14 12:06:42 +03:00
Service account
085cf7607e Update versions-manifest 2020-10-14 08:52:18 +00:00
MaksimZhukov
ae06e9c90f Merge pull request #56 from dmitry-shibanov/v-dmshib/exclude-symbol-from3.10
Exclude symbol module from python 3.10 and higher.
2020-10-14 11:27:17 +03:00
Dmitry Shibanov
c4030498aa add version compare 2020-10-13 19:56:27 +03:00
Dmitry Shibanov
6701f7c8b0 add new exclude 2020-10-13 16:42:04 +03:00
github-actions[bot]
1430296346 Add 3.9.0 (#55)
Co-authored-by: Service account <no-reply@microsoft.com>
2020-10-06 15:48:59 +03:00
MaksimZhukov
abc7af4881 Merge pull request #54 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 09/24/2020
2020-09-25 11:21:23 +03:00
Service account
c2464b5d82 Update versions-manifest 2020-09-24 12:26:29 +00:00
MaksimZhukov
ff07bfffbb Merge pull request #53 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 09/21/2020
2020-09-21 18:06:30 +03:00
Service account
46856eea96 Update versions-manifest 2020-09-21 14:48:39 +00:00
MaksimZhukov
1c92aa7fd8 Merge pull request #52 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 09/07/2020
2020-09-07 12:22:42 +03:00
Service account
4e23e7ccf5 Update versions-manifest 2020-09-07 09:07:48 +00:00
MaksimZhukov
e643db6cb1 Merge pull request #50 from actions/v-mazhuk/move-release-creation-to-github-actions
Move release and PR creation to GitHub Actions
2020-08-28 18:01:59 +03:00
MaksimZhukov
15099a8cbe Add link to the created PR 2020-08-28 15:24:47 +03:00
MaksimZhukov
a3078ebf0c Move release and PR creation to the GitHub Actions 2020-08-28 14:14:38 +03:00
MaksimZhukov
87b41b829e Merge pull request #47 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 08/18/2020
2020-08-18 16:40:37 +03:00
Service account
b41aabd79c Update versions-manifest based on build from 20200818.1 2020-08-18 13:25:10 +00:00
MaksimZhukov
ca3edf5446 Merge pull request #46 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 08/12/2020
2020-08-12 12:55:08 +03:00
Service account
04b0679602 Update versions-manifest based on build from 20200812.1 2020-08-12 08:45:37 +00:00
MaksimZhukov
6204b3717e Update Git submodule (#45)
Co-authored-by: MaksimZhukov <v-mazhuk@microsoft.com>
2020-07-30 14:22:24 +03:00
Maxim Lobanov
d20146a86c Update versions-manifest.json 2020-07-28 22:12:47 +03:00
MaksimZhukov
4df41f4916 Update versions-manifest based on build from 20200721.2 (#44)
Co-authored-by: Service account <no-reply@microsoft.com>
2020-07-24 14:15:21 +03:00
MaksimZhukov
636e550e78 Update versions-manifest based on build from 20200721.2 (#43)
Co-authored-by: Service account <no-reply@microsoft.com>
2020-07-21 16:04:40 +03:00
MaksimZhukov
bbbf87f2cf Update versions-manifest based on build from 20200715.1 (#42)
Co-authored-by: Service account <no-reply@microsoft.com>
2020-07-17 16:45:08 +03:00
MaksimZhukov
1cb5ff2fb0 Update versions-manifest based on build from 20200715.1 (#40)
Co-authored-by: Service account <no-reply@microsoft.com>
2020-07-15 20:49:07 +03:00
MaksimZhukov
654b037263 Fix python tests (#41)
Co-authored-by: MaksimZhukov <v-mazhuk@microsoft.com>
2020-07-15 15:54:30 +03:00
Maxim Lobanov
06e3e6702d Update README.md 2020-07-15 13:37:07 +03:00
MaksimZhukov
5c851d6172 Add support for unstable Python versions (#38)
* Add support of unstable versions to package generation (#2)
* Add support of symver versions to Python setup scripts and tests

Co-authored-by: Maksim Petrov <47208721+vmapetr@users.noreply.github.com>
Co-authored-by: MaksimZhukov <v-mazhuk@microsoft.com>
Co-authored-by: Maxim Lobanov <v-malob@microsoft.com>
2020-07-15 13:13:21 +03:00
Maxim Lobanov
67794a4d5f switch default branch (#37) 2020-07-14 17:22:51 +03:00
MaksimZhukov
58a9c4b1d9 Merge pull request #35 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 06/29/2020
2020-06-29 18:14:43 +03:00
Service account
9b7480ff6d Update versions-manifest based on build from 20200629.6 2020-06-29 11:51:19 +00:00
MaksimZhukov
7ef20701e6 Merge pull request #34 from actions/v-mazhuk/validate-version-manifest
Add test workflow to validate versions-manifest.json file
2020-06-17 10:45:17 +03:00
MaksimZhukov
4dee72fe2f Remove checkout and update git submodules 2020-06-16 20:10:32 +03:00
MaksimZhukov
94ccfe8b74 Add test workflow to validate versions-manifest.json file 2020-06-16 18:39:00 +03:00
Alena Sviridenko
6e82fdd5b2 Merge pull request #32 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 06/10/2020
2020-06-10 12:32:33 +03:00
Service account
0baa79c808 Update versions-manifest based on build from 20200610.1 2020-06-10 08:43:43 +00:00
Alena Sviridenko
614a9e29eb Merge pull request #31 from vmapetr/v-mapetr/build-with-loadable-sqlite-extensions
Build Python3 for nix and darwin with enabled loadable sqlite extensions
2020-06-09 15:14:26 +03:00
Maksim Petrov
22860d08aa Build Python3 for nix and darwin with enabled loadable sqlite extensions 2020-06-08 16:00:25 +03:00
MaksimZhukov
d0bb4295e9 Upload Ubuntu 20.04 binaries (#28)
Co-authored-by: Service account <no-reply@microsoft.com>
2020-06-04 08:54:29 +03:00
Maxim Lobanov
2a3a8176d7 Update platform for new version manifest generator (#29)
* Update build-python-packages.yml

* update platforms

* fix platform conditions

* add clean up
2020-06-03 20:38:34 +03:00
45 changed files with 11715 additions and 860 deletions

1
.github/CODEOWNERS vendored Normal file
View File

@@ -0,0 +1 @@
* @actions/setup-actions-team

View File

@@ -0,0 +1,261 @@
name: Build Python package
run-name: Generate Python ${{ inputs.VERSION || '3.12.3' }}
on:
workflow_dispatch:
inputs:
VERSION:
description: 'Python version to build and upload'
default: '3.12.3'
required: true
PUBLISH_RELEASES:
description: 'Whether to publish releases'
required: true
type: boolean
default: false
THREADING_BUILD_MODES:
description: 'CPython threading build modes'
required: true
type: string
default: 'default,freethreaded'
PLATFORMS:
description: 'Platforms for execution in "os" or "os_arch" format (arch is "x64" by default)'
required: true
default: 'ubuntu-22.04,ubuntu-22.04_arm64,ubuntu-24.04,ubuntu-24.04_arm64,macos-13_x64,macos-14_arm64,windows-2019_x64,windows-2019_x86,windows-11_arm64'
pull_request:
paths-ignore:
- 'versions-manifest.json'
- 'LICENSE'
- '**.md'
branches:
- 'main'
env:
VERSION: ${{ inputs.VERSION || '3.12.3' }}
defaults:
run:
shell: pwsh
jobs:
generate_matrix:
runs-on: ubuntu-latest
outputs:
matrix: ${{ steps.generate-matrix.outputs.matrix }}
steps:
- name: Generate execution matrix
id: generate-matrix
run: |
[String[]]$configurations = "${{ inputs.platforms || 'ubuntu-22.04,ubuntu-22.04_arm64,ubuntu-24.04,ubuntu-24.04_arm64,macos-13,macos-14_arm64,windows-2019_x64,windows-2019_x86,windows-11_arm64' }}".Split(",").Trim()
[String[]]$buildModes = "${{ inputs.threading_build_modes || 'default' }}".Split(",").Trim()
$matrix = @()
foreach ($configuration in $configurations) {
foreach ($buildMode in $buildModes) {
$parts = $configuration.Split("_")
$os = $parts[0]
$arch = if ($parts[1]) {$parts[1]} else {"x64"}
switch -wildcard ($os) {
"*ubuntu*" { $platform = $os.Replace("ubuntu","linux"); if ($arch -eq "arm64" ) { $os = "${os}-arm" } }
"*macos*" { $platform = 'darwin' }
"*windows*" { $platform = 'win32'; if ($arch -eq "arm64" ) { $os = "${os}-arm" } }
}
if ($buildMode -eq "freethreaded") {
if ([semver]"${{ inputs.VERSION }}" -lt [semver]"3.13.0") {
continue;
}
$arch += "-freethreaded"
}
$matrix += @{
'platform' = $platform
'os' = $os
'arch' = $arch
}
}
}
echo "matrix=$($matrix | ConvertTo-Json -Compress -AsArray)" >> $env:GITHUB_OUTPUT
build_python:
needs: generate_matrix
strategy:
fail-fast: false
matrix:
include: ${{ fromJson(needs.generate_matrix.outputs.matrix) }}
runs-on: ${{ matrix.os }}
env:
ARTIFACT_NAME: python-${{ inputs.VERSION || '3.12.3' }}-${{ matrix.platform }}-${{ matrix.arch }}
steps:
- name: Check out repository code
uses: actions/checkout@v4
with:
submodules: true
- name: Adding Symlink
if: matrix.os == 'macos-13'
run: ln -sf /usr/local/opt/tcl-tk@8 /usr/local/opt/tcl-tk
- name: Build Python ${{ env.VERSION }}
run: |
./builders/build-python.ps1 -Version $env:VERSION `
-Platform ${{ matrix.platform }} -Architecture ${{ matrix.arch }}
- name: Publish artifact
uses: actions/upload-artifact@v4
with:
name: ${{ env.ARTIFACT_NAME }}
path: ${{ runner.temp }}/artifact
if-no-files-found: error
test_python:
needs: [generate_matrix, build_python]
strategy:
fail-fast: false
matrix:
include: ${{ fromJson(needs.generate_matrix.outputs.matrix) }}
runs-on: ${{ matrix.os }}
env:
ARTIFACT_NAME: python-${{ inputs.VERSION || '3.12.3' }}-${{ matrix.platform }}-${{ matrix.arch }}
steps:
- name: Check out repository code
uses: actions/checkout@v4
with:
submodules: true
- name: Fully cleanup the toolcache directory before testing
run: ./helpers/clean-toolcache.ps1 -ToolName "Python"
- name: Delete macOS /Library/Frameworks/Python.framework
if: matrix.platform == 'darwin'
shell: bash
run: if [ -d /Library/Frameworks/Python.framework ]; then sudo rm -rf /Library/Frameworks/Python.framework; fi
- name: Download artifact
uses: actions/download-artifact@v4
with:
name: ${{ env.ARTIFACT_NAME }}
path: ${{ runner.temp }}/${{ env.ARTIFACT_NAME }}
- name: Extract files
run: |
if ('${{ matrix.platform }}' -eq 'win32') {
$artifactName = "${{ env.ARTIFACT_NAME }}.zip"
7z.exe x "$artifactName" -y | Out-Null
} else {
$artifactName = "${{ env.ARTIFACT_NAME }}.tar.gz"
tar -xzf $artifactName
}
working-directory: ${{ runner.temp }}/${{ env.ARTIFACT_NAME }}
- name: Apply build artifact to the local machine
run: |
$PSNativeCommandUseErrorActionPreference = $true
if ('${{ matrix.platform }}' -eq 'win32') {
powershell ./setup.ps1
} else {
sh ./setup.sh
cp ${{ runner.temp }}/${{ env.ARTIFACT_NAME }}/build_output.txt ${{ runner.temp }}
}
working-directory: ${{ runner.temp }}/${{ env.ARTIFACT_NAME }}
- name: Setup Python ${{ env.VERSION }}
uses: actions/setup-python@v5
with:
python-version: ${{ env.VERSION }}
architecture: ${{ matrix.arch }}
- name: Python version
run: python -VVV
- name: Verbose sysconfig dump
if: runner.os == 'Linux' || runner.os == 'macOS'
run: python ./sources/python-config-output.py
working-directory: ${{ github.workspace }}/tests
- name: Verbose python binary links
if: runner.os == 'Linux' || runner.os == 'macOS'
run: |
$pythonLocation = which python
if ('${{ matrix.platform }}' -eq 'darwin') { otool -L $pythonLocation } else { ldd $pythonLocation }
- name: Run tests
run: |
Install-Module Pester -Force -Scope CurrentUser -SkipPublisherCheck
Import-Module Pester
$pesterContainer = New-PesterContainer -Path './python-tests.ps1' -Data @{
Version="${{ env.VERSION }}";
Platform="${{ matrix.platform }}";
Architecture="${{ matrix.arch }}";
}
$Result = Invoke-Pester -Container $pesterContainer -PassThru
if ($Result.FailedCount -gt 0) {
$host.SetShouldExit($Result.FailedCount)
exit $Result.FailedCount
}
working-directory: ${{ github.workspace }}/tests
publish_release:
name: Publish release
if: github.event_name == 'workflow_dispatch' && inputs.PUBLISH_RELEASES
needs: test_python
runs-on: ubuntu-latest
steps:
- uses: actions/download-artifact@v4
- name: Publish Release ${{ env.VERSION }}
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ env.VERSION }}-${{ github.run_id }}
release_name: ${{ env.VERSION }}
body: |
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
uses: actions/github-script@v7
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
const fs = require('fs');
for (let artifactDir of fs.readdirSync('.')) {
let artifactName = fs.lstatSync(artifactDir).isDirectory() ? fs.readdirSync(`${artifactDir}`)[0] : artifactDir;
console.log(`Upload ${artifactName} asset`);
github.rest.repos.uploadReleaseAsset({
owner: context.repo.owner,
repo: context.repo.repo,
release_id: ${{ steps.create_release.outputs.id }},
name: artifactName,
data: fs.lstatSync(artifactDir).isDirectory() ? fs.readFileSync(`./${artifactDir}/${artifactName}`) : fs.readFileSync(`./${artifactName}`).toString()
});
}
trigger_pr:
name: Trigger "Create Pull Request" workflow
needs: publish_release
runs-on: ubuntu-latest
steps:
- name: Trigger "Create Pull Request" workflow
uses: actions/github-script@v7
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
github.rest.actions.createWorkflowDispatch({
owner: context.repo.owner,
repo: context.repo.repo,
workflow_id: 'create-pr.yml',
ref: 'main'
});

17
.github/workflows/codeql-analysis.yml vendored Normal file
View File

@@ -0,0 +1,17 @@
name: CodeQL analysis
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
schedule:
- cron: '0 3 * * 0'
jobs:
call-codeQL-analysis:
name: CodeQL analysis
uses: actions/reusable-workflows/.github/workflows/codeql-analysis.yml@main
with:
languages: '["python"]'

10
.github/workflows/create-pr.yml vendored Normal file
View File

@@ -0,0 +1,10 @@
name: Create Pull Request
on:
workflow_dispatch:
jobs:
create-pr:
uses: actions/versions-package-tools/.github/workflows/create-pr-to-update-manifest.yml@main
with:
tool-name: "python"
secrets: inherit

18
.github/workflows/create-release.yml vendored Normal file
View File

@@ -0,0 +1,18 @@
name: Create release
on:
repository_dispatch:
types: [create-release]
jobs:
create_release:
name: Create release ${{ github.event.client_payload.ToolVersion }}
runs-on: ubuntu-latest
steps:
- name: Create release for Python ${{ github.event.client_payload.ToolVersion }}
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ github.event.client_payload.TagName }}
release_name: ${{ github.event.client_payload.ToolVersion }}
body: ${{ github.event.client_payload.ReleaseBody }}

View File

@@ -0,0 +1,13 @@
name: Get Python versions
on:
schedule:
- cron: '0 3,15 * * *'
workflow_dispatch:
jobs:
get-new-python-versions:
uses: actions/versions-package-tools/.github/workflows/get-new-tool-versions.yml@main
with:
tool-name: "Python"
image-url: "https://avatars.githubusercontent.com/u/1525981?s=200&v=4"
secrets: inherit

View File

@@ -0,0 +1,32 @@
name: Manifest config tests
on:
pull_request:
branches:
- main
paths-ignore:
- 'versions-manifest.json'
jobs:
RunTests:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
submodules: true
- name: Install Pester
shell: pwsh
run: |
Install-Module Pester -Force -Scope CurrentUser
- name: Run tests
shell: pwsh
run: |
Import-Module Pester
Invoke-Pester -Configuration @{
Run = @{
Path = "tests/ManifestConfig.Tests.ps1"
Exit = $true
}
}

View File

@@ -0,0 +1,31 @@
name: Python versions runner
on:
workflow_dispatch:
inputs:
versions:
description: 'Versions to build'
required: true
default: '","'
publish-releases:
description: 'Whether to publish releases'
required: true
default: 'false'
defaults:
run:
shell: pwsh
jobs:
trigger_builds:
name: Trigger python build
runs-on: ubuntu-latest
steps:
- name: Check out repository code
uses: actions/checkout@v3
- name: Trigger python workflow
run: |
$versions = ${{ github.event.inputs.versions }}
./builders/python-versions-runner.ps1 -Versions $versions.Split(",") -PublishRelease ${{ github.event.inputs.publish-releases }}
env:
TOKEN: ${{ secrets.GITHUB_TOKEN }}

View File

@@ -0,0 +1,36 @@
name: Validate 'versions-manifest.json' file
on:
workflow_dispatch:
push:
branches:
- main
paths:
- 'versions-manifest.json'
jobs:
setup-versions-from-manifest:
name: Setup ${{ matrix.python }} ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [macos-latest, windows-latest, ubuntu-22.04, ubuntu-latest, macos-13]
python: [3.9.13, 3.10.11, 3.11.8, 3.12.7, 3.13.0]
steps:
- name: setup-python ${{ matrix.python }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python }}
- name: Validate version
run: |
$pythonVersion = (python --version)
if ("Python ${{ matrix.python }}" -ne "$pythonVersion"){
Write-Host "The current version is $pythonVersion; expected version is ${{ matrix.python }}"
exit 1
}
$pythonVersion
shell: pwsh
- name: Run simple code
run: python -c 'import math; print(math.factorial(5))'

View File

@@ -0,0 +1,34 @@
name: Test Python version
on:
workflow_dispatch:
inputs:
version:
description: 'Python version to build'
required: true
architecture:
description: 'The target architecture (x86, x64) of the Python'
required: false
default: 'x64'
jobs:
test-python:
name: Test Python ${{ github.event.inputs.version }} ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [macos-latest, windows-latest, ubuntu-22.04, ubuntu-latest, macos-13]
steps:
- name: Setup Python ${{ github.event.inputs.version }}
uses: actions/setup-python@main
with:
python-version: ${{ github.event.inputs.version }}
architecture: ${{ github.event.inputs.architecture }}
- name: Validate version
run: |
python --version
shell: pwsh
- name: Run simple code
run: python -c 'import math; print(math.factorial(5))'

21
.github/workflows/validate-manifest.yml vendored Normal file
View File

@@ -0,0 +1,21 @@
name: Validate manifest
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:
- cron: '0 8,20 * * *'
workflow_dispatch:
pull_request:
branches:
- main
paths:
- 'versions-manifest.json'
jobs:
manifest:
uses: actions/versions-package-tools/.github/workflows/validate-manifest.yml@main
with:
tool-name: "Python"
image-url: "https://avatars.githubusercontent.com/u/1525981?s=200&v=4"
secrets: inherit

2
.gitmodules vendored
View File

@@ -1,4 +1,4 @@
[submodule "helpers"]
path = helpers
url = https://github.com/actions/versions-package-tools
branch = master
branch = main

View File

@@ -1,16 +1,27 @@
# 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.
File [versions-manifest.json](./versions-manifest.json) contains the list of available and released versions.
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.
> 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.
More versions will (soon!) be available to install on-the-fly through the [`setup-python`](https://github.com/actions/setup-python) action.
## Building installation packages
**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
We are trying to build and release new versions of Python as soon as they are released. Please open an issue if any versions are missing.
**macOS:**
- 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
Contributions are welcome! See [Contributor's Guide](./CONTRIBUTING.md) for more details about contribution process and code structure

View File

@@ -1,118 +0,0 @@
name: $(date:yyyyMMdd)$(rev:.r)-Python-$(VERSION)
trigger: none
pr: none
stages:
- stage: Build_Python_MacOS
dependsOn: []
variables:
VmImage: 'macOS-10.14'
Platform: macos-1014
Architecture: x64
jobs:
- template: /azure-pipelines/templates/build-job.yml
- stage: Test_Python_MacOS
condition: succeeded()
dependsOn: Build_Python_MacOS
variables:
VmImage: 'macOS-10.14'
Platform: macos-1014
Architecture: x64
jobs:
- template: /azure-pipelines/templates/test-job.yml
- stage: Build_Python_Ubuntu_1604
dependsOn: []
variables:
VmImage: 'ubuntu-16.04'
Platform: ubuntu-1604
Architecture: x64
jobs:
- template: /azure-pipelines/templates/build-job.yml
- stage: Test_Python_Ubuntu_1604
condition: succeeded()
dependsOn: Build_Python_Ubuntu_1604
variables:
VmImage: 'ubuntu-16.04'
Platform: ubuntu-1604
Architecture: x64
jobs:
- template: /azure-pipelines/templates/test-job.yml
- stage: Build_Python_Ubuntu_1804
dependsOn: []
variables:
VmImage: 'ubuntu-18.04'
Platform: ubuntu-1804
Architecture: x64
jobs:
- template: /azure-pipelines/templates/build-job.yml
- stage: Test_Python_Ubuntu_1804
condition: succeeded()
dependsOn: Build_Python_Ubuntu_1804
variables:
VmImage: 'ubuntu-18.04'
Platform: ubuntu-1804
Architecture: x64
jobs:
- template: /azure-pipelines/templates/test-job.yml
- stage: Build_Python_Ubuntu_2004
dependsOn: []
variables:
VmImage: 'ubuntu-20.04'
Platform: ubuntu-2004
Architecture: x64
jobs:
- template: /azure-pipelines/templates/build-job.yml
- stage: Test_Python_Ubuntu_2004
condition: succeeded()
dependsOn: Build_Python_Ubuntu_2004
variables:
VmImage: 'ubuntu-20.04'
Platform: ubuntu-2004
Architecture: x64
jobs:
- template: /azure-pipelines/templates/test-job.yml
- stage: Build_Python_X64_Windows
dependsOn: []
variables:
VmImage: 'vs2017-win2016'
Platform: windows-2016
Architecture: x64
jobs:
- template: /azure-pipelines/templates/build-job.yml
- stage: Test_Python_x64_Windows
condition: succeeded()
dependsOn: Build_Python_X64_Windows
variables:
VmImage: 'vs2017-win2016'
Platform: windows-2016
Architecture: x64
jobs:
- template: /azure-pipelines/templates/test-job.yml
- stage: Build_Python_x86_Windows
dependsOn: []
variables:
VmImage: 'vs2017-win2016'
Platform: windows-2016
Architecture: x86
jobs:
- template: /azure-pipelines/templates/build-job.yml
- stage: Test_Python_x86_Windows
condition: succeeded()
dependsOn: Build_Python_x86_Windows
variables:
VmImage: 'vs2017-win2016'
Platform: windows-2016
Architecture: x86
jobs:
- template: /azure-pipelines/templates/test-job.yml

View File

@@ -1,34 +0,0 @@
trigger: none
pr:
autoCancel: true
branches:
include:
- master
paths:
exclude:
- versions-manifest.json
jobs:
- job: Run_Builds
pool:
name: Azure Pipelines
vmImage: 'ubuntu-latest'
timeoutInMinutes: 180
steps:
- checkout: self
submodules: true
- task: PowerShell@2
displayName: 'Run build'
inputs:
targetType: filePath
filePath: './helpers/azure-devops/run-ci-builds.ps1 '
arguments: |
-TeamFoundationCollectionUri $(System.TeamFoundationCollectionUri) `
-AzureDevOpsProjectName $(System.TeamProject) `
-AzureDevOpsAccessToken $(System.AccessToken) `
-SourceBranch $(Build.SourceBranch) `
-SourceVersion $(Build.SourceVersion) `
-ToolVersions "$(PYTHON_VERSIONS)" `
-DefinitionId $(DEFINITION_ID)

View File

@@ -1,22 +0,0 @@
jobs:
- job: Build_Python
timeoutInMinutes: 90
pool:
name: Azure Pipelines
vmImage: $(VmImage)
steps:
- checkout: self
submodules: true
- task: PowerShell@2
displayName: 'Build Python $(VERSION)'
inputs:
targetType: filePath
filePath: './builders/build-python.ps1'
arguments: '-Version $(VERSION) -Platform $(Platform) -Architecture $(Architecture)'
- task: PublishPipelineArtifact@1
displayName: 'Publish Artifact: Python $(VERSION)'
inputs:
targetPath: '$(Build.ArtifactStagingDirectory)'
artifactName: 'python-$(VERSION)-$(Platform)-$(Architecture)'

View File

@@ -1,80 +0,0 @@
jobs:
- job: Test_Python
pool:
name: Azure Pipelines
vmImage: $(VmImage)
steps:
- checkout: self
submodules: true
- task: DownloadPipelineArtifact@2
inputs:
source: 'current'
artifact: 'python-$(VERSION)-$(Platform)-$(Architecture)'
path: $(Build.BinariesDirectory)
- task: ExtractFiles@1
inputs:
archiveFilePatterns: '$(Build.BinariesDirectory)/python-$(VERSION)-$(Platform)-$(Architecture).*'
destinationFolder: $(Build.BinariesDirectory)
cleanDestinationFolder: false
- task: PowerShell@2
displayName: 'Apply build artifact to the local machines'
inputs:
TargetType: inline
script: |
if ($env:PLATFORM -match 'windows') { powershell ./setup.ps1 } else { sh ./setup.sh }
workingDirectory: '$(Build.BinariesDirectory)'
- task: UsePythonVersion@0
displayName: 'Use Python $(VERSION)'
inputs:
versionSpec: '$(VERSION)'
architecture: '$(Architecture)'
- task: PowerShell@2
displayName: 'Verbose sysconfig dump'
inputs:
TargetType: inline
script: |
Invoke-Expression "python ./sources/python-config-output.py"
workingDirectory: '$(Build.SourcesDirectory)/tests'
condition: ne(variables['Platform'], 'windows-2016')
- task: PowerShell@2
displayName: 'Verbose python binary links'
inputs:
TargetType: inline
script: |
$pythonLocation = which python
if ($env:PLATFORM -match 'macos') { otool -L $pythonLocation } else { ldd $pythonLocation }
workingDirectory: '$(Build.BinariesDirectory)'
condition: ne(variables['Platform'], 'windows-2016')
- task: PowerShell@2
displayName: 'Run tests'
inputs:
TargetType: inline
script: |
Install-Module Pester -Force -Scope CurrentUser -RequiredVersion 4.10.1
Import-Module Pester
$pesterParams = @{
Path="./python-tests.ps1";
Parameters=@{
Version="$(VERSION)";
Platform="$(Platform)";
}
}
Invoke-Pester -Script $pesterParams -OutputFile "test_results.xml" -OutputFormat NUnitXml
workingDirectory: '$(Build.SourcesDirectory)/tests'
- task: PublishTestResults@2
displayName: 'Publish test results'
inputs:
testResultsFiles: '*.xml'
testResultsFormat: NUnit
searchFolder: 'tests'
failTaskOnFailedTests: true
testRunTitle: "$(TestRunTitle)"
condition: always()

View File

@@ -1,6 +1,6 @@
using module "./builders/win-python-builder.psm1"
using module "./builders/ubuntu-python-builder.psm1"
using module "./builders/macos-python-builder.psm1"
using module "./win-python-builder.psm1"
using module "./ubuntu-python-builder.psm1"
using module "./macos-python-builder.psm1"
<#
.SYNOPSIS
@@ -21,7 +21,7 @@ Required parameter. The platform for which Python will be built.
#>
param(
[Parameter (Mandatory=$true)][Version] $Version,
[Parameter (Mandatory=$true)][semver] $Version,
[Parameter (Mandatory=$true)][string] $Platform,
[string] $Architecture = "x64"
)
@@ -29,6 +29,7 @@ param(
Import-Module (Join-Path $PSScriptRoot "../helpers" | Join-Path -ChildPath "common-helpers.psm1") -DisableNameChecking
Import-Module (Join-Path $PSScriptRoot "../helpers" | Join-Path -ChildPath "nix-helpers.psm1") -DisableNameChecking
Import-Module (Join-Path $PSScriptRoot "../helpers" | Join-Path -ChildPath "win-helpers.psm1") -DisableNameChecking
Import-Module (Join-Path $PSScriptRoot "python-version.psm1") -DisableNameChecking
function Get-PythonBuilder {
<#
@@ -49,18 +50,17 @@ function Get-PythonBuilder {
#>
param (
[version] $Version,
param(
[semver] $Version,
[string] $Architecture,
[string] $Platform
)
$Platform = $Platform.ToLower()
if ($Platform -match 'windows') {
if ($Platform -match 'win32') {
$builder = [WinPythonBuilder]::New($Version, $Architecture, $Platform)
} elseif ($Platform -match 'ubuntu') {
} elseif ($Platform -match 'linux') {
$builder = [UbuntuPythonBuilder]::New($Version, $Architecture, $Platform)
} elseif ($Platform -match 'macos') {
} elseif ($Platform -match 'darwin') {
$builder = [macOSPythonBuilder]::New($Version, $Architecture, $Platform)
} else {
Write-Host "##vso[task.logissue type=error;] Invalid platform: $Platform"
@@ -71,5 +71,5 @@ function Get-PythonBuilder {
}
### Create Python builder instance, and build artifact
$Builder = Get-PythonBuilder -Version $Version -Architecture $Architecture -Platform $Platform
$Builder = Get-PythonBuilder -Version $Version -Architecture $Architecture -Platform $Platform
$Builder.Build()

View File

@@ -0,0 +1,52 @@
function Invoke-Workflow {
param (
[string] $Version,
[string] $PublishRelease
)
$payload = @{
"ref" = "main"
"inputs" = @{
"VERSION" = "$Version"
"PUBLISH_RELEASES" = "$PublishRelease"
}
} | ConvertTo-Json
$headers = @{
Authorization="Bearer $env:TOKEN"
}
$actionsRepoUri = "$env:GITHUB_API_URL/repos/$env:GITHUB_REPOSITORY/actions"
Invoke-RestMethod -uri "$actionsRepoUri/workflows/build-python-packages.yml/dispatches" -method POST -headers $headers -body $payload
$result = [PSCustomObject]@{
Version = $Version
Conclusion = "failure"
Url = "Not run"
}
# Triggering workflow and verifying that it has been triggered with retries
while (-not $workflowToCheck) {
Start-Sleep -seconds 40
$workflowRuns = (Invoke-RestMethod "$actionsRepoUri/runs").workflow_runs | Where-Object {$_.status -like "*progress*" -and $_.id -ne $env:GITHUB_RUN_ID}
$workflowToCheck = $workflowRuns | Where-Object {
(Invoke-RestMethod "$actionsRepoUri/runs/$($_.id)/jobs").jobs.steps.name -like "*$Version"
}
$retries++
if ($retries -gt 10) {
Write-Host "Workflow triggered for version '$Version' not found or something went wrong with fetching the workflow status"
return $result
}
}
# Waiting for workflow to complete
while ($workflowToCheck.status -ne "completed") {
Start-Sleep -Seconds 120
$workflowToCheck = Invoke-RestMethod "$actionsRepoUri/runs/$($workflowToCheck.id)"
Write-Host "Workflow run with Id: $($workflowToCheck.id) for version '$Version' - status '$($workflowToCheck.status)'"
}
$result.Conclusion = $workflowToCheck.conclusion
$result.Url = $workflowToCheck.html_url
if ($workflowToCheck.conclusion -ne "success") {
Write-Host "Triggered workflow for version '$Version' completed unsuccessfully with result '$($workflowToCheck.conclusion)'. Check the logs: $($workflowToCheck.html_url)"
return $result
}
Write-Host "Triggered workflow for version '$Version' succeeded; Url: $($workflowToCheck.html_url)"
return $result
}

View File

@@ -1,4 +1,4 @@
using module "./builders/nix-python-builder.psm1"
using module "./nix-python-builder.psm1"
class macOSPythonBuilder : NixPythonBuilder {
<#
@@ -8,6 +8,10 @@ class macOSPythonBuilder : NixPythonBuilder {
.DESCRIPTION
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.
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.
.PARAMETER platform
The full name of platform for which Python should be built.
@@ -17,11 +21,18 @@ class macOSPythonBuilder : NixPythonBuilder {
#>
macOSPythonBuilder(
[version] $version,
[semver] $version,
[string] $architecture,
[string] $platform
) : Base($version, $architecture, $platform) { }
[void] PrepareEnvironment() {
<#
.SYNOPSIS
Prepare system environment by installing dependencies and required packages.
#>
}
[void] Configure() {
<#
.SYNOPSIS
@@ -29,30 +40,156 @@ class macOSPythonBuilder : NixPythonBuilder {
#>
$pythonBinariesLocation = $this.GetFullPythonToolcacheLocation()
$configureString = "./configure --prefix=$pythonBinariesLocation --enable-optimizations --enable-shared --with-lto"
$configureString = "./configure"
$configureString += " --prefix=$pythonBinariesLocation"
$configureString += " --enable-optimizations"
$configureString += " --enable-shared"
$configureString += " --with-lto"
### For Python versions which support it, compile a universal2 (arm64 + x86_64 hybrid) build. The arm64 slice
### will never be used itself by a Github Actions runner but using a universal2 Python is the only way to build
### universal2 C extensions and wheels. This is supported by Python >= 3.10 and was backported to Python >=
### 3.9.1 and >= 3.8.10.
### OS X 10.11, Apple no longer provides header files for the deprecated system version of OpenSSL.
### Solution is to install these libraries from a third-party package manager,
### and then add the appropriate paths for the header and library files to configure command.
### Link to documentation (https://cpython-devguide.readthedocs.io/setup/#build-dependencies)
if ($this.Version -lt "3.7.0") {
$env:LDFLAGS="-L$(brew --prefix openssl)/lib"
$env:CFLAGS="-I$(brew --prefix openssl)/include"
} else {
$configureString += " --with-openssl=/usr/local/opt/openssl"
}
$configureString += " --with-openssl=/usr/local/opt/openssl@3"
$configureString += " --with-tcltk-includes='-I /usr/local/opt/tcl-tk/include/tcl-tk' --with-tcltk-libs='-L/usr/local/opt/tcl-tk/lib -ltcl8.6 -ltk8.6'"
### Compile with support of loadable sqlite extensions.
### Link to documentation (https://docs.python.org/3/library/sqlite3.html#sqlite3.Connection.enable_load_extension)
$configureString += " --enable-loadable-sqlite-extensions"
$env:LDFLAGS += " -L$(brew --prefix sqlite3)/lib"
$env:CFLAGS += " -I$(brew --prefix sqlite3)/include"
$env:CPPFLAGS += "-I$(brew --prefix sqlite3)/include"
Write-Host "The passed configure options are: "
Write-Host $configureString
Execute-Command -Command $configureString
}
[void] PrepareEnvironment() {
[string] GetPkgName() {
<#
.SYNOPSIS
Prepare system environment by installing dependencies and required packages.
Return Python installation Package.
#>
### reinstall header files to Avoid issue with X11 headers on Mojave
$pkgName = "/Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg"
Execute-Command -Command "sudo installer -pkg $pkgName -target /"
$nativeVersion = Convert-Version -version $this.Version
$architecture = "-macos11"
$extension = ".pkg"
$pkg = "python-${nativeVersion}${architecture}${extension}"
return $pkg
}
[uri] GetPkgUri() {
<#
.SYNOPSIS
Get base Python URI and return complete URI for Python installation package.
#>
$base = $this.GetBaseUri()
$versionName = $this.GetBaseVersion()
$pkg = $this.GetPkgName()
$uri = "${base}/${versionName}/${pkg}"
return $uri
}
[string] DownloadPkg() {
<#
.SYNOPSIS
Download Python installation executable into artifact location.
#>
$pkgUri = $this.GetPkgUri()
Write-Host "Sources URI: $pkgUri"
$pkgLocation = Download-File -Uri $pkgUri -OutputFolder $this.WorkFolderLocation
Write-Debug "Done; Package location: $pkgLocation"
New-Item -Path $this.WorkFolderLocation -Name "build_output.txt" -ItemType File
return $pkgLocation
}
[string] GetFrameworkName() {
<#
.SYNOPSIS
Get the Python installation Package name.
#>
if ($this.IsFreeThreaded()) {
return "PythonT.framework"
} else {
return "Python.framework"
}
}
[string] GetPkgChoices() {
<#
.SYNOPSIS
Reads the configuration XML file for the Python installer
#>
$config = if ($this.IsFreeThreaded()) { "freethreaded" } else { "default" }
$choicesFile = Join-Path $PSScriptRoot "../config/macos-pkg-choices-$($config).xml"
$choicesTemplate = Get-Content -Path $choicesFile -Raw
$variablesToReplace = @{
"{{__VERSION_MAJOR_MINOR__}}" = "$($this.Version.Major).$($this.Version.Minor)";
}
$variablesToReplace.keys | ForEach-Object { $choicesTemplate = $choicesTemplate.Replace($_, $variablesToReplace[$_]) }
return $choicesTemplate
}
[void] CreateInstallationScriptPkg() {
<#
.SYNOPSIS
Create Python artifact installation script based on specified template.
#>
$installationTemplateLocation = Join-Path -Path $this.InstallationTemplatesLocation -ChildPath "macos-pkg-setup-template.sh"
$installationTemplateContent = Get-Content -Path $installationTemplateLocation -Raw
$installationScriptLocation = New-Item -Path $this.WorkFolderLocation -Name $this.InstallationScriptName -ItemType File
$variablesToReplace = @{
"{{__VERSION_FULL__}}" = $this.Version;
"{{__PKG_NAME__}}" = $this.GetPkgName();
"{{__ARCH__}}" = $this.Architecture;
"{{__FRAMEWORK_NAME__}}" = $this.GetFrameworkName();
"{{__PKG_CHOICES__}}" = $this.GetPkgChoices();
}
$variablesToReplace.keys | ForEach-Object { $installationTemplateContent = $installationTemplateContent.Replace($_, $variablesToReplace[$_]) }
$installationTemplateContent | Out-File -FilePath $installationScriptLocation
Write-Debug "Done; Installation script location: $installationScriptLocation)"
}
[void] Build() {
<#
.SYNOPSIS
Generates Python artifact from downloaded Python installation executable.
#>
$PkgVersion = [semver]"3.11.0-beta.1"
if (($this.Version -ge $PkgVersion) -or ($this.Architecture -eq "arm64")) {
Write-Host "Download Python $($this.Version) [$($this.Architecture)] package..."
$this.DownloadPkg()
Write-Host "Create installation script..."
$this.CreateInstallationScriptPkg()
} else {
([NixPythonBuilder]$this).Build()
}
Write-Host "Archive artifact"
$this.ArchiveArtifact()
}
}

View File

@@ -1,4 +1,4 @@
using module "./builders/python-builder.psm1"
using module "./python-builder.psm1"
class NixPythonBuilder : PythonBuilder {
<#
@@ -33,13 +33,12 @@ class NixPythonBuilder : PythonBuilder {
[string] $OutputArtifactName
NixPythonBuilder(
[version] $version,
[semver] $version,
[string] $architecture,
[string] $platform
) : Base($version, $architecture, $platform) {
$this.InstallationTemplateName = "nix-setup-template.sh"
$this.InstallationScriptName = "setup.sh"
$this.OutputArtifactName = "python-$Version-$Platform-$Architecture.tar.gz"
}
@@ -50,8 +49,10 @@ class NixPythonBuilder : PythonBuilder {
#>
$base = $this.GetBaseUri()
$versionName = $this.GetBaseVersion()
$nativeVersion = Convert-Version -version $this.Version
return "${base}/$($this.Version)/Python-$($this.Version).tgz"
return "${base}/${versionName}/Python-${nativeVersion}.tgz"
}
[string] GetPythonBinary() {
@@ -60,8 +61,7 @@ class NixPythonBuilder : PythonBuilder {
Return name of Python binary.
#>
if ($this.Version.Major -eq 2) { $pythonBinary = "python" } else { $pythonBinary = "python3" }
return $pythonBinary
return "python3"
}
[string] Download() {
@@ -95,9 +95,8 @@ class NixPythonBuilder : PythonBuilder {
$installationTemplateContent = Get-Content -Path $installationTemplateLocation -Raw
$variablesToReplace = @{
"{{__VERSION_MAJOR__}}" = $this.Version.Major;
"{{__VERSION_MINOR__}}" = $this.Version.Minor;
"{{__VERSION_BUILD__}}" = $this.Version.Build;
"{{__VERSION_FULL__}}" = $this.Version;
"{{__ARCH__}}" = $this.Architecture;
}
$variablesToReplace.keys | ForEach-Object { $installationTemplateContent = $installationTemplateContent.Replace($_, $variablesToReplace[$_]) }
@@ -115,7 +114,7 @@ class NixPythonBuilder : PythonBuilder {
Write-Debug "make Python $($this.Version)-$($this.Architecture) $($this.Platform)"
$buildOutputLocation = New-Item -Path $this.WorkFolderLocation -Name "build_output.txt" -ItemType File
Execute-Command -Command "make 2>&1 | tee $buildOutputLocation" -ErrorAction Continue
Execute-Command -Command "make 2>&1 | tee $buildOutputLocation" -ErrorAction Continue
Execute-Command -Command "make install" -ErrorAction Continue
Write-Debug "Done; Make log location: $buildOutputLocation"

View File

@@ -29,7 +29,7 @@ class PythonBuilder {
#>
[version] $Version
[semver] $Version
[string] $Architecture
[string] $Platform
[string] $HostedToolcacheLocation
@@ -38,17 +38,23 @@ class PythonBuilder {
[string] $ArtifactFolderLocation
[string] $InstallationTemplatesLocation
PythonBuilder ([version] $version, [string] $architecture, [string] $platform) {
PythonBuilder ([semver] $version, [string] $architecture, [string] $platform) {
$this.InstallationTemplatesLocation = Join-Path -Path $PSScriptRoot -ChildPath "../installers"
$artifactDirectory = Join-Path $env:RUNNER_TEMP "artifact"
$workDirectory = Join-Path $env:RUNNER_TEMP "work"
New-Item -Force -Type Directory $artifactDirectory
New-Item -Force -Type Directory $workDirectory
$this.HostedToolcacheLocation = $env:RUNNER_TOOL_CACHE
$this.TempFolderLocation = $env:RUNNER_TEMP
$this.WorkFolderLocation = $workDirectory
$this.ArtifactFolderLocation = $artifactDirectory
$this.Version = $version
$this.Architecture = $architecture
$this.Platform = $platform
$this.HostedToolcacheLocation = $env:AGENT_TOOLSDIRECTORY
$this.TempFolderLocation = $env:BUILD_SOURCESDIRECTORY
$this.WorkFolderLocation = $env:BUILD_BINARIESDIRECTORY
$this.ArtifactFolderLocation = $env:BUILD_STAGINGDIRECTORY
$this.InstallationTemplatesLocation = Join-Path -Path $PSScriptRoot -ChildPath "../installers"
}
[uri] GetBaseUri() {
@@ -79,11 +85,39 @@ class PythonBuilder {
return "$pythonToolcacheLocation/$($this.Version)/$($this.Architecture)"
}
[string] GetBaseVersion() {
<#
.SYNOPSIS
Return Major.Minor.Patch version string.
#>
return "$($this.Version.Major).$($this.Version.Minor).$($this.Version.Patch)"
}
[string] GetHardwareArchitecture() {
<#
.SYNOPSIS
The hardware architecture (x64, arm64) without any Python free threading suffix.
#>
return $this.Architecture.Replace("-freethreaded", "")
}
[bool] IsFreeThreaded() {
<#
.SYNOPSIS
Check if Python version is free threaded.
#>
return $this.Architecture.EndsWith("-freethreaded")
}
[void] PreparePythonToolcacheLocation() {
<#
.SYNOPSIS
Prepare system hostedtoolcache folder for new Python version.
#>
$pythonBinariesLocation = $this.GetFullPythonToolcacheLocation()
if (Test-Path $pythonBinariesLocation) {

View File

@@ -0,0 +1,45 @@
function Convert-Label() {
<#
.SYNOPSIS
Convert generic semver label to native Python label.
#>
param(
[Parameter(Mandatory)]
[string] $label
)
switch ($label) {
"alpha" { return "a" }
"beta" { return "b" }
"rc" { return "rc" }
default { throw "Invalid version label '$label'" }
}
}
function Convert-Version {
<#
.SYNOPSIS
Convert generic semver version to native Python version.
#>
param(
[Parameter(Mandatory)]
[semver] $version,
[char] $delimiter = "."
)
$nativeVersion = "{0}.{1}.{2}" -f $version.Major, $version.Minor, $version.Patch
if ($version.PreReleaseLabel)
{
$preReleaseLabel = $version.PreReleaseLabel.Split($delimiter)
$preReleaseLabelName = Convert-Label -Label $preReleaseLabel[0]
$preReleaseLabelVersion = $preReleaseLabel[1]
$nativeVersion += "${preReleaseLabelName}${preReleaseLabelVersion}"
}
return $nativeVersion
}

View File

@@ -0,0 +1,31 @@
<#
.SYNOPSIS
Generate Python artifact.
.DESCRIPTION
Script that triggering and fetching the result of the "Build python package" workflows with provided python versions
.PARAMETER Version
Required parameter. Python versions to trigger builds for.
.PARAMETER PublishRelease
Switch parameter. Whether to publish release for built version.
#>
param(
[Parameter (Mandatory=$true, HelpMessage="Python version to trigger build for")]
[array] $Versions,
[Parameter (Mandatory=$false, HelpMessage="Whether to publish release for built version")]
[string] $PublishRelease
)
$summary = $Versions | ForEach-Object -Parallel {
Import-Module "./builders/invoke-workflow.psm1"
Invoke-Workflow -Version $_ -PublishRelease $Using:PublishRelease
}
Write-Host "Results of triggered workflows:"
$summary | Out-String
if ($summary.Conclusion -contains "failure" -or $summary.Conclusion -contains "cancelled") {
exit 1
}

View File

@@ -1,4 +1,4 @@
using module "./builders/nix-python-builder.psm1"
using module "./nix-python-builder.psm1"
class UbuntuPythonBuilder : NixPythonBuilder {
<#
@@ -17,7 +17,7 @@ class UbuntuPythonBuilder : NixPythonBuilder {
#>
UbuntuPythonBuilder(
[version] $version,
[semver] $version,
[string] $architecture,
[string] $platform
) : Base($version, $architecture, $platform) { }
@@ -32,13 +32,26 @@ class UbuntuPythonBuilder : NixPythonBuilder {
### To build Python with SO we must pass full path to lib folder to the linker
$env:LDFLAGS="-Wl,--rpath=${pythonBinariesLocation}/lib"
$configureString = "./configure --prefix=$pythonBinariesLocation --enable-shared --enable-optimizations"
$configureString = "./configure"
$configureString += " --prefix=$pythonBinariesLocation"
$configureString += " --enable-shared"
$configureString += " --enable-optimizations"
if ($this.Version -lt "3.0.0") {
### Compile with ucs4 for Python 2.x. On 3.x, ucs4 is enabled by default
$configureString += " --enable-unicode=ucs4"
if ($this.IsFreeThreaded()) {
if ($this.Version -lt "3.13.0") {
Write-Host "Python versions lower than 3.13.0 do not support free threading"
exit 1
}
$configureString += " --disable-gil"
}
### Compile with support of loadable sqlite extensions.
### Link to documentation (https://docs.python.org/3/library/sqlite3.html#sqlite3.Connection.enable_load_extension)
$configureString += " --enable-loadable-sqlite-extensions"
Write-Host "The passed configure options are: "
Write-Host $configureString
Execute-Command -Command $configureString
}
@@ -48,17 +61,15 @@ class UbuntuPythonBuilder : NixPythonBuilder {
Prepare system environment by installing dependencies and required packages.
#>
if (($this.Version -gt "3.0.0") -and ($this.Version -lt "3.5.3")) {
Write-Host "Python3 versions lower than 3.5.3 are not supported"
if ($this.Version -lt "3.9.0") {
Write-Host "Python versions lower than 3.9.0 are not supported"
exit 1
}
### Compile with tkinter support
if ($this.Version -gt "3.0.0") {
$tkinterInstallString = "sudo apt-get install -y --allow-downgrades python3-tk tk-dev"
} else {
$tkinterInstallString = "sudo apt install -y python-tk tk-dev"
}
$tkinterInstallString = "sudo apt-get install -y --allow-downgrades python3-tk tk-dev"
Execute-Command -Command "sudo apt-get update"
Execute-Command -Command $tkinterInstallString
### Install dependent packages
@@ -71,15 +82,13 @@ class UbuntuPythonBuilder : NixPythonBuilder {
"libsqlite3-dev",
"libncursesw5-dev",
"libreadline-dev",
"libgdbm-dev"
"libgdbm-dev",
"liblzma-dev"
) | ForEach-Object {
Execute-Command -Command "sudo apt install -y $_"
}
if ($this.Platform -ne "ubuntu-1604") {
### On Ubuntu-1804, libgdbm-compat-dev has older modules that are no longer in libgdbm-dev
Execute-Command -Command "sudo apt install -y libgdbm-compat-dev"
}
### On Ubuntu-1804, libgdbm-compat-dev has older modules that are no longer in libgdbm-dev
Execute-Command -Command "sudo apt install -y libgdbm-compat-dev"
}
}

View File

@@ -1,4 +1,4 @@
using module "./builders/python-builder.psm1"
using module "./python-builder.psm1"
class WinPythonBuilder : PythonBuilder {
<#
@@ -27,7 +27,7 @@ class WinPythonBuilder : PythonBuilder {
[string] $OutputArtifactName
WinPythonBuilder(
[version] $version,
[semver] $version,
[string] $architecture,
[string] $platform
) : Base($version, $architecture, $platform) {
@@ -42,9 +42,7 @@ class WinPythonBuilder : PythonBuilder {
Return extension for required version of Python executable.
#>
$extension = if ($this.Version -lt "3.5" -and $this.Version -ge "2.5") { ".msi" } else { ".exe" }
return $extension
return ".exe"
}
[string] GetArchitectureExtension() {
@@ -54,12 +52,10 @@ class WinPythonBuilder : PythonBuilder {
#>
$ArchitectureExtension = ""
if ($this.Architecture -eq "x64") {
if ($this.Version -ge "3.5") {
$ArchitectureExtension = "-amd64"
} else {
$ArchitectureExtension = ".amd64"
}
if ($this.GetHardwareArchitecture() -eq "x64") {
$ArchitectureExtension = "-amd64"
} elseif ($this.GetHardwareArchitecture() -eq "arm64") {
$ArchitectureExtension = "-arm64"
}
return $ArchitectureExtension
@@ -72,10 +68,12 @@ class WinPythonBuilder : PythonBuilder {
#>
$base = $this.GetBaseUri()
$versionName = $this.GetBaseVersion()
$nativeVersion = Convert-Version -version $this.Version
$architecture = $this.GetArchitectureExtension()
$extension = $this.GetPythonExtension()
$uri = "${base}/$($this.Version)/python-$($this.Version)${architecture}${extension}"
$uri = "${base}/${versionName}/python-${nativeVersion}${architecture}${extension}"
return $uri
}
@@ -109,6 +107,7 @@ class WinPythonBuilder : PythonBuilder {
$variablesToReplace = @{
"{{__ARCHITECTURE__}}" = $this.Architecture;
"{{__HARDWARE_ARCHITECTURE__}}" = $this.GetHardwareArchitecture();
"{{__VERSION__}}" = $this.Version;
"{{__PYTHON_EXEC_NAME__}}" = $pythonExecName
}

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
<dict>
</dict>
</array>
</plist>

View File

@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
<dict>
<key>attributeSetting</key>
<integer>1</integer>
<key>choiceAttribute</key>
<string>selected</string>
<key>choiceIdentifier</key>
<string>org.python.Python.PythonTFramework-{{__VERSION_MAJOR_MINOR__}}</string>
</dict>
</array>
</plist>

View File

@@ -1,8 +1,8 @@
{
"regex": "python-\\d+\\.\\d+\\.\\d+-(\\w+)-([\\w\\.]+)?-?(x\\d+)",
"regex": "python-\\d+\\.\\d+\\.\\d+-(\\w+\\.\\d+)?-?(\\w+)-(\\d+\\.\\d+)?-?((x|arm)\\d+(-freethreaded)?)",
"groups": {
"arch": 3,
"platform": 1,
"platform_version": 2
"arch": 4,
"platform": 2,
"platform_version": 3
}
}

Submodule helpers updated: d8c3ce72ee...6fbb1f0f20

View File

@@ -0,0 +1,94 @@
set -e
PYTHON_FULL_VERSION="{{__VERSION_FULL__}}"
PYTHON_PKG_NAME="{{__PKG_NAME__}}"
PYTHON_FRAMEWORK_NAME="{{__FRAMEWORK_NAME__}}"
PYTHON_PKG_CHOICES=$(cat << 'EOF'
{{__PKG_CHOICES__}}
EOF
)
ARCH="{{__ARCH__}}"
MAJOR_VERSION=$(echo $PYTHON_FULL_VERSION | cut -d '.' -f 1)
MINOR_VERSION=$(echo $PYTHON_FULL_VERSION | cut -d '.' -f 2)
PYTHON_MAJOR=python$MAJOR_VERSION
PYTHON_MAJOR_DOT_MINOR=python$MAJOR_VERSION.$MINOR_VERSION
PYTHON_MAJOR_MINOR=python$MAJOR_VERSION$MINOR_VERSION
if [ -z ${AGENT_TOOLSDIRECTORY+x} ]; then
# No AGENT_TOOLSDIRECTORY on GitHub images
TOOLCACHE_ROOT=$RUNNER_TOOL_CACHE
else
TOOLCACHE_ROOT=$AGENT_TOOLSDIRECTORY
fi
PYTHON_TOOLCACHE_PATH=$TOOLCACHE_ROOT/Python
PYTHON_TOOLCACHE_VERSION_PATH=$PYTHON_TOOLCACHE_PATH/$PYTHON_FULL_VERSION
PYTHON_TOOLCACHE_VERSION_ARCH_PATH=$PYTHON_TOOLCACHE_VERSION_PATH/$ARCH
PYTHON_FRAMEWORK_PATH="/Library/Frameworks/${PYTHON_FRAMEWORK_NAME}/Versions/${MAJOR_VERSION}.${MINOR_VERSION}"
PYTHON_APPLICATION_PATH="/Applications/Python ${MAJOR_VERSION}.${MINOR_VERSION}"
echo "Check if Python hostedtoolcache folder exist..."
if [ ! -d $PYTHON_TOOLCACHE_PATH ]; then
echo "Creating Python hostedtoolcache folder..."
mkdir -p $PYTHON_TOOLCACHE_PATH
else
# remove ALL other directories for same major.minor python versions
find $PYTHON_TOOLCACHE_PATH -name "${MAJOR_VERSION}.${MINOR_VERSION}.*"|while read python_version;do
python_version_arch="$python_version/$ARCH"
if [ -e "$python_version_arch" ];then
echo "Deleting Python $python_version_arch"
rm -rf "$python_version_arch"
fi
done
fi
PYTHON_PKG_CHOICES_FILES=$(mktemp)
echo "$PYTHON_PKG_CHOICES" > $PYTHON_PKG_CHOICES_FILES
echo "Install Python binaries from prebuilt package"
sudo installer -pkg $PYTHON_PKG_NAME -applyChoiceChangesXML $PYTHON_PKG_CHOICES_FILES -target /
echo "Create hostedtoolcach symlinks (Required for the backward compatibility)"
echo "Create Python $PYTHON_FULL_VERSION folder"
mkdir -p $PYTHON_TOOLCACHE_VERSION_ARCH_PATH
cd $PYTHON_TOOLCACHE_VERSION_ARCH_PATH
ln -s "${PYTHON_FRAMEWORK_PATH}/bin" bin
ln -s "${PYTHON_FRAMEWORK_PATH}/include" include
ln -s "${PYTHON_FRAMEWORK_PATH}/share" share
ln -s "${PYTHON_FRAMEWORK_PATH}/lib" lib
echo "Create additional symlinks (Required for the UsePythonVersion Azure Pipelines task and the setup-python GitHub Action)"
ln -s ./bin/$PYTHON_MAJOR_DOT_MINOR python
chmod +x python
# Note that bin is a symlink so referencing .. from bin will not work as expected
cd bin/
# 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_MAJOR ]; then
ln -s $PYTHON_MAJOR_DOT_MINOR $PYTHON_MAJOR
fi
if [ ! -f python ]; then
ln -s $PYTHON_MAJOR_DOT_MINOR python
fi
chmod +x $PYTHON_MAJOR $PYTHON_MAJOR_DOT_MINOR $PYTHON_MAJOR_MINOR python
echo "Upgrading pip..."
export PIP_ROOT_USER_ACTION=ignore
./python -m ensurepip
./python -m pip install --upgrade --force-reinstall pip --disable-pip-version-check --no-warn-script-location
echo "Install OpenSSL certificates"
sh -e "${PYTHON_APPLICATION_PATH}/Install Certificates.command"
echo "Create complete file"
touch $PYTHON_TOOLCACHE_VERSION_PATH/${ARCH}.complete

View File

@@ -1,29 +0,0 @@
{
"macos-1014": [
{
"platform": "darwin",
"platform_version": "10.14"
},
{
"platform": "darwin",
"platform_version": "10.15"
}
],
"ubuntu-1604": [
{
"platform": "linux",
"platform_version": "16.04"
}
],
"ubuntu-1804": [
{
"platform": "linux",
"platform_version": "18.04"
}
],
"windows-2016": [
{
"platform": "win32"
}
]
}

View File

@@ -1,13 +1,13 @@
set -e
MAJOR_VERSION="{{__VERSION_MAJOR__}}"
MINOR_VERSION="{{__VERSION_MINOR__}}"
BUILD_VERSION="{{__VERSION_BUILD__}}"
PYTHON_FULL_VERSION="{{__VERSION_FULL__}}"
ARCH="{{__ARCH__}}"
MAJOR_VERSION=$(echo $PYTHON_FULL_VERSION | cut -d '.' -f 1)
MINOR_VERSION=$(echo $PYTHON_FULL_VERSION | cut -d '.' -f 2)
PYTHON_MAJOR=python$MAJOR_VERSION
PYTHON_MAJOR_DOT_MINOR=python$MAJOR_VERSION.$MINOR_VERSION
PYTHON_MAJORMINOR=python$MAJOR_VERSION$MINOR_VERSION
PYTHON_FULL_VERSION=$MAJOR_VERSION.$MINOR_VERSION.$BUILD_VERSION
if [ -z ${AGENT_TOOLSDIRECTORY+x} ]; then
# No AGENT_TOOLSDIRECTORY on GitHub images
@@ -18,15 +18,15 @@ fi
PYTHON_TOOLCACHE_PATH=$TOOLCACHE_ROOT/Python
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
echo "Check if Python hostedtoolcache folder exist..."
if [ ! -d $PYTHON_TOOLCACHE_PATH ]; then
echo "Creating Python hostedtoolcache folder..."
mkdir -p $PYTHON_TOOLCACHE_PATH
elif [ -d $PYTHON_TOOLCACHE_VERSION_PATH ]; then
echo "Deleting Python $PYTHON_FULL_VERSION"
rm -rf $PYTHON_TOOLCACHE_VERSION_PATH
elif [ -d $PYTHON_TOOLCACHE_VERSION_ARCH_PATH ]; then
echo "Deleting Python $PYTHON_FULL_VERSION ($ARCH)"
rm -rf $PYTHON_TOOLCACHE_VERSION_ARCH_PATH
fi
echo "Create Python $PYTHON_FULL_VERSION folder"
@@ -49,9 +49,10 @@ fi
chmod +x ../python $PYTHON_MAJOR $PYTHON_MAJOR_DOT_MINOR $PYTHON_MAJORMINOR python
echo "Upgrading PIP..."
echo "Upgrading pip..."
export PIP_ROOT_USER_ACTION=ignore
./python -m ensurepip
./python -m pip install --ignore-installed pip
./python -m pip install --upgrade --force-reinstall pip --disable-pip-version-check --no-warn-script-location
echo "Create complete file"
touch $PYTHON_TOOLCACHE_VERSION_PATH/x64.complete
touch $PYTHON_TOOLCACHE_VERSION_PATH/$ARCH.complete

View File

@@ -1,51 +1,43 @@
[String] $Architecture = "{{__ARCHITECTURE__}}"
[Version] $Version = "{{__VERSION__}}"
[String] $HardwareArchitecture = "{{__HARDWARE_ARCHITECTURE__}}"
[String] $Version = "{{__VERSION__}}"
[String] $PythonExecName = "{{__PYTHON_EXEC_NAME__}}"
function Get-RegistryVersionFilter {
param
(
param(
[Parameter(Mandatory)][String] $Architecture,
[Parameter(Mandatory)][Int32] $MajorVersion,
[Parameter(Mandatory)][Int32] $MinorVersion
)
$archFilter = if ($Architecture -eq 'x86') { "32-bit" } else { "64-bit" }
### Python 2.7 x86 have no architecture postfix
if (($Architecture -eq "x86") -and ($MajorVersion -eq 2))
{
"Python $MajorVersion.$MinorVersion.\d+$"
}
else
{
"Python $MajorVersion.$MinorVersion.*($archFilter)"
}
"Python $MajorVersion.$MinorVersion.*($archFilter)"
}
function Remove-RegistryEntries
{
param
(
function Remove-RegistryEntries {
param(
[Parameter(Mandatory)][String] $Architecture,
[Parameter(Mandatory)][Int32] $MajorVersion,
[Parameter(Mandatory)][Int32] $MinorVersion
)
$versionFilter = Get-RegistryVersionFilter -Architecture $Architecture -MajorVersion $MajorVersion -MinorVersion $MinorVersion
$versionFilter = Get-RegistryVersionFilter -Architecture $HardwareArchitecture -MajorVersion $MajorVersion -MinorVersion $MinorVersion
$regPath = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products"
$regKeys = Get-ChildItem -Path Registry::$regPath -Recurse | Where-Object Property -Ccontains DisplayName
foreach ($key in $regKeys)
{
if ($key.getValue("DisplayName") -match $versionFilter)
{
Remove-Item -Path $key.PSParentPath -Recurse -Force -Verbose
if (Test-Path -Path Registry::$regPath) {
$regKeys = Get-ChildItem -Path Registry::$regPath -Recurse | Where-Object Property -Ccontains DisplayName
foreach ($key in $regKeys) {
if ($key.getValue("DisplayName") -match $versionFilter) {
Remove-Item -Path $key.PSParentPath -Recurse -Force -Verbose
}
}
}
$regPath = "HKEY_CLASSES_ROOT\Installer\Products"
Get-ChildItem -Path Registry::$regPath | Where-Object { $_.GetValue("ProductName") -match $versionFilter } | ForEach-Object {
Remove-Item Registry::$_ -Recurse -Force -Verbose
if (Test-Path -Path Registry::$regPath) {
Get-ChildItem -Path Registry::$regPath | Where-Object { $_.GetValue("ProductName") -match $versionFilter } | ForEach-Object {
Remove-Item Registry::$_ -Recurse -Force -Verbose
}
}
$uninstallRegistrySections = @(
@@ -63,40 +55,37 @@ function Remove-RegistryEntries
}
function Get-ExecParams {
param
(
param(
[Parameter(Mandatory)][Boolean] $IsMSI,
[Parameter(Mandatory)][Boolean] $IsFreeThreaded,
[Parameter(Mandatory)][String] $PythonArchPath
)
if ($IsMSI)
{
if ($IsMSI) {
"TARGETDIR=$PythonArchPath ALLUSERS=1"
}
else
{
"DefaultAllUsersTargetDir=$PythonArchPath InstallAllUsers=1"
} else {
$Include_freethreaded = if ($IsFreeThreaded) { "Include_freethreaded=1" } else { "" }
"DefaultAllUsersTargetDir=$PythonArchPath InstallAllUsers=1 $Include_freethreaded"
}
}
$ToolcacheRoot = $env:AGENT_TOOLSDIRECTORY
if ([string]::IsNullOrEmpty($ToolcacheRoot))
{
if ([string]::IsNullOrEmpty($ToolcacheRoot)) {
# GitHub images don't have `AGENT_TOOLSDIRECTORY` variable
$ToolcacheRoot = $env:RUNNER_TOOL_CACHE
}
$PythonToolcachePath = Join-Path -Path $ToolcacheRoot -ChildPath "Python"
$PythonVersionPath = Join-Path -Path $PythonToolcachePath -ChildPath $Version.ToString()
$PythonVersionPath = Join-Path -Path $PythonToolcachePath -ChildPath $Version
$PythonArchPath = Join-Path -Path $PythonVersionPath -ChildPath $Architecture
$IsMSI = $PythonExecName -match "msi"
$IsFreeThreaded = $Architecture -match "-freethreaded"
$MajorVersion = $Version.Major
$MinorVersion = $Version.Minor
$MajorVersion = $Version.Split('.')[0]
$MinorVersion = $Version.Split('.')[1]
Write-Host "Check if Python hostedtoolcache folder exist..."
if (-Not (Test-Path $PythonToolcachePath))
{
if (-Not (Test-Path $PythonToolcachePath)) {
Write-Host "Create Python toolcache folder"
New-Item -ItemType Directory -Path $PythonToolcachePath | Out-Null
}
@@ -104,22 +93,19 @@ if (-Not (Test-Path $PythonToolcachePath))
Write-Host "Check if current Python version is installed..."
$InstalledVersions = Get-Item "$PythonToolcachePath\$MajorVersion.$MinorVersion.*\$Architecture"
if ($null -ne $InstalledVersions)
{
if ($null -ne $InstalledVersions) {
Write-Host "Python$MajorVersion.$MinorVersion ($Architecture) was found in $PythonToolcachePath..."
foreach ($InstalledVersion in $InstalledVersions)
{
if (Test-Path -Path $InstalledVersion)
{
foreach ($InstalledVersion in $InstalledVersions) {
if (Test-Path -Path $InstalledVersion) {
Write-Host "Deleting $InstalledVersion..."
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 {
Write-Host "No Python$MajorVersion.$MinorVersion.* found"
}
@@ -133,17 +119,29 @@ Write-Host "Copy Python binaries to $PythonArchPath"
Copy-Item -Path ./$PythonExecName -Destination $PythonArchPath | Out-Null
Write-Host "Install Python $Version in $PythonToolcachePath..."
$ExecParams = Get-ExecParams -IsMSI $IsMSI -PythonArchPath $PythonArchPath
$ExecParams = Get-ExecParams -IsMSI $IsMSI -IsFreeThreaded $IsFreeThreaded -PythonArchPath $PythonArchPath
cmd.exe /c "cd $PythonArchPath && call $PythonExecName $ExecParams /quiet"
if ($LASTEXITCODE -ne 0)
{
if ($LASTEXITCODE -ne 0) {
Throw "Error happened during Python installation"
}
if ($IsFreeThreaded) {
# Delete python.exe and create a symlink to free-threaded exe
Remove-Item -Path "$PythonArchPath\python.exe" -Force
New-Item -Path "$PythonArchPath\python.exe" -ItemType SymbolicLink -Value "$PythonArchPath\python${MajorVersion}.${MinorVersion}t.exe"
}
Write-Host "Create `python3` symlink"
New-Item -Path "$PythonArchPath\python3.exe" -ItemType SymbolicLink -Value "$PythonArchPath\python.exe"
Write-Host "Install and upgrade Pip"
$Env:PIP_ROOT_USER_ACTION = "ignore"
$PythonExePath = Join-Path -Path $PythonArchPath -ChildPath "python.exe"
cmd.exe /c "$PythonExePath -m ensurepip && $PythonExePath -m pip install --upgrade pip"
cmd.exe /c "$PythonExePath -m ensurepip && $PythonExePath -m pip install --upgrade --force-reinstall pip --no-warn-script-location"
if ($LASTEXITCODE -ne 0) {
Throw "Error happened during pip installation / upgrade"
}
Write-Host "Create complete file"
New-Item -ItemType File -Path $PythonVersionPath -Name "$Architecture.complete" | Out-Null

View File

@@ -0,0 +1,56 @@
Import-Module (Join-Path $PSScriptRoot "../helpers/packages-generation/manifest-utils.psm1")
$ConfigurationFile = Join-Path $PSScriptRoot "../config/python-manifest-config.json"
$Configuration = Read-ConfigurationFile -Filepath $ConfigurationFile
$stableTestCases = @(
@{ ReleaseName = "python-3.13.0-darwin-x64.tar.gz"; ExpectedResult = @{ platform = "darwin"; platform_version = $null; arch = "x64"} },
@{ ReleaseName = "python-3.13.0-linux-20.04-x64.tar.gz"; ExpectedResult = @{ platform = "linux"; platform_version = "20.04"; arch = "x64"} },
@{ ReleaseName = "python-3.13.0-linux-22.04-x64.tar.gz"; ExpectedResult = @{ platform = "linux"; platform_version = "22.04"; arch = "x64"} },
@{ ReleaseName = "python-3.13.0-win32-x64.zip"; ExpectedResult = @{ platform = "win32"; platform_version = $null; arch = "x64"} },
@{ ReleaseName = "python-3.13.0-win32-x86.zip"; ExpectedResult = @{ platform = "win32"; platform_version = $null; arch = "x86"} },
@{ ReleaseName = "python-3.13.0-darwin-x64-freethreaded.tar.gz"; ExpectedResult = @{ platform = "darwin"; platform_version = $null; arch = "x64-freethreaded"} },
@{ ReleaseName = "python-3.13.0-linux-20.04-x64-freethreaded.tar.gz"; ExpectedResult = @{ platform = "linux"; platform_version = "20.04"; arch = "x64-freethreaded"} },
@{ ReleaseName = "python-3.13.0-linux-22.04-x64-freethreaded.tar.gz"; ExpectedResult = @{ platform = "linux"; platform_version = "22.04"; arch = "x64-freethreaded"} },
@{ ReleaseName = "python-3.13.0-win32-x64-freethreaded.zip"; ExpectedResult = @{ platform = "win32"; platform_version = $null; arch = "x64-freethreaded"} },
@{ ReleaseName = "python-3.13.0-win32-x86-freethreaded.zip"; ExpectedResult = @{ platform = "win32"; platform_version = $null; arch = "x86-freethreaded"} }
) | ForEach-Object { $_.Configuration = $Configuration; $_ }
$unstableTestCases = @(
@{ ReleaseName = "python-3.14.0-alpha.5-darwin-x64.tar.gz"; ExpectedResult = @{ platform = "darwin"; platform_version = $null; arch = "x64"} },
@{ ReleaseName = "python-3.14.0-alpha.5-linux-20.04-x64.tar.gz"; ExpectedResult = @{ platform = "linux"; platform_version = "20.04"; arch = "x64"} },
@{ ReleaseName = "python-3.14.0-alpha.5-linux-22.04-x64.tar.gz"; ExpectedResult = @{ platform = "linux"; platform_version = "22.04"; arch = "x64"} },
@{ ReleaseName = "python-3.14.0-alpha.5-win32-x64.zip"; ExpectedResult = @{ platform = "win32"; platform_version = $null; arch = "x64"} },
@{ ReleaseName = "python-3.14.0-alpha.5-win32-x86.zip"; ExpectedResult = @{ platform = "win32"; platform_version = $null; arch = "x86"} },
@{ ReleaseName = "python-3.14.0-alpha.5-darwin-x64-freethreaded.tar.gz"; ExpectedResult = @{ platform = "darwin"; platform_version = $null; arch = "x64-freethreaded"} },
@{ ReleaseName = "python-3.14.0-alpha.5-linux-20.04-x64-freethreaded.tar.gz"; ExpectedResult = @{ platform = "linux"; platform_version = "20.04"; arch = "x64-freethreaded"} },
@{ ReleaseName = "python-3.14.0-alpha.5-linux-22.04-x64-freethreaded.tar.gz"; ExpectedResult = @{ platform = "linux"; platform_version = "22.04"; arch = "x64-freethreaded"} },
@{ ReleaseName = "python-3.14.0-alpha.5-win32-x64-freethreaded.zip"; ExpectedResult = @{ platform = "win32"; platform_version = $null; arch = "x64-freethreaded"} },
@{ ReleaseName = "python-3.14.0-alpha.5-win32-x86-freethreaded.zip"; ExpectedResult = @{ platform = "win32"; platform_version = $null; arch = "x86-freethreaded"} }
) | ForEach-Object { $_.Configuration = $Configuration; $_ }
Describe "Python manifest config" {
Context "Stable versions" {
It "<ReleaseName>" -TestCases $stableTestCases {
$Release = @{ name = $ReleaseName }
$asset = New-AssetItem -ReleaseAsset $Release -Configuration $Configuration
$asset.platform | Should -Be $ExpectedResult.platform
$asset.platform_version | Should -Be $ExpectedResult.platform_version
$asset.arch | Should -Be $ExpectedResult.arch
}
}
Context "Prerelease versions" {
It "<ReleaseName>" -TestCases $unstableTestCases {
$Release = @{ name = $ReleaseName }
$asset = New-AssetItem -ReleaseAsset $Release -Configuration $Configuration
$asset.platform | Should -Be $ExpectedResult.platform
$asset.platform_version | Should -Be $ExpectedResult.platform_version
$asset.arch | Should -Be $ExpectedResult.arch
}
}
}

View File

@@ -1,11 +0,0 @@
if ($env:PLATFORM -match 'windows') {
$PythonFilter = "Name like '%Python%'"
Get-WmiObject Win32_Product -Filter $PythonFilter | Foreach-Object {
Write-Host "Uninstalling $($_.Name) ..."
$_.Uninstall() | Out-Null
}
}
$PythonToolcachePath = Join-Path -Path $env:AGENT_TOOLSDIRECTORY -ChildPath "Python"
Write-Host "Removing Python toolcache directory ..."
Remove-Item -Path $PythonToolcachePath -Recurse -Force

View File

@@ -1,31 +1,43 @@
param (
[Version] [Parameter (Mandatory = $true)] [ValidateNotNullOrEmpty()]
[semver] [Parameter (Mandatory = $true)] [ValidateNotNullOrEmpty()]
$Version,
[String] [Parameter (Mandatory = $true)] [ValidateNotNullOrEmpty()]
$Platform
[string] [Parameter (Mandatory = $true)] [ValidateNotNullOrEmpty()]
$Platform,
[string] [Parameter (Mandatory = $true)] [ValidateNotNullOrEmpty()]
$Architecture
)
$HardwareArchitecture = $Architecture -replace "-freethreaded", ""
Import-Module (Join-Path $PSScriptRoot "../helpers/pester-extensions.psm1")
Import-Module (Join-Path $PSScriptRoot "../helpers/common-helpers.psm1")
Import-Module (Join-Path $PSScriptRoot "../builders/python-version.psm1")
function Analyze-MissingModules([string] $buildOutputLocation) {
$searchStringStart = "Failed to build these modules:"
$searchStringEnd = "running build_scripts"
$pattern = "$searchStringStart(.*?)$searchStringEnd"
BeforeAll {
function Analyze-MissingModules([string] $buildOutputLocation) {
$searchStringStart = "Failed to build these modules:"
$searchStringEnd = "running build_scripts"
$pattern = "$searchStringStart(.*?)$searchStringEnd"
$buildContent = Get-Content -Path $buildOutputLocation
$splitBuiltOutput = $buildContent -split "\n";
$buildContent = Get-Content -Path $buildOutputLocation
$splitBuiltOutput = $buildContent -split "\n";
### Search for missing modules that are displayed between the search strings
$regexMatch = [regex]::match($SplitBuiltOutput, $Pattern)
if ($regexMatch.Success)
{
Write-Host "Failed missing modules:"
Write-Host $regexMatch.Groups[1].Value
return 1
### Search for missing modules that are displayed between the search strings
$regexMatch = [regex]::match($SplitBuiltOutput, $Pattern)
if ($regexMatch.Success)
{
$module = $regexMatch.Groups[1].Value.Trim()
Write-Host "Failed missing modules:"
Write-Host $module
if ( ($module -eq "_tkinter") -and ( [semver]"$($Version.Major).$($Version.Minor)" -ge [semver]"3.10" -and $Version.PreReleaseLabel ) ) {
Write-Host "$module $Version ignored"
} else {
return 1
}
}
return 0
}
return 0
}
Describe "Tests" {
@@ -33,7 +45,7 @@ Describe "Tests" {
"python --version" | Should -ReturnZeroExitCode
$pythonLocation = (Get-Command "python").Path
$pythonLocation | Should -Not -BeNullOrEmpty
$expectedPath = Join-Path -Path $env:AGENT_TOOLSDIRECTORY -ChildPath "Python"
$expectedPath = Join-Path -Path $env:RUNNER_TOOL_CACHE -ChildPath "Python"
$pythonLocation.startsWith($expectedPath) | Should -BeTrue
}
@@ -41,10 +53,28 @@ Describe "Tests" {
"python ./sources/simple-test.py" | Should -ReturnZeroExitCode
}
# linux has no display name and no $DISPLAY environment variable - skip tk test
# if (-not (($Platform -match "ubuntu") -or ($Platform -match "linux"))) {
# It "Check if tcl/tk has the same headed and library versions" {
# "python ./sources/tcltk.py" | Should -ReturnZeroExitCode
# }
# }
if (($Version -lt "3.11.0") -and (($Platform -ne "darwin") -or ($HardwareArchitecture -ne "arm64"))) {
It "Check if sqlite3 module is installed" {
"python ./sources/python-sqlite3.py" | Should -ReturnZeroExitCode
}
}
It "Run pip" {
"pip install requests" | Should -ReturnZeroExitCode
"pip uninstall requests -y" | Should -ReturnZeroExitCode
}
if (IsNixPlatform $Platform) {
It "Check for failed modules in build_output" {
$buildOutputLocation = Join-Path $env:BUILD_BINARIESDIRECTORY "build_output.txt"
$buildOutputLocation = Join-Path $env:RUNNER_TEMP "build_output.txt"
Analyze-MissingModules $buildOutputLocation | Should -Be 0
}
@@ -53,7 +83,8 @@ Describe "Tests" {
}
It "Check if python configuration is correct" {
"python ./sources/python-config-test.py" | Should -ReturnZeroExitCode
$nativeVersion = Convert-Version -version $Version
"python ./sources/python-config-test.py $Version $nativeVersion $Architecture" | Should -ReturnZeroExitCode
}
It "Check if shared libraries are linked correctly" {
@@ -61,12 +92,11 @@ Describe "Tests" {
}
}
# Pyinstaller 3.5 does not support Python 3.8.0. Check issue https://github.com/pyinstaller/pyinstaller/issues/4311
if ($Version -lt "3.8.0") {
It "Validate Pyinstaller" {
"pip install pyinstaller" | Should -ReturnZeroExitCode
"pyinstaller --onefile ./sources/simple-test.py" | Should -ReturnZeroExitCode
"./dist/simple-test" | Should -ReturnZeroExitCode
}
It "Check urlopen with HTTPS works" {
"python ./sources/python-urlopen-https.py" | Should -ReturnZeroExitCode
}
}
It "Check a single dist-info per distribution is present" {
"python ./sources/dist-info.py" | Should -ReturnZeroExitCode
}
}

View File

@@ -0,0 +1,24 @@
import glob
import os.path
import sysconfig
from collections import defaultdict
def check_dist_info():
paths = set([sysconfig.get_path("purelib"), sysconfig.get_path("platlib")])
versions = defaultdict(list)
for path in paths:
pattern = os.path.join(path, "*.dist-info")
for dist_info in glob.glob(pattern):
name = os.path.basename(dist_info).split("-", maxsplit=1)[0]
versions[name].append(dist_info)
exit_code = 0
for name in versions:
if len(versions[name]) > 1:
print("multiple dist-info found for {}: {}".format(name, versions[name]))
exit_code = 1
exit(exit_code)
if __name__ == "__main__":
check_dist_info()

View File

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

View File

@@ -1,4 +1,3 @@
import distutils.sysconfig
import sysconfig
import sys
import platform
@@ -6,18 +5,36 @@ import os
# Define variables
os_type = platform.system()
version = sys.version.split(" ")[0]
version = sys.argv[1]
nativeVersion = sys.argv[2]
architecture = sys.argv[3]
hw_architecture = architecture.replace('-freethreaded', '')
versions=version.split(".")
version_major=int(versions[0])
version_minor=int(versions[1])
pkg_installer = os_type == 'Darwin' and ((version_major == 3 and version_minor >= 11) or (hw_architecture == "arm64"))
lib_dir_path = sysconfig.get_config_var('LIBDIR')
ld_library_name = sysconfig.get_config_var('LDLIBRARY')
is_shared = sysconfig.get_config_var('Py_ENABLE_SHARED')
have_libreadline = sysconfig.get_config_var("HAVE_LIBREADLINE")
is_free_threaded = sysconfig.get_config_var('Py_GIL_DISABLED')
### Define expected variables
if os_type == 'Linux': expected_ld_library_extension = 'so'
if os_type == 'Darwin': expected_ld_library_extension = 'dylib'
expected_lib_dir_path = '{0}/Python/{1}/x64/lib'.format(os.getenv("AGENT_TOOLSDIRECTORY"), version)
if is_free_threaded:
framework_name = 'PythonT.framework'
else:
framework_name = 'Python.framework'
if pkg_installer:
expected_lib_dir_path = f'/Library/Frameworks/{framework_name}/Versions/{version_major}.{version_minor}/lib'
else:
expected_lib_dir_path = f'{os.getenv("AGENT_TOOLSDIRECTORY")}/Python/{version}/{architecture}/lib'
# Check modules
### Validate libraries path
@@ -28,7 +45,7 @@ if lib_dir_path != expected_lib_dir_path:
### Validate shared libraries
if is_shared:
print('%s was built with shared extensions' % ld_library_name)
### Validate libpython extension
ld_library_extension = ld_library_name.split('.')[-1]
if ld_library_extension != expected_ld_library_extension:
@@ -36,33 +53,37 @@ if is_shared:
exit(1)
else:
print('%s was built without shared extensions' % ld_library_name)
exit(1)
if not pkg_installer:
exit(1)
### Validate macOS
if os_type == 'Darwin':
### Validate openssl links
if version < "3.7.0":
expected_ldflags = '-L/usr/local/opt/openssl@1.1/lib'
if version_major == 3 and version_minor < 7:
expected_ldflags = '-L/usr/local/opt/openssl@3/lib'
ldflags = sysconfig.get_config_var('LDFLAGS')
if not expected_ldflags in ldflags:
print('Invalid ldflags: %s; Expected: %s' % (ldflags, expected_ldflags))
exit(1)
else:
expected_openssl_includes = '-I/usr/local/opt/openssl/include'
expected_openssl_ldflags ='-L/usr/local/opt/openssl/lib'
expected_openssl_includes = '-I/usr/local/opt/openssl@3/include'
expected_openssl_ldflags ='-L/usr/local/opt/openssl@3/lib'
openssl_includes = sysconfig.get_config_var('OPENSSL_INCLUDES')
openssl_ldflags = sysconfig.get_config_var('OPENSSL_LDFLAGS')
if openssl_includes != expected_openssl_includes:
print('Invalid openssl_includes: %s; Expected: %s' % (openssl_includes, expected_openssl_includes))
exit(1)
if not pkg_installer:
exit(1)
if openssl_ldflags != expected_openssl_ldflags:
print('Invalid openssl_ldflags: %s; Expected: %s' % (openssl_ldflags, expected_openssl_ldflags))
exit(1)
if not pkg_installer:
exit(1)
### Validate libreadline
if not have_libreadline:
print('Missing libreadline')
exit(1)
if sys.version_info < (3, 12):
if not have_libreadline:
print('Missing libreadline')
exit(1)

View File

@@ -3,12 +3,10 @@ Make sure all the optional modules are installed.
This is needed for Linux since we build from source.
"""
from __future__ import print_function
import importlib
import sys
# The Python standard library as of Python 3.0
# The Python standard library as of Python 3.9
standard_library = [
'abc',
'aifc',
@@ -17,6 +15,7 @@ standard_library = [
'ast',
'asynchat',
'asyncore',
'asyncio',
'base64',
'bdb',
'binhex',
@@ -34,14 +33,17 @@ standard_library = [
'collections',
'colorsys',
'compileall',
'concurrent',
'configparser',
'contextlib',
'contextvars',
'copy',
'copyreg',
'crypt',
'csv',
'ctypes',
'curses',
'dataclasses',
'datetime',
'dbm',
'decimal',
@@ -49,9 +51,11 @@ standard_library = [
'dis',
'distutils',
'doctest',
'dummy_threading',
'email',
'encodings',
'ensurepip',
'enum',
'faulthandler',
'filecmp',
'fileinput',
'fnmatch',
@@ -77,13 +81,14 @@ standard_library = [
'importlib',
'inspect',
'io',
'ipaddress',
'json',
'keyword',
'lib2to3',
'linecache',
'locale',
'logging',
'macpath',
'lzma',
'mailbox',
'mailcap',
'mimetypes',
@@ -98,6 +103,7 @@ standard_library = [
'operator',
'optparse',
'os',
'pathlib',
'pdb',
'pickle',
'pickletools',
@@ -124,6 +130,8 @@ standard_library = [
'rlcompleter',
'runpy',
'sched',
'secrets',
'selectors',
'shelve',
'shlex',
'shutil',
@@ -139,7 +147,9 @@ standard_library = [
'sre_constants',
'sre_parse',
'ssl',
'_ssl',
'stat',
'statistics',
'string',
'stringprep',
'struct',
@@ -162,14 +172,17 @@ standard_library = [
'tokenize',
'trace',
'traceback',
'tracemalloc',
'tty',
'turtle',
'turtledemo',
'types',
'typing',
'unittest',
'urllib',
'uu',
'uuid',
'venv',
'warnings',
'wave',
'weakref',
@@ -178,79 +191,56 @@ standard_library = [
'xdrlib',
'xml',
'xmlrpc',
'zipapp',
'zipfile'
]
# Modules that had different names in Python 2
if sys.version_info.major == 2:
def replace(lst, old, new):
lst[lst.index(old)] = new
# Keys are the Python 2 names
# Values are the Python 3 names
renames = {
'ConfigParser': 'configparser',
'copy_reg': 'copyreg',
'HTMLParser': 'html',
'httplib': 'http',
'Queue': 'queue',
'repr': 'reprlib',
'SocketServer': 'socketserver',
'xmlrpclib': 'xmlrpc',
'Tkinter': 'tkinter'
}
# All of the Python 3 names should be in the list
for python2name, python3name in renames.items():
replace(standard_library, python3name, python2name)
# Add new modules
# See https://docs.python.org/3/whatsnew/index.html
if sys.version_info >= (3, 2):
standard_library.extend([
'concurrent',
])
# 'symbol' and 'formatter' modules have been removed from Python 3.10
if sys.version_info >= (3, 10):
standard_library.remove('symbol')
standard_library.remove('formatter')
if sys.version_info >= (3, 3):
standard_library.extend([
'ipaddress',
'faulthandler',
'lzma',
'venv',
])
# 'binhex' module has been removed from Python 3.11
if sys.version_info >= (3, 11):
standard_library.remove('binhex')
if sys.version_info >= (3, 4):
standard_library.extend([
'asyncio',
'ensurepip',
'enum',
'pathlib',
'selectors',
'statistics',
'tracemalloc',
])
# 'smtpd', 'asyncore' and 'asynchat' modules have been removed from Python 3.12
# https://docs.python.org/dev/whatsnew/3.12.html
if sys.version_info >= (3, 12):
standard_library.remove('distutils')
standard_library.remove('imp')
standard_library.remove('smtpd')
standard_library.remove('asyncore')
standard_library.remove('asynchat')
if sys.version_info >= (3, 5):
standard_library.extend([
'typing',
'zipapp',
])
# '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')
if sys.version_info >= (3, 6):
if sys.version_info >= (3, 14):
standard_library.extend([
'secrets',
'annotationlib',
])
if sys.version_info >= (3, 7):
standard_library.extend([
'contextvars',
'dataclasses',
])
# 'macpath' module has been removed from Python 3.8
if sys.version_info > (3, 7):
standard_library.remove('macpath')
# Remove tkinter and Easter eggs
excluded_modules = [
'antigravity',
@@ -261,7 +251,6 @@ excluded_modules = [
def check_missing_modules(expected_modules):
missing = []
for module in expected_modules:
print('Try to import module ', module)
try:
importlib.import_module(module)
except:

View File

@@ -0,0 +1,19 @@
import sqlite3
from sqlite3 import Error
def create_connection(db_file):
""" create a database connection to a SQLite database """
conn = None
try:
print('Sqlite3 version: ', sqlite3.version)
conn = sqlite3.connect(db_file)
conn.enable_load_extension(True)
except Error as e:
print(e)
exit(1)
finally:
if conn:
conn.close()
if __name__ == '__main__':
create_connection(r"pythonsqlite.db")

View File

@@ -0,0 +1,6 @@
import sys
from urllib.request import urlopen
response = urlopen("https://raw.githubusercontent.com/actions/python-versions/c641695f6a07526c18f10e374e503e649fef9427/.gitignore")
data = response.read()
assert len(data) == 140, len(data)

10
tests/sources/tcltk.py Normal file
View File

@@ -0,0 +1,10 @@
import tkinter
import _tkinter
header = _tkinter.TK_VERSION
lib = tkinter.Tk().getvar('tk_version')
if lib != header:
print('header version=' + header)
print('lib version=' + lib)
exit(1)

File diff suppressed because it is too large Load Diff