@@ -60,12 +60,46 @@ install_pytorch_and_domains() {
6060 # Fetch the target commit
6161 pushd pytorch || return
6262 git checkout " ${TORCH_VERSION} "
63- git submodule update --init --recursive
6463
65- export USE_DISTRIBUTED=1
66- # Then build and install PyTorch
67- python setup.py bdist_wheel
68- pip install " $( echo dist/* .whl) "
64+ local system_name=$( uname)
65+ if [[ " ${system_name} " == " Darwin" ]]; then
66+ local platform=$( python -c ' import sysconfig; import platform; v=platform.mac_ver()[0].split(".")[0]; platform=sysconfig.get_platform().split("-"); platform[1]=f"{v}_0"; print("_".join(platform))' )
67+ fi
68+ local python_version=$( python -c ' import platform; v=platform.python_version_tuple(); print(f"{v[0]}{v[1]}")' )
69+ local torch_release=$( cat version.txt)
70+ local torch_short_hash=${TORCH_VERSION: 0: 7}
71+ local torch_wheel_path=" cached_artifacts/pytorch/executorch/pytorch_wheels/${system_name} /${python_version} "
72+ local torch_wheel_name=" torch-${torch_release} %2Bgit${torch_short_hash} -cp${python_version} -cp${python_version} -${platform:- } .whl"
73+
74+ local cached_torch_wheel=" https://gha-artifacts.s3.us-east-1.amazonaws.com/${torch_wheel_path} /${torch_wheel_name} "
75+ # Cache PyTorch wheel is only needed on MacOS, Linux CI already has this as part
76+ # of the Docker image
77+ local torch_wheel_not_found=0
78+ if [[ " ${system_name} " == " Darwin" ]]; then
79+ pip install " ${cached_torch_wheel} " || torch_wheel_not_found=1
80+ else
81+ torch_wheel_not_found=1
82+ fi
83+
84+ # Found no such wheel, we will build it from source then
85+ if [[ " ${torch_wheel_not_found} " == " 1" ]]; then
86+ echo " No cached wheel found, continue with building PyTorch at ${TORCH_VERSION} "
87+
88+ git submodule update --init --recursive
89+ USE_DISTRIBUTED=1 python setup.py bdist_wheel
90+ pip install " $( echo dist/* .whl) "
91+
92+ # Only AWS runners have access to S3
93+ if command -v aws && [[ -z " ${GITHUB_RUNNER:- } " ]]; then
94+ for wheel_path in dist/* .whl; do
95+ local wheel_name=$( basename " ${wheel_path} " )
96+ echo " Caching ${wheel_name} "
97+ aws s3 cp " ${wheel_path} " " s3://gha-artifacts/${torch_wheel_path} /${wheel_name} "
98+ done
99+ fi
100+ else
101+ echo " Use cached wheel at ${cached_torch_wheel} "
102+ fi
69103
70104 # Grab the pinned audio and vision commits from PyTorch
71105 TORCHAUDIO_VERSION=$( cat .github/ci_commit_pins/audio.txt)
0 commit comments