From 8966067fa4382fbf47633e715a5e826f3346f524 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Langa?= Date: Mon, 21 Oct 2024 15:03:58 +0200 Subject: [PATCH 01/19] Enable aarch64 Ubuntu CI jobs --- .github/workflows/reusable-ubuntu.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/reusable-ubuntu.yml b/.github/workflows/reusable-ubuntu.yml index 0cf40ba8a9b03b..a14802392f1aa9 100644 --- a/.github/workflows/reusable-ubuntu.yml +++ b/.github/workflows/reusable-ubuntu.yml @@ -20,7 +20,7 @@ jobs: strategy: fail-fast: false matrix: - os: [ubuntu-22.04] + os: [ubuntu-22.04, ubuntu24.04-aarch64] env: FORCE_COLOR: 1 OPENSSL_VER: 3.0.15 From 600446967d30a0922811bb23e9820d6f678cfe40 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Langa?= Date: Mon, 21 Oct 2024 15:19:45 +0200 Subject: [PATCH 02/19] Remove unnecessary libmpdec-dev --- .github/workflows/posix-deps-apt.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/posix-deps-apt.sh b/.github/workflows/posix-deps-apt.sh index bfc5a0874281bd..d5538cd9367ec6 100755 --- a/.github/workflows/posix-deps-apt.sh +++ b/.github/workflows/posix-deps-apt.sh @@ -13,7 +13,6 @@ apt-get -yq install \ libgdbm-dev \ libgdbm-compat-dev \ liblzma-dev \ - libmpdec-dev \ libncurses5-dev \ libreadline6-dev \ libsqlite3-dev \ From 2fb7ee2f355715cd2a3911a404326f599375c371 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Langa?= Date: Mon, 21 Oct 2024 15:43:14 +0200 Subject: [PATCH 03/19] bump to see how a larger builder does From 88d1838ed94856d1dd1086ef53b775aea80cf185 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Langa?= Date: Mon, 21 Oct 2024 15:52:41 +0200 Subject: [PATCH 04/19] Just say jay --- .github/workflows/reusable-ubuntu.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/reusable-ubuntu.yml b/.github/workflows/reusable-ubuntu.yml index a14802392f1aa9..2c5ac99075cc48 100644 --- a/.github/workflows/reusable-ubuntu.yml +++ b/.github/workflows/reusable-ubuntu.yml @@ -82,11 +82,11 @@ jobs: - name: Build CPython out-of-tree if: ${{ inputs.free-threading }} working-directory: ${{ env.CPYTHON_BUILDDIR }} - run: make -j4 + run: make -j - name: Build CPython out-of-tree (for compiler warning check) if: ${{ !inputs.free-threading}} working-directory: ${{ env.CPYTHON_BUILDDIR }} - run: set -o pipefail; make -j4 --output-sync 2>&1 | tee compiler_output_ubuntu.txt + run: set -o pipefail; make -j --output-sync 2>&1 | tee compiler_output_ubuntu.txt - name: Display build info working-directory: ${{ env.CPYTHON_BUILDDIR }} run: make pythoninfo From b795b7946ba2b45f6d8ca56c6545ccbc5800dffa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Langa?= Date: Mon, 21 Oct 2024 16:08:10 +0200 Subject: [PATCH 05/19] See if Windows works --- .github/workflows/build.yml | 23 ++++++++++++++++------- .github/workflows/reusable-windows.yml | 8 ++------ 2 files changed, 18 insertions(+), 13 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 88898895d15ad0..15f14d5cd1dfa5 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -151,13 +151,22 @@ jobs: if: fromJSON(needs.check_source.outputs.run_tests) strategy: matrix: - arch: - - Win32 - - x64 - - arm64 - free-threading: - - false - - true + include: + - os: windows-latest + arch: Win32 + free-threading: false + - os: windows-latest + arch: x64 + free-threading: false + - os: windows-aarch64 + arch: arm64 + free-threading: false + - os: windows-latest + arch: x64 + free-threading: true + - os: windows-aarch64 + arch: arm64 + free-threading: ture uses: ./.github/workflows/reusable-windows.yml with: arch: ${{ matrix.arch }} diff --git a/.github/workflows/reusable-windows.yml b/.github/workflows/reusable-windows.yml index dcfc62d7f5d145..00151cc37a242c 100644 --- a/.github/workflows/reusable-windows.yml +++ b/.github/workflows/reusable-windows.yml @@ -19,10 +19,8 @@ env: jobs: build: - name: >- - build${{ inputs.arch != 'arm64' && ' and test' || '' }} - (${{ inputs.arch }}) - runs-on: windows-latest + name: 'build and test' + runs-on: ${{ matrix.os }} timeout-minutes: 60 steps: - uses: actions/checkout@v4 @@ -36,10 +34,8 @@ jobs: -p ${{ inputs.arch }} ${{ fromJSON(inputs.free-threading) && '--disable-gil' || '' }} - name: Display build info - if: inputs.arch != 'arm64' run: .\python.bat -m test.pythoninfo - name: Tests - if: inputs.arch != 'arm64' run: >- .\PCbuild\rt.bat -p ${{ inputs.arch }} From 8b883e3cb4afec720d01b9c6c2167651994be951 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Langa?= Date: Mon, 21 Oct 2024 16:10:55 +0200 Subject: [PATCH 06/19] s/ture/true/ --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 15f14d5cd1dfa5..dd792226f14a7f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -166,7 +166,7 @@ jobs: free-threading: true - os: windows-aarch64 arch: arm64 - free-threading: ture + free-threading: true uses: ./.github/workflows/reusable-windows.yml with: arch: ${{ matrix.arch }} From 864e2eb7a984b7e12d052f30b145bc2e34b9ff42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Langa?= Date: Mon, 21 Oct 2024 16:20:35 +0200 Subject: [PATCH 07/19] Try a different approach with Windows --- .github/workflows/build.yml | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index dd792226f14a7f..29d0ba115e872b 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -151,22 +151,19 @@ jobs: if: fromJSON(needs.check_source.outputs.run_tests) strategy: matrix: + os: [windows-latest] + arch: [x64] + free-threading: [false, true] include: - - os: windows-latest - arch: Win32 - free-threading: false - - os: windows-latest - arch: x64 - free-threading: false - os: windows-aarch64 arch: arm64 free-threading: false - - os: windows-latest - arch: x64 - free-threading: true - os: windows-aarch64 arch: arm64 free-threading: true + - os: windows-latest + arch: Win32 + free-threading: false uses: ./.github/workflows/reusable-windows.yml with: arch: ${{ matrix.arch }} From ed4cfcf1c3f31949c6124fa5f9d9377935f865c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Langa?= Date: Mon, 21 Oct 2024 16:25:08 +0200 Subject: [PATCH 08/19] yaml yaml yaml --- .github/workflows/build.yml | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 29d0ba115e872b..fbd44508dfb112 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -151,9 +151,13 @@ jobs: if: fromJSON(needs.check_source.outputs.run_tests) strategy: matrix: - os: [windows-latest] - arch: [x64] - free-threading: [false, true] + os: + - windows-latest + arch: + - x64 + free-threading: + - false + - true include: - os: windows-aarch64 arch: arm64 From 087701f615361ef2b2d9be1235f6c749cf62ae1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Langa?= Date: Mon, 21 Oct 2024 16:53:15 +0200 Subject: [PATCH 09/19] let's see if that works --- .github/workflows/build.yml | 1 + .github/workflows/reusable-windows.yml | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index fbd44508dfb112..7e82d79f51c3d6 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -170,6 +170,7 @@ jobs: free-threading: false uses: ./.github/workflows/reusable-windows.yml with: + os: ${{ matrix.os }} arch: ${{ matrix.arch }} free-threading: ${{ matrix.free-threading }} diff --git a/.github/workflows/reusable-windows.yml b/.github/workflows/reusable-windows.yml index 00151cc37a242c..553158039bedaa 100644 --- a/.github/workflows/reusable-windows.yml +++ b/.github/workflows/reusable-windows.yml @@ -20,7 +20,7 @@ env: jobs: build: name: 'build and test' - runs-on: ${{ matrix.os }} + runs-on: ${{ inputs.os }} timeout-minutes: 60 steps: - uses: actions/checkout@v4 From a41a23d0a57413fd77195f260797c4dfa824ed25 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Langa?= Date: Mon, 21 Oct 2024 17:02:41 +0200 Subject: [PATCH 10/19] Define inputs.os as a variable --- .github/workflows/reusable-windows.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/reusable-windows.yml b/.github/workflows/reusable-windows.yml index 553158039bedaa..32d5c8649a06fb 100644 --- a/.github/workflows/reusable-windows.yml +++ b/.github/workflows/reusable-windows.yml @@ -3,6 +3,10 @@ name: Reusable Windows on: workflow_call: inputs: + os: + description: OS to run on + required: true + type: string arch: description: CPU architecture required: true From c9499ceea0bc4a4d3c8f01cb2afb571b82cc7201 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Langa?= Date: Mon, 21 Oct 2024 17:07:11 +0200 Subject: [PATCH 11/19] include arch in job name --- .github/workflows/reusable-windows.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/reusable-windows.yml b/.github/workflows/reusable-windows.yml index 32d5c8649a06fb..c1c76178182754 100644 --- a/.github/workflows/reusable-windows.yml +++ b/.github/workflows/reusable-windows.yml @@ -23,7 +23,7 @@ env: jobs: build: - name: 'build and test' + name: 'build and test (${{ inputs.arch }})' runs-on: ${{ inputs.os }} timeout-minutes: 60 steps: From d87137125678bdf86db5be0676637da986d32706 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Langa?= Date: Mon, 21 Oct 2024 17:22:39 +0200 Subject: [PATCH 12/19] make other Windows jobs complete even if one fails --- .github/workflows/build.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 7e82d79f51c3d6..d31b5e4cb17b38 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -150,6 +150,7 @@ jobs: needs: check_source if: fromJSON(needs.check_source.outputs.run_tests) strategy: + fail-fast: false matrix: os: - windows-latest From a1b3ce717af7af4b3d4aa5bc0b49a258e9887c15 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Langa?= Date: Fri, 22 Nov 2024 15:41:04 +0100 Subject: [PATCH 13/19] Temporarily disable Windows runners until Visual Studio is included --- .github/workflows/build.yml | 4 ++-- .github/workflows/reusable-windows.yml | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index f1507da098ba39..b3c4f179b513a4 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -160,10 +160,10 @@ jobs: - false - true include: - - os: windows-aarch64 + - os: windows-latest # FIXME(diegorusso): change to os: windows-aarch64 arch: arm64 free-threading: false - - os: windows-aarch64 + - os: windows-latest # FIXME(diegorusso): change to os: windows-aarch64 arch: arm64 free-threading: true - os: windows-latest diff --git a/.github/workflows/reusable-windows.yml b/.github/workflows/reusable-windows.yml index c1c76178182754..af80ef5dde48c4 100644 --- a/.github/workflows/reusable-windows.yml +++ b/.github/workflows/reusable-windows.yml @@ -39,7 +39,8 @@ jobs: ${{ fromJSON(inputs.free-threading) && '--disable-gil' || '' }} - name: Display build info run: .\python.bat -m test.pythoninfo - - name: Tests + - name: Tests # FIXME(diegorusso): remove the `if` + if: inputs.arch != 'arm64' run: >- .\PCbuild\rt.bat -p ${{ inputs.arch }} From 196802504394958850d5a390bd07f82b391f990a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Langa?= Date: Fri, 22 Nov 2024 15:46:32 +0100 Subject: [PATCH 14/19] Also skip displaying build info on Windows as this can't be done during cross-compilation --- .github/workflows/reusable-windows.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/reusable-windows.yml b/.github/workflows/reusable-windows.yml index af80ef5dde48c4..5a2a9c76f966ab 100644 --- a/.github/workflows/reusable-windows.yml +++ b/.github/workflows/reusable-windows.yml @@ -37,7 +37,8 @@ jobs: -e -d -v -p ${{ inputs.arch }} ${{ fromJSON(inputs.free-threading) && '--disable-gil' || '' }} - - name: Display build info + - name: Display build info # FIXME(diegorusso): remove the `if` + if: inputs.arch != 'arm64' run: .\python.bat -m test.pythoninfo - name: Tests # FIXME(diegorusso): remove the `if` if: inputs.arch != 'arm64' From cfa563a785155a5ba16ed53c31f639e6ac9b3c8b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Langa?= Date: Fri, 22 Nov 2024 16:45:31 +0100 Subject: [PATCH 15/19] Add actionlint.yaml to configure self-hosted-runner checks --- .github/actionlint.yaml | 11 +++++++++++ .github/workflows/reusable-ubuntu.yml | 2 +- .pre-commit-config.yaml | 4 ---- 3 files changed, 12 insertions(+), 5 deletions(-) create mode 100644 .github/actionlint.yaml diff --git a/.github/actionlint.yaml b/.github/actionlint.yaml new file mode 100644 index 00000000000000..c0c6bac790a189 --- /dev/null +++ b/.github/actionlint.yaml @@ -0,0 +1,11 @@ +self-hosted-runner: + labels: ["ubuntu-24.04-aarch64", "windows-aarch64"] + +config-variables: null + +paths: + .github/workflows/**/*.yml: + ignore: [ + '1st argument of function call is not assignable', + 'SC2(015|038|086|091|097|098|129|155)' + ] \ No newline at end of file diff --git a/.github/workflows/reusable-ubuntu.yml b/.github/workflows/reusable-ubuntu.yml index eaee1e04420694..642354f8b4f61b 100644 --- a/.github/workflows/reusable-ubuntu.yml +++ b/.github/workflows/reusable-ubuntu.yml @@ -20,7 +20,7 @@ jobs: strategy: fail-fast: false matrix: - os: [ubuntu-24.04, ubuntu24.04-aarch64] + os: [ubuntu-24.04, ubuntu-24.04-aarch64] env: FORCE_COLOR: 1 OPENSSL_VER: 3.0.15 diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index ec769d7ff70314..0290c4dc97fd11 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -60,10 +60,6 @@ repos: rev: v1.7.3 hooks: - id: actionlint - args: [ - -ignore=1st argument of function call is not assignable, - -ignore=SC2(015|038|086|091|097|098|129|155), - ] - repo: https://github.com/sphinx-contrib/sphinx-lint rev: v1.0.0 From 696d3c47136a272a205638acaa24102d100397c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Langa?= Date: Fri, 22 Nov 2024 16:48:15 +0100 Subject: [PATCH 16/19] Appease shellcheck --- .github/workflows/reusable-windows.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/reusable-windows.yml b/.github/workflows/reusable-windows.yml index 5a2a9c76f966ab..12b68d68466d62 100644 --- a/.github/workflows/reusable-windows.yml +++ b/.github/workflows/reusable-windows.yml @@ -33,17 +33,17 @@ jobs: run: echo "::add-matcher::.github/problem-matchers/msvc.json" - name: Build CPython run: >- - .\PCbuild\build.bat + .\\PCbuild\\build.bat -e -d -v -p ${{ inputs.arch }} ${{ fromJSON(inputs.free-threading) && '--disable-gil' || '' }} - name: Display build info # FIXME(diegorusso): remove the `if` if: inputs.arch != 'arm64' - run: .\python.bat -m test.pythoninfo + run: .\\python.bat -m test.pythoninfo - name: Tests # FIXME(diegorusso): remove the `if` if: inputs.arch != 'arm64' run: >- - .\PCbuild\rt.bat + .\\PCbuild\\rt.bat -p ${{ inputs.arch }} -d -q --fast-ci ${{ fromJSON(inputs.free-threading) && '--disable-gil' || '' }} From 8f3092a33ba2143f535810575ffc60bea5d68a3b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Langa?= Date: Fri, 22 Nov 2024 17:31:03 +0100 Subject: [PATCH 17/19] actionlint charming --- .github/actionlint.yaml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/.github/actionlint.yaml b/.github/actionlint.yaml index c0c6bac790a189..92583e65c714c0 100644 --- a/.github/actionlint.yaml +++ b/.github/actionlint.yaml @@ -5,7 +5,6 @@ config-variables: null paths: .github/workflows/**/*.yml: - ignore: [ - '1st argument of function call is not assignable', - 'SC2(015|038|086|091|097|098|129|155)' - ] \ No newline at end of file + ignore: + - '1st argument of function call is not assignable' + - 'SC2(015|038|086|091|097|098|129|155)' \ No newline at end of file From 719e2ccde451cfe04e0b38a5ab9cefe3d199a242 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Langa?= Date: Fri, 22 Nov 2024 17:40:00 +0100 Subject: [PATCH 18/19] Come on, actionlint --- .github/actionlint.yaml | 4 ++-- .pre-commit-config.yaml | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/actionlint.yaml b/.github/actionlint.yaml index 92583e65c714c0..3701f7297ffeb2 100644 --- a/.github/actionlint.yaml +++ b/.github/actionlint.yaml @@ -6,5 +6,5 @@ config-variables: null paths: .github/workflows/**/*.yml: ignore: - - '1st argument of function call is not assignable' - - 'SC2(015|038|086|091|097|098|129|155)' \ No newline at end of file + - 1st argument of function call is not assignable + - SC2(015|038|086|091|097|098|129|155) \ No newline at end of file diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 0290c4dc97fd11..51427c1fb938d5 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -60,6 +60,7 @@ repos: rev: v1.7.3 hooks: - id: actionlint + - args: [-config-file=.github/actionlint.yaml] - repo: https://github.com/sphinx-contrib/sphinx-lint rev: v1.0.0 From f74b8bc1318660819ef3d8ca03cb9acae28fe293 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Langa?= Date: Fri, 22 Nov 2024 17:41:18 +0100 Subject: [PATCH 19/19] Bump actionlint version --- .pre-commit-config.yaml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 51427c1fb938d5..ccaf2390d99fae 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -57,10 +57,9 @@ repos: - id: check-github-workflows - repo: https://github.com/rhysd/actionlint - rev: v1.7.3 + rev: v1.7.4 hooks: - id: actionlint - - args: [-config-file=.github/actionlint.yaml] - repo: https://github.com/sphinx-contrib/sphinx-lint rev: v1.0.0