Compare commits

...

233 Commits

Author SHA1 Message Date
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
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
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
34 changed files with 3951 additions and 497 deletions

1
.github/CODEOWNERS vendored Normal file
View File

@@ -0,0 +1 @@
* @actions/virtual-environments-owners

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

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

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

View File

@@ -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@v2
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
}
}

218
.github/workflows/python-builder.yml vendored Normal file
View File

@@ -0,0 +1,218 @@
name: Build python package
on:
workflow_dispatch:
inputs:
VERSION:
description: 'Python version to build and upload'
default: '3.9.9'
required: true
PUBLISH_RELEASES:
description: 'Whether to publish releases'
required: true
default: 'false'
PLATFORMS:
description: 'Platforms for execution in "os" or "os_arch" format (arch is "x64" by default)'
required: true
default: 'ubuntu-18.04,ubuntu-20.04,ubuntu-22.04,macos-10.15,windows-2019_x64,windows-2019_x86'
pull_request:
paths-ignore:
- 'versions-manifest.json'
- 'LICENSE'
- '**.md'
branches:
- 'main'
env:
VERSION: ${{ github.event.inputs.VERSION || '3.9.9' }}
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: |
$configurations = "${{ github.event.inputs.platforms || 'ubuntu-18.04,ubuntu-20.04,ubuntu-22.04,macos-10.15,windows-2019_x64,windows-2019_x86' }}".Split(",").Trim()
$matrix = @()
foreach ($configuration in $configurations) {
$parts = $configuration.Split("_")
$os = $parts[0]
$arch = if ($parts[1]) {$parts[1]} else {"x64"}
switch -wildcard ($os) {
"*ubuntu*" { $platform = $os.Replace("ubuntu","linux")}
"*macos*" { $platform = 'darwin' }
"*windows*" { $platform = 'win32' }
}
$matrix += @{
'platform' = $platform
'os' = $os
'arch' = $arch
}
}
echo "::set-output name=matrix::$($matrix | ConvertTo-Json -Compress)"
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-${{ github.event.inputs.VERSION || '3.9.9' }}-${{ matrix.platform }}-${{ matrix.arch }}
steps:
- name: Check out repository code
uses: actions/checkout@v2
with:
submodules: true
- 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@v2
with:
name: ${{ env.ARTIFACT_NAME }}
path: ${{ runner.temp }}/artifact
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-${{ github.event.inputs.VERSION || '3.9.9' }}-${{ matrix.platform }}-${{ matrix.arch }}
steps:
- name: Check out repository code
uses: actions/checkout@v2
with:
submodules: true
- name: Fully cleanup the toolcache directory before testing
run: ./helpers/clean-toolcache.ps1 -ToolName "Python"
- name: Download artifact
uses: actions/download-artifact@v2
with:
path: ${{ runner.temp }}
- 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: |
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@v2
with:
python-version: ${{ env.VERSION }}
architecture: ${{ matrix.arch }}
- 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
Import-Module Pester
$pesterContainer = New-PesterContainer -Path './python-tests.ps1' -Data @{
Version="${{ env.VERSION }}";
Platform="${{ matrix.platform }}";
}
$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' && github.event.inputs.PUBLISH_RELEASES == 'true'
needs: test_python
runs-on: ubuntu-latest
steps:
- uses: actions/download-artifact@v2
- 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: Upload release assets
uses: actions/github-script@v2
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
const fs = require('fs');
for (let artifactDir of fs.readdirSync('.')) {
let artifactName = fs.readdirSync(`${artifactDir}`)[0];
console.log(`Upload ${artifactName} asset`);
github.repos.uploadReleaseAsset({
owner: context.repo.owner,
repo: context.repo.repo,
release_id: ${{ steps.create_release.outputs.id }},
name: artifactName,
data: fs.readFileSync(`./${artifactDir}/${artifactName}`)
});
}
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@v3
with:
github-token: ${{ secrets.PERSONAL_TOKEN }}
script: |
github.actions.createWorkflowDispatch({
owner: context.repo.owner,
repo: context.repo.repo,
workflow_id: 'create-pr.yml',
ref: 'main'
});

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@v2
- 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:
PERSONAL_TOKEN: ${{ secrets.PERSONAL_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-18.04, ubuntu-20.04]
python: [3.5.4, 3.6.7, 3.7.5, 3.8.1]
steps:
- name: setup-python ${{ matrix.python }}
uses: actions/setup-python@v2
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-18.04, ubuntu-20.04]
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))'

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

@@ -0,0 +1,48 @@
name: Validate manifest
on:
schedule:
- cron: '0 8,20 * * *'
pull_request:
branches:
- main
paths:
- 'versions-manifest.json'
env:
TOOL_NAME: "Python"
defaults:
run:
shell: pwsh
jobs:
validation:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
submodules: true
- name: Validate python-versions manifest
run: .\helpers\packages-generation\manifest-validator.ps1 -ManifestPath '.\versions-manifest.json'
check_build:
name: Check validation for failures
runs-on: ubuntu-latest
needs: [validation]
if: failure()
steps:
- uses: actions/checkout@v2
with:
submodules: true
- name: Send Slack notification if validation fails
run: |
$pipelineUrl = "$env:GITHUB_SERVER_URL/$env:GITHUB_REPOSITORY/actions/runs/$env:GITHUB_RUN_ID"
$message = "The validation of python-versions manifest failed. \nLink to the pipeline: $pipelineUrl"
.\helpers\get-new-tool-versions\send-slack-notification.ps1 -Url "${{ secrets.SLACK_CHANNEL_URL }}" `
-ToolName "${{ env.TOOL_NAME }}" `
-Text "$message" `
-ImageUrl "https://www.python.org/static/community_logos/python-powered-h-100x130.png"

2
.gitmodules vendored
View File

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

View File

@@ -10,7 +10,7 @@ Some versions are pre-installed on [virtual-environments](https://github.com/act
More versions will (soon!) be available to install on-the-fly through the [`setup-python`](https://github.com/actions/setup-python) action. More versions will (soon!) be available to install on-the-fly through the [`setup-python`](https://github.com/actions/setup-python) action.
## Adding new versions ## 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. We are trying to build and release new versions of Python as soon as they are released. Please open an issue in [actions/virtual-environments](https://github.com/actions/virtual-environments) if any versions are missing.
## Contribution ## Contribution
Contributions are welcome! See [Contributor's Guide](./CONTRIBUTING.md) for more details about contribution process and code structure Contributions are welcome! See [Contributor's Guide](./CONTRIBUTING.md) for more details about contribution process and code structure

View File

@@ -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: darwin
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: darwin
Architecture: x64
jobs:
- template: /azure-pipelines/templates/test-job.yml
- stage: Build_Python_Ubuntu_1604
dependsOn: []
variables:
VmImage: 'ubuntu-16.04'
Platform: linux-16.04
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: linux-16.04
Architecture: x64
jobs:
- template: /azure-pipelines/templates/test-job.yml
- stage: Build_Python_Ubuntu_1804
dependsOn: []
variables:
VmImage: 'ubuntu-18.04'
Platform: linux-18.04
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: linux-18.04
Architecture: x64
jobs:
- template: /azure-pipelines/templates/test-job.yml
- stage: Build_Python_Ubuntu_2004
dependsOn: []
variables:
VmImage: 'ubuntu-20.04'
Platform: linux-20.04
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: linux-20.04
Architecture: x64
jobs:
- template: /azure-pipelines/templates/test-job.yml
- stage: Build_Python_X64_Windows
dependsOn: []
variables:
VmImage: 'vs2017-win2016'
Platform: win32
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: win32
Architecture: x64
jobs:
- template: /azure-pipelines/templates/test-job.yml
- stage: Build_Python_x86_Windows
dependsOn: []
variables:
VmImage: 'vs2017-win2016'
Platform: win32
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: win32
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,87 +0,0 @@
jobs:
- job: Test_Python
pool:
name: Azure Pipelines
vmImage: $(VmImage)
steps:
- checkout: self
submodules: true
- task: PowerShell@2
displayName: Fully cleanup the toolcache directory before testing
inputs:
targetType: filePath
filePath: helpers/clean-toolcache.ps1
arguments: -ToolName "Python"
- 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 'win32') { 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'], 'win32')
- task: PowerShell@2
displayName: 'Verbose python binary links'
inputs:
TargetType: inline
script: |
$pythonLocation = which python
if ($env:PLATFORM -match 'darwin') { otool -L $pythonLocation } else { ldd $pythonLocation }
workingDirectory: '$(Build.BinariesDirectory)'
condition: ne(variables['Platform'], 'win32')
- 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 "./win-python-builder.psm1"
using module "./builders/ubuntu-python-builder.psm1" using module "./ubuntu-python-builder.psm1"
using module "./builders/macos-python-builder.psm1" using module "./macos-python-builder.psm1"
<# <#
.SYNOPSIS .SYNOPSIS
@@ -21,7 +21,7 @@ Required parameter. The platform for which Python will be built.
#> #>
param( param(
[Parameter (Mandatory=$true)][Version] $Version, [Parameter (Mandatory=$true)][semver] $Version,
[Parameter (Mandatory=$true)][string] $Platform, [Parameter (Mandatory=$true)][string] $Platform,
[string] $Architecture = "x64" [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 "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 "nix-helpers.psm1") -DisableNameChecking
Import-Module (Join-Path $PSScriptRoot "../helpers" | Join-Path -ChildPath "win-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 { function Get-PythonBuilder {
<# <#
@@ -49,13 +50,12 @@ function Get-PythonBuilder {
#> #>
param ( param(
[version] $Version, [semver] $Version,
[string] $Architecture, [string] $Architecture,
[string] $Platform [string] $Platform
) )
$Platform = $Platform.ToLower()
if ($Platform -match 'win32') { if ($Platform -match 'win32') {
$builder = [WinPythonBuilder]::New($Version, $Architecture, $Platform) $builder = [WinPythonBuilder]::New($Version, $Architecture, $Platform)
} elseif ($Platform -match 'linux') { } elseif ($Platform -match 'linux') {
@@ -71,5 +71,5 @@ function Get-PythonBuilder {
} }
### Create Python builder instance, and build artifact ### 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() $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:PERSONAL_TOKEN"
}
$actionsRepoUri = "$env:GITHUB_API_URL/repos/$env:GITHUB_REPOSITORY/actions"
Invoke-RestMethod -uri "$actionsRepoUri/workflows/python-builder.yml/dispatches" -method POST -headers $headers -body $payload
$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 { class macOSPythonBuilder : NixPythonBuilder {
<# <#
@@ -17,11 +17,18 @@ class macOSPythonBuilder : NixPythonBuilder {
#> #>
macOSPythonBuilder( macOSPythonBuilder(
[version] $version, [semver] $version,
[string] $architecture, [string] $architecture,
[string] $platform [string] $platform
) : Base($version, $architecture, $platform) { } ) : Base($version, $architecture, $platform) { }
[void] PrepareEnvironment() {
<#
.SYNOPSIS
Prepare system environment by installing dependencies and required packages.
#>
}
[void] Configure() { [void] Configure() {
<# <#
.SYNOPSIS .SYNOPSIS
@@ -40,10 +47,10 @@ class macOSPythonBuilder : NixPythonBuilder {
### and then add the appropriate paths for the header and library files to configure command. ### 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) ### Link to documentation (https://cpython-devguide.readthedocs.io/setup/#build-dependencies)
if ($this.Version -lt "3.7.0") { if ($this.Version -lt "3.7.0") {
$env:LDFLAGS = "-L$(brew --prefix openssl)/lib" $env:LDFLAGS = "-L/usr/local/opt/openssl@1.1/lib -L/usr/local/opt/zlib/lib"
$env:CFLAGS = "-I$(brew --prefix openssl)/include" $env:CFLAGS = "-I/usr/local/opt/openssl@1.1/include -I/usr/local/opt/zlib/include"
} else { } else {
$configureString += " --with-openssl=/usr/local/opt/openssl" $configureString += " --with-openssl=/usr/local/opt/openssl@1.1"
} }
### Compile with support of loadable sqlite extensions. Unavailable for Python 2.* ### Compile with support of loadable sqlite extensions. Unavailable for Python 2.*
@@ -52,19 +59,9 @@ class macOSPythonBuilder : NixPythonBuilder {
$configureString += " --enable-loadable-sqlite-extensions" $configureString += " --enable-loadable-sqlite-extensions"
$env:LDFLAGS += " -L$(brew --prefix sqlite3)/lib" $env:LDFLAGS += " -L$(brew --prefix sqlite3)/lib"
$env:CFLAGS += " -I$(brew --prefix sqlite3)/include" $env:CFLAGS += " -I$(brew --prefix sqlite3)/include"
$env:CPPFLAGS += "-I$(brew --prefix sqlite3)/include"
} }
Execute-Command -Command $configureString Execute-Command -Command $configureString
} }
[void] PrepareEnvironment() {
<#
.SYNOPSIS
Prepare system environment by installing dependencies and required packages.
#>
### 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 /"
}
} }

View File

@@ -1,4 +1,4 @@
using module "./builders/python-builder.psm1" using module "./python-builder.psm1"
class NixPythonBuilder : PythonBuilder { class NixPythonBuilder : PythonBuilder {
<# <#
@@ -33,13 +33,12 @@ class NixPythonBuilder : PythonBuilder {
[string] $OutputArtifactName [string] $OutputArtifactName
NixPythonBuilder( NixPythonBuilder(
[version] $version, [semver] $version,
[string] $architecture, [string] $architecture,
[string] $platform [string] $platform
) : Base($version, $architecture, $platform) { ) : Base($version, $architecture, $platform) {
$this.InstallationTemplateName = "nix-setup-template.sh" $this.InstallationTemplateName = "nix-setup-template.sh"
$this.InstallationScriptName = "setup.sh" $this.InstallationScriptName = "setup.sh"
$this.OutputArtifactName = "python-$Version-$Platform-$Architecture.tar.gz" $this.OutputArtifactName = "python-$Version-$Platform-$Architecture.tar.gz"
} }
@@ -50,8 +49,10 @@ class NixPythonBuilder : PythonBuilder {
#> #>
$base = $this.GetBaseUri() $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() { [string] GetPythonBinary() {
@@ -95,9 +96,7 @@ class NixPythonBuilder : PythonBuilder {
$installationTemplateContent = Get-Content -Path $installationTemplateLocation -Raw $installationTemplateContent = Get-Content -Path $installationTemplateLocation -Raw
$variablesToReplace = @{ $variablesToReplace = @{
"{{__VERSION_MAJOR__}}" = $this.Version.Major; "{{__VERSION_FULL__}}" = $this.Version;
"{{__VERSION_MINOR__}}" = $this.Version.Minor;
"{{__VERSION_BUILD__}}" = $this.Version.Build;
} }
$variablesToReplace.keys | ForEach-Object { $installationTemplateContent = $installationTemplateContent.Replace($_, $variablesToReplace[$_]) } $variablesToReplace.keys | ForEach-Object { $installationTemplateContent = $installationTemplateContent.Replace($_, $variablesToReplace[$_]) }

View File

@@ -29,7 +29,7 @@ class PythonBuilder {
#> #>
[version] $Version [semver] $Version
[string] $Architecture [string] $Architecture
[string] $Platform [string] $Platform
[string] $HostedToolcacheLocation [string] $HostedToolcacheLocation
@@ -38,17 +38,23 @@ class PythonBuilder {
[string] $ArtifactFolderLocation [string] $ArtifactFolderLocation
[string] $InstallationTemplatesLocation [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.Version = $version
$this.Architecture = $architecture $this.Architecture = $architecture
$this.Platform = $platform $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() { [uri] GetBaseUri() {
@@ -79,11 +85,21 @@ class PythonBuilder {
return "$pythonToolcacheLocation/$($this.Version)/$($this.Architecture)" 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)"
}
[void] PreparePythonToolcacheLocation() { [void] PreparePythonToolcacheLocation() {
<# <#
.SYNOPSIS .SYNOPSIS
Prepare system hostedtoolcache folder for new Python version. Prepare system hostedtoolcache folder for new Python version.
#> #>
$pythonBinariesLocation = $this.GetFullPythonToolcacheLocation() $pythonBinariesLocation = $this.GetFullPythonToolcacheLocation()
if (Test-Path $pythonBinariesLocation) { 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 { class UbuntuPythonBuilder : NixPythonBuilder {
<# <#
@@ -17,7 +17,7 @@ class UbuntuPythonBuilder : NixPythonBuilder {
#> #>
UbuntuPythonBuilder( UbuntuPythonBuilder(
[version] $version, [semver] $version,
[string] $architecture, [string] $architecture,
[string] $platform [string] $platform
) : Base($version, $architecture, $platform) { } ) : Base($version, $architecture, $platform) { }
@@ -68,6 +68,7 @@ class UbuntuPythonBuilder : NixPythonBuilder {
} else { } else {
$tkinterInstallString = "sudo apt install -y python-tk tk-dev" $tkinterInstallString = "sudo apt install -y python-tk tk-dev"
} }
Execute-Command -Command $tkinterInstallString Execute-Command -Command $tkinterInstallString
### Install dependent packages ### Install dependent packages
@@ -85,10 +86,7 @@ class UbuntuPythonBuilder : NixPythonBuilder {
Execute-Command -Command "sudo apt install -y $_" Execute-Command -Command "sudo apt install -y $_"
} }
if ($this.Platform -ne "linux-16.04") { ### On Ubuntu-1804, libgdbm-compat-dev has older modules that are no longer in libgdbm-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"
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 { class WinPythonBuilder : PythonBuilder {
<# <#
@@ -27,7 +27,7 @@ class WinPythonBuilder : PythonBuilder {
[string] $OutputArtifactName [string] $OutputArtifactName
WinPythonBuilder( WinPythonBuilder(
[version] $version, [semver] $version,
[string] $architecture, [string] $architecture,
[string] $platform [string] $platform
) : Base($version, $architecture, $platform) { ) : Base($version, $architecture, $platform) {
@@ -72,10 +72,12 @@ class WinPythonBuilder : PythonBuilder {
#> #>
$base = $this.GetBaseUri() $base = $this.GetBaseUri()
$versionName = $this.GetBaseVersion()
$nativeVersion = Convert-Version -version $this.Version
$architecture = $this.GetArchitectureExtension() $architecture = $this.GetArchitectureExtension()
$extension = $this.GetPythonExtension() $extension = $this.GetPythonExtension()
$uri = "${base}/$($this.Version)/python-$($this.Version)${architecture}${extension}" $uri = "${base}/${versionName}/python-${nativeVersion}${architecture}${extension}"
return $uri return $uri
} }

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\\d+)",
"groups": { "groups": {
"arch": 3, "arch": 4,
"platform": 1, "platform": 2,
"platform_version": 2 "platform_version": 3
} }
} }

Submodule helpers updated: 350e2888aa...6f1aa3ce73

View File

@@ -1,13 +1,12 @@
set -e set -e
MAJOR_VERSION="{{__VERSION_MAJOR__}}" PYTHON_FULL_VERSION="{{__VERSION_FULL__}}"
MINOR_VERSION="{{__VERSION_MINOR__}}" MAJOR_VERSION=$(echo $PYTHON_FULL_VERSION | cut -d '.' -f 1)
BUILD_VERSION="{{__VERSION_BUILD__}}" MINOR_VERSION=$(echo $PYTHON_FULL_VERSION | cut -d '.' -f 2)
PYTHON_MAJOR=python$MAJOR_VERSION PYTHON_MAJOR=python$MAJOR_VERSION
PYTHON_MAJOR_DOT_MINOR=python$MAJOR_VERSION.$MINOR_VERSION PYTHON_MAJOR_DOT_MINOR=python$MAJOR_VERSION.$MINOR_VERSION
PYTHON_MAJORMINOR=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 if [ -z ${AGENT_TOOLSDIRECTORY+x} ]; then
# No AGENT_TOOLSDIRECTORY on GitHub images # No AGENT_TOOLSDIRECTORY on GitHub images
@@ -49,9 +48,9 @@ fi
chmod +x ../python $PYTHON_MAJOR $PYTHON_MAJOR_DOT_MINOR $PYTHON_MAJORMINOR python chmod +x ../python $PYTHON_MAJOR $PYTHON_MAJOR_DOT_MINOR $PYTHON_MAJORMINOR python
echo "Upgrading PIP..." echo "Upgrading pip..."
./python -m ensurepip ./python -m ensurepip
./python -m pip install --ignore-installed pip ./python -m pip install --ignore-installed pip --disable-pip-version-check --no-warn-script-location
echo "Create complete file" echo "Create complete file"
touch $PYTHON_TOOLCACHE_VERSION_PATH/x64.complete touch $PYTHON_TOOLCACHE_VERSION_PATH/x64.complete

View File

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

View File

@@ -0,0 +1,42 @@
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.8.3-darwin-x64.tar.gz"; ExpectedResult = @{ platform = "darwin"; platform_version = $null; arch = "x64"} },
@{ ReleaseName = "python-3.8.3-linux-18.04-x64.tar.gz"; ExpectedResult = @{ platform = "linux"; platform_version = "18.04"; arch = "x64"} },
@{ ReleaseName = "python-3.8.3-linux-20.04-x64.tar.gz"; ExpectedResult = @{ platform = "linux"; platform_version = "20.04"; arch = "x64"} },
@{ ReleaseName = "python-3.8.3-win32-x64.zip"; ExpectedResult = @{ platform = "win32"; platform_version = $null; arch = "x64"} },
@{ ReleaseName = "python-3.8.3-win32-x86.zip"; ExpectedResult = @{ platform = "win32"; platform_version = $null; arch = "x86"} }
) | ForEach-Object { $_.Configuration = $Configuration; $_ }
$unstableTestCases = @(
@{ ReleaseName = "python-3.9.0-alpha.2-darwin-x64.tar.gz"; ExpectedResult = @{ platform = "darwin"; platform_version = $null; arch = "x64"} },
@{ ReleaseName = "python-3.9.0-rc.4-linux-18.04-x64.tar.gz"; ExpectedResult = @{ platform = "linux"; platform_version = "18.04"; arch = "x64"} },
@{ ReleaseName = "python-3.9.0-beta.2-linux-20.04-x64.tar.gz"; ExpectedResult = @{ platform = "linux"; platform_version = "20.04"; arch = "x64"} },
@{ ReleaseName = "python-3.9.0-beta.2-win32-x64.zip"; ExpectedResult = @{ platform = "win32"; platform_version = $null; arch = "x64"} },
@{ ReleaseName = "python-3.9.0-beta.2-win32-x86.zip"; ExpectedResult = @{ platform = "win32"; platform_version = $null; arch = "x86"} }
) | 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,31 +1,39 @@
param ( param (
[Version] [Parameter (Mandatory = $true)] [ValidateNotNullOrEmpty()] [semver] [Parameter (Mandatory = $true)] [ValidateNotNullOrEmpty()]
$Version, $Version,
[String] [Parameter (Mandatory = $true)] [ValidateNotNullOrEmpty()] [string] [Parameter (Mandatory = $true)] [ValidateNotNullOrEmpty()]
$Platform $Platform
) )
Import-Module (Join-Path $PSScriptRoot "../helpers/pester-extensions.psm1") Import-Module (Join-Path $PSScriptRoot "../helpers/pester-extensions.psm1")
Import-Module (Join-Path $PSScriptRoot "../helpers/common-helpers.psm1") Import-Module (Join-Path $PSScriptRoot "../helpers/common-helpers.psm1")
Import-Module (Join-Path $PSScriptRoot "../builders/python-version.psm1")
function Analyze-MissingModules([string] $buildOutputLocation) { BeforeAll {
$searchStringStart = "Failed to build these modules:" function Analyze-MissingModules([string] $buildOutputLocation) {
$searchStringEnd = "running build_scripts" $searchStringStart = "Failed to build these modules:"
$pattern = "$searchStringStart(.*?)$searchStringEnd" $searchStringEnd = "running build_scripts"
$pattern = "$searchStringStart(.*?)$searchStringEnd"
$buildContent = Get-Content -Path $buildOutputLocation $buildContent = Get-Content -Path $buildOutputLocation
$splitBuiltOutput = $buildContent -split "\n"; $splitBuiltOutput = $buildContent -split "\n";
### Search for missing modules that are displayed between the search strings ### Search for missing modules that are displayed between the search strings
$regexMatch = [regex]::match($SplitBuiltOutput, $Pattern) $regexMatch = [regex]::match($SplitBuiltOutput, $Pattern)
if ($regexMatch.Success) if ($regexMatch.Success)
{ {
Write-Host "Failed missing modules:" $module = $regexMatch.Groups[1].Value.Trim()
Write-Host $regexMatch.Groups[1].Value Write-Host "Failed missing modules:"
return 1 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" { Describe "Tests" {
@@ -33,7 +41,7 @@ Describe "Tests" {
"python --version" | Should -ReturnZeroExitCode "python --version" | Should -ReturnZeroExitCode
$pythonLocation = (Get-Command "python").Path $pythonLocation = (Get-Command "python").Path
$pythonLocation | Should -Not -BeNullOrEmpty $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 $pythonLocation.startsWith($expectedPath) | Should -BeTrue
} }
@@ -41,16 +49,21 @@ Describe "Tests" {
"python ./sources/simple-test.py" | Should -ReturnZeroExitCode "python ./sources/simple-test.py" | Should -ReturnZeroExitCode
} }
if ($Version -ge "3.2.0") { if (($Version -ge "3.2.0") -and -not ([semver]"$($Version.Major).$($Version.Minor)" -eq [semver]"3.11" -and $Version.PreReleaseLabel)) {
It "Check if sqlite3 module is installed" { It "Check if sqlite3 module is installed" {
"python ./sources/python-sqlite3.py" | Should -ReturnZeroExitCode "python ./sources/python-sqlite3.py" | Should -ReturnZeroExitCode
} }
} }
It "Run pip" {
"pip install requests" | Should -ReturnZeroExitCode
"pip uninstall requests -y" | Should -ReturnZeroExitCode
}
if (IsNixPlatform $Platform) { if (IsNixPlatform $Platform) {
It "Check for failed modules in build_output" { 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 Analyze-MissingModules $buildOutputLocation | Should -Be 0
} }
@@ -59,7 +72,8 @@ Describe "Tests" {
} }
It "Check if python configuration is correct" { 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" | Should -ReturnZeroExitCode
} }
It "Check if shared libraries are linked correctly" { It "Check if shared libraries are linked correctly" {
@@ -68,11 +82,11 @@ Describe "Tests" {
} }
# Pyinstaller 3.5 does not support Python 3.8.0. Check issue https://github.com/pyinstaller/pyinstaller/issues/4311 # 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") { if ($Version -lt "3.8.0" -and $Version.Major -ne "2") {
It "Validate Pyinstaller" { It "Validate Pyinstaller" {
"pip install pyinstaller" | Should -ReturnZeroExitCode "pip install pyinstaller" | Should -ReturnZeroExitCode
"pyinstaller --onefile ./sources/simple-test.py" | Should -ReturnZeroExitCode "pyinstaller --onefile ./sources/simple-test.py" | Should -ReturnZeroExitCode
"./dist/simple-test" | Should -ReturnZeroExitCode "./dist/simple-test" | Should -ReturnZeroExitCode
} }
} }
} }

View File

@@ -1,4 +1,5 @@
import distutils.sysconfig import distutils.sysconfig
from distutils.version import LooseVersion
import sysconfig import sysconfig
import sys import sys
import platform import platform
@@ -6,7 +7,8 @@ import os
# Define variables # Define variables
os_type = platform.system() os_type = platform.system()
version = sys.version.split(" ")[0] version = sys.argv[1]
nativeVersion = sys.argv[2]
lib_dir_path = sysconfig.get_config_var('LIBDIR') lib_dir_path = sysconfig.get_config_var('LIBDIR')
ld_library_name = sysconfig.get_config_var('LDLIBRARY') ld_library_name = sysconfig.get_config_var('LDLIBRARY')
@@ -41,7 +43,7 @@ else:
### Validate macOS ### Validate macOS
if os_type == 'Darwin': if os_type == 'Darwin':
### Validate openssl links ### Validate openssl links
if version < "3.7.0": if LooseVersion(nativeVersion) < LooseVersion("3.7.0"):
expected_ldflags = '-L/usr/local/opt/openssl@1.1/lib' expected_ldflags = '-L/usr/local/opt/openssl@1.1/lib'
ldflags = sysconfig.get_config_var('LDFLAGS') ldflags = sysconfig.get_config_var('LDFLAGS')
@@ -49,8 +51,8 @@ if os_type == 'Darwin':
print('Invalid ldflags: %s; Expected: %s' % (ldflags, expected_ldflags)) print('Invalid ldflags: %s; Expected: %s' % (ldflags, expected_ldflags))
exit(1) exit(1)
else: else:
expected_openssl_includes = '-I/usr/local/opt/openssl/include' expected_openssl_includes = '-I/usr/local/opt/openssl@1.1/include'
expected_openssl_ldflags ='-L/usr/local/opt/openssl/lib' expected_openssl_ldflags ='-L/usr/local/opt/openssl@1.1/lib'
openssl_includes = sysconfig.get_config_var('OPENSSL_INCLUDES') openssl_includes = sysconfig.get_config_var('OPENSSL_INCLUDES')
openssl_ldflags = sysconfig.get_config_var('OPENSSL_LDFLAGS') openssl_ldflags = sysconfig.get_config_var('OPENSSL_LDFLAGS')

View File

@@ -7,6 +7,7 @@ from __future__ import print_function
import importlib import importlib
import sys import sys
import platform
# The Python standard library as of Python 3.0 # The Python standard library as of Python 3.0
standard_library = [ standard_library = [
@@ -139,6 +140,7 @@ standard_library = [
'sre_constants', 'sre_constants',
'sre_parse', 'sre_parse',
'ssl', 'ssl',
'_ssl',
'stat', 'stat',
'string', 'string',
'stringprep', 'stringprep',
@@ -251,6 +253,24 @@ if sys.version_info >= (3, 7):
if sys.version_info > (3, 7): if sys.version_info > (3, 7):
standard_library.remove('macpath') standard_library.remove('macpath')
# 'dummy_threading' module has been removed from Python 3.9
if sys.version_info > (3, 8):
standard_library.remove('dummy_threading')
# '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')
# 'binhex' module has been removed from Python 3.11
if sys.version_info >= (3, 11):
standard_library.remove('binhex')
# Exclude tkinter and turtle for Python 3.11 alpha temporarily
if sys.version_info >= (3, 11) and platform.system() == 'Linux' and '18.04' in platform.version():
standard_library.remove('tkinter')
standard_library.remove('turtle')
# Remove tkinter and Easter eggs # Remove tkinter and Easter eggs
excluded_modules = [ excluded_modules = [
'antigravity', 'antigravity',
@@ -261,7 +281,6 @@ excluded_modules = [
def check_missing_modules(expected_modules): def check_missing_modules(expected_modules):
missing = [] missing = []
for module in expected_modules: for module in expected_modules:
print('Try to import module ', module)
try: try:
importlib.import_module(module) importlib.import_module(module)
except: except:

File diff suppressed because it is too large Load Diff