@@ -481,12 +481,12 @@ jobs:
481
481
./target/debug/uvx
482
482
retention-days : 1
483
483
484
- build-binary-windows :
484
+ build-binary-windows-x86_64 :
485
485
needs : determine_changes
486
486
timeout-minutes : 10
487
487
if : ${{ github.repository == 'astral-sh/uv' && !contains(github.event.pull_request.labels.*.name, 'no-test') && (needs.determine_changes.outputs.code == 'true' || github.ref == 'refs/heads/main') }}
488
488
runs-on : windows-latest
489
- name : " build binary | windows"
489
+ name : " build binary | windows x86_64 "
490
490
steps :
491
491
- uses : actions/checkout@v4
492
492
@@ -509,12 +509,50 @@ jobs:
509
509
- name : " Upload binary"
510
510
uses : actions/upload-artifact@v4
511
511
with :
512
- name : uv-windows-${{ github.sha }}
512
+ name : uv-windows-x86_64- ${{ github.sha }}
513
513
path : |
514
514
${{ env.UV_WORKSPACE }}/target/debug/uv.exe
515
515
${{ env.UV_WORKSPACE }}/target/debug/uvx.exe
516
516
retention-days : 1
517
517
518
+ build-binary-windows-aarch64 :
519
+ needs : determine_changes
520
+ timeout-minutes : 25
521
+ if : ${{ github.repository == 'astral-sh/uv' && !contains(github.event.pull_request.labels.*.name, 'no-test') && (needs.determine_changes.outputs.code == 'true' || github.ref == 'refs/heads/main') }}
522
+ runs-on :
523
+ labels : windows-latest
524
+ name : " build binary | windows aarch64"
525
+ steps :
526
+ - uses : actions/checkout@v4
527
+
528
+ - name : Create Dev Drive using ReFS
529
+ run : ${{ github.workspace }}/.github/workflows/setup-dev-drive.ps1
530
+
531
+ # actions/checkout does not let us clone into anywhere outside ${{ github.workspace }}, so we have to copy the clone...
532
+ - name : Copy Git Repo to Dev Drive
533
+ run : |
534
+ Copy-Item -Path "${{ github.workspace }}" -Destination "${{ env.UV_WORKSPACE }}" -Recurse
535
+
536
+ - uses : Swatinem/rust-cache@v2
537
+ with :
538
+ workspaces : ${{ env.UV_WORKSPACE }}
539
+
540
+ - name : " Install cross target"
541
+ run : rustup target add aarch64-pc-windows-msvc
542
+
543
+ - name : " Build"
544
+ working-directory : ${{ env.UV_WORKSPACE }}
545
+ run : cargo build --target aarch64-pc-windows-msvc
546
+
547
+ - name : " Upload binary"
548
+ uses : actions/upload-artifact@v4
549
+ with :
550
+ name : uv-windows-aarch64-${{ github.sha }}
551
+ path : |
552
+ ${{ env.UV_WORKSPACE }}/target/aarch64-pc-windows-msvc/debug/uv.exe
553
+ ${{ env.UV_WORKSPACE }}/target/aarch64-pc-windows-msvc/debug/uvx.exe
554
+ retention-days : 1
555
+
518
556
cargo-build-msrv :
519
557
name : " cargo build (msrv)"
520
558
needs : determine_changes
@@ -667,16 +705,36 @@ jobs:
667
705
eval "$(./uv generate-shell-completion bash)"
668
706
eval "$(./uvx --generate-shell-completion bash)"
669
707
670
- smoke-test-windows :
708
+ smoke-test-windows-x86_64 :
671
709
timeout-minutes : 10
672
- needs : build-binary-windows
673
- name : " smoke test | windows"
710
+ needs : build-binary-windows-x86_64
711
+ name : " smoke test | windows x86_64 "
674
712
runs-on : windows-latest
675
713
steps :
676
714
- name : " Download binary"
677
715
uses : actions/download-artifact@v4
678
716
with :
679
- name : uv-windows-${{ github.sha }}
717
+ name : uv-windows-x86_64-${{ github.sha }}
718
+
719
+ - name : " Smoke test"
720
+ working-directory : ${{ env.UV_WORKSPACE }}
721
+ run : |
722
+ ./uv venv -v
723
+ ./uv pip install ruff -v
724
+ ./uvx -v ruff --version
725
+ (& ./uv generate-shell-completion powershell) | Out-String | Invoke-Expression
726
+ (& ./uvx --generate-shell-completion powershell) | Out-String | Invoke-Expression
727
+
728
+ smoke-test-windows-aarch64 :
729
+ timeout-minutes : 10
730
+ needs : build-binary-windows-aarch64
731
+ name : " smoke test | windows aarch64"
732
+ runs-on : github-windows-11-aarch64-4
733
+ steps :
734
+ - name : " Download binary"
735
+ uses : actions/download-artifact@v4
736
+ with :
737
+ name : uv-windows-aarch64-${{ github.sha }}
680
738
681
739
- name : " Smoke test"
682
740
working-directory : ${{ env.UV_WORKSPACE }}
@@ -816,17 +874,17 @@ jobs:
816
874
run : |
817
875
./uv pip install -v anyio
818
876
819
- integration-test-free-threaded-windows :
877
+ integration-test-free-threaded-windows-x86_64 :
820
878
timeout-minutes : 10
821
- needs : build-binary-windows
879
+ needs : build-binary-windows-x86_64
822
880
name : " integration test | free-threaded on windows"
823
881
runs-on : windows-latest
824
882
825
883
steps :
826
884
- name : " Download binary"
827
885
uses : actions/download-artifact@v4
828
886
with :
829
- name : uv-windows-${{ github.sha }}
887
+ name : uv-windows-x86_64- ${{ github.sha }}
830
888
831
889
- name : " Install free-threaded Python via uv"
832
890
run : |
@@ -925,17 +983,17 @@ jobs:
925
983
run : |
926
984
./uv pip install anyio
927
985
928
- integration-test-pypy-windows :
986
+ integration-test-pypy-windows-x86_64 :
929
987
timeout-minutes : 10
930
- needs : build-binary-windows
988
+ needs : build-binary-windows-x86_64
931
989
name : " integration test | pypy on windows"
932
990
runs-on : windows-latest
933
991
934
992
steps :
935
993
- name : " Download binary"
936
994
uses : actions/download-artifact@v4
937
995
with :
938
- name : uv-windows-${{ github.sha }}
996
+ name : uv-windows-x86_64- ${{ github.sha }}
939
997
940
998
- name : " Install PyPy"
941
999
run : .\uv.exe python install pypy3.9
@@ -982,6 +1040,9 @@ jobs:
982
1040
& .venv\Scripts\python.exe --version
983
1041
984
1042
- name : " Check install"
1043
+ env :
1044
+ # Avoid debug build stack overflows.
1045
+ UV_STACK_SIZE : 3000000 # 3 megabyte, triple the default on windows
985
1046
run : |
986
1047
.\uv.exe pip install anyio
987
1048
@@ -1054,9 +1115,9 @@ jobs:
1054
1115
run : |
1055
1116
./uv pip install anyio
1056
1117
1057
- integration-test-graalpy-windows :
1118
+ integration-test-graalpy-windows-x86_64 :
1058
1119
timeout-minutes : 10
1059
- needs : build-binary-windows
1120
+ needs : build-binary-windows-x86_64
1060
1121
name : " integration test | graalpy on windows"
1061
1122
runs-on : windows-latest
1062
1123
@@ -1068,7 +1129,7 @@ jobs:
1068
1129
- name : " Download binary"
1069
1130
uses : actions/download-artifact@v4
1070
1131
with :
1071
- name : uv-windows-${{ github.sha }}
1132
+ name : uv-windows-x86_64- ${{ github.sha }}
1072
1133
1073
1134
- name : Graalpy info
1074
1135
run : Get-Command graalpy
@@ -1111,6 +1172,9 @@ jobs:
1111
1172
& .venv\Scripts\python.exe --version
1112
1173
1113
1174
- name : " Check install"
1175
+ env :
1176
+ # Avoid debug build stack overflows.
1177
+ UV_STACK_SIZE : 3000000 # 3 megabyte, triple the default on windows
1114
1178
run : |
1115
1179
.\uv.exe pip install anyio
1116
1180
@@ -1574,7 +1638,7 @@ jobs:
1574
1638
system-test-macos-x86_64 :
1575
1639
timeout-minutes : 10
1576
1640
needs : build-binary-macos-x86_64
1577
- name : " check system | python on macos x86_64 "
1641
+ name : " check system | python on macos x86-64 "
1578
1642
runs-on : macos-13 # github-macos-13-x86_64-4
1579
1643
steps :
1580
1644
- uses : actions/checkout@v4
@@ -1599,8 +1663,8 @@ jobs:
1599
1663
1600
1664
system-test-windows-python-310 :
1601
1665
timeout-minutes : 10
1602
- needs : build-binary-windows
1603
- name : " check system | python3.10 on windows"
1666
+ needs : build-binary-windows-x86_64
1667
+ name : " check system | python3.10 on windows x86-64 "
1604
1668
runs-on : windows-latest
1605
1669
steps :
1606
1670
- uses : actions/checkout@v4
@@ -1612,17 +1676,17 @@ jobs:
1612
1676
- name : " Download binary"
1613
1677
uses : actions/download-artifact@v4
1614
1678
with :
1615
- name : uv-windows-${{ github.sha }}
1679
+ name : uv-windows-x86_64- ${{ github.sha }}
1616
1680
1617
1681
- name : " Print Python path"
1618
1682
run : echo $(which python)
1619
1683
1620
1684
- name : " Validate global Python install"
1621
1685
run : py -3.10 ./scripts/check_system_python.py --uv ./uv.exe
1622
1686
1623
- system-test-windows-x86 -python-310 :
1687
+ system-test-windows-x86_64 -python-310 :
1624
1688
timeout-minutes : 10
1625
- needs : build-binary-windows
1689
+ needs : build-binary-windows-x86_64
1626
1690
name : " check system | python3.10 on windows x86"
1627
1691
runs-on : windows-latest
1628
1692
steps :
@@ -1636,18 +1700,18 @@ jobs:
1636
1700
- name : " Download binary"
1637
1701
uses : actions/download-artifact@v4
1638
1702
with :
1639
- name : uv-windows-${{ github.sha }}
1703
+ name : uv-windows-x86_64- ${{ github.sha }}
1640
1704
1641
1705
- name : " Print Python path"
1642
1706
run : echo $(which python)
1643
1707
1644
1708
- name : " Validate global Python install"
1645
1709
run : python ./scripts/check_system_python.py --uv ./uv.exe
1646
1710
1647
- system-test-windows-python-313 :
1711
+ system-test-windows-x86_64- python-313 :
1648
1712
timeout-minutes : 10
1649
- needs : build-binary-windows
1650
- name : " check system | python3.13 on windows"
1713
+ needs : build-binary-windows-x86_64
1714
+ name : " check system | python3.13 on windows x86-64 "
1651
1715
runs-on : windows-latest
1652
1716
steps :
1653
1717
- uses : actions/checkout@v4
@@ -1661,7 +1725,7 @@ jobs:
1661
1725
- name : " Download binary"
1662
1726
uses : actions/download-artifact@v4
1663
1727
with :
1664
- name : uv-windows-${{ github.sha }}
1728
+ name : uv-windows-x86_64- ${{ github.sha }}
1665
1729
1666
1730
- name : " Print Python path"
1667
1731
run : echo $(which python)
@@ -1671,7 +1735,7 @@ jobs:
1671
1735
1672
1736
system-test-choco :
1673
1737
timeout-minutes : 10
1674
- needs : build-binary-windows
1738
+ needs : build-binary-windows-x86_64
1675
1739
name : " check system | python3.12 via chocolatey"
1676
1740
runs-on : windows-latest
1677
1741
steps :
@@ -1683,7 +1747,7 @@ jobs:
1683
1747
- name : " Download binary"
1684
1748
uses : actions/download-artifact@v4
1685
1749
with :
1686
- name : uv-windows-${{ github.sha }}
1750
+ name : uv-windows-x86_64- ${{ github.sha }}
1687
1751
1688
1752
- name : " Print Python path"
1689
1753
run : echo $(which python3)
@@ -1762,18 +1826,37 @@ jobs:
1762
1826
system-test-conda :
1763
1827
timeout-minutes : 10
1764
1828
needs :
1765
- [build-binary-windows, build-binary-macos-aarch64, build-binary-linux]
1766
- name : check system | conda${{ matrix.python-version }} on ${{ matrix.os }}
1829
+ [
1830
+ build-binary-windows-x86_64,
1831
+ build-binary-macos-aarch64,
1832
+ build-binary-linux,
1833
+ ]
1834
+ name : check system | conda${{ matrix.python-version }} on ${{ matrix.os }} {{ matrix.arch }}
1767
1835
runs-on : ${{ matrix.runner }}
1768
1836
strategy :
1769
1837
fail-fast : false
1770
1838
matrix :
1771
1839
os : ["linux", "windows", "macos"]
1772
1840
python-version : ["3.8", "3.11"]
1773
1841
include :
1774
- - { os: "linux", target: "linux", runner: "ubuntu-latest" }
1775
- - { os: "windows", target: "windows", runner: "windows-latest" }
1776
- - { os: "macos", target: "macos-aarch64", runner: "macos-14" }
1842
+ - {
1843
+ os : " linux" ,
1844
+ target : " linux" ,
1845
+ runner : " ubuntu-latest" ,
1846
+ arch : " x86-64" ,
1847
+ }
1848
+ - {
1849
+ os : " windows" ,
1850
+ target : " windows-x86_64" ,
1851
+ runner : " windows-latest" ,
1852
+ arch : " x86-64" ,
1853
+ }
1854
+ - {
1855
+ os : " macos" ,
1856
+ target : " macos-aarch64" ,
1857
+ runner : " macos-14" ,
1858
+ arch : " aarch64" ,
1859
+ }
1777
1860
steps :
1778
1861
- uses : actions/checkout@v4
1779
1862
@@ -1839,16 +1922,16 @@ jobs:
1839
1922
1840
1923
system-test-windows-embedded-python-310 :
1841
1924
timeout-minutes : 10
1842
- needs : build-binary-windows
1843
- name : " check system | embedded python3.10 on windows"
1925
+ needs : build-binary-windows-x86_64
1926
+ name : " check system | embedded python3.10 on windows x86-64 "
1844
1927
runs-on : windows-latest
1845
1928
steps :
1846
1929
- uses : actions/checkout@v4
1847
1930
1848
1931
- name : " Download binary"
1849
1932
uses : actions/download-artifact@v4
1850
1933
with :
1851
- name : uv-windows-${{ github.sha }}
1934
+ name : uv-windows-x86_64- ${{ github.sha }}
1852
1935
1853
1936
# Download embedded Python.
1854
1937
- name : " Download embedded Python"
0 commit comments