1# Copyright 2022 The Bazel Authors. All rights reserved. 2# 3# Licensed under the Apache License, Version 2.0 (the "License"); 4# you may not use this file except in compliance with the License. 5# You may obtain a copy of the License at 6# 7# http://www.apache.org/licenses/LICENSE-2.0 8# 9# Unless required by applicable law or agreed to in writing, software 10# distributed under the License is distributed on an "AS IS" BASIS, 11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12# See the License for the specific language governing permissions and 13# limitations under the License. 14 15"""The Python versions we use for the toolchains. 16""" 17 18# Values returned by https://bazel.build/rules/lib/repository_os. 19MACOS_NAME = "mac os" 20LINUX_NAME = "linux" 21WINDOWS_NAME = "windows" 22 23DEFAULT_RELEASE_BASE_URL = "https://github.com/indygreg/python-build-standalone/releases/download" 24 25# When updating the versions and releases, run the following command to get 26# the hashes: 27# bazel run //python/private:print_toolchains_checksums 28# 29# Note, to users looking at how to specify their tool versions, coverage_tool version for each 30# interpreter can be specified by: 31# "3.8.10": { 32# "url": "20210506/cpython-{python_version}-{platform}-pgo+lto-20210506T0943.tar.zst", 33# "sha256": { 34# "x86_64-apple-darwin": "8d06bec08db8cdd0f64f4f05ee892cf2fcbc58cfb1dd69da2caab78fac420238", 35# "x86_64-unknown-linux-gnu": "aec8c4c53373b90be7e2131093caa26063be6d9d826f599c935c0e1042af3355", 36# }, 37# "coverage_tool": { 38# "x86_64-apple-darwin": "<label_for_darwin>"", 39# "x86_64-unknown-linux-gnu": "<label_for_linux>"", 40# }, 41# "strip_prefix": "python", 42# }, 43# 44# It is possible to provide lists in "url". It is also possible to provide patches or patch_strip. 45# 46# buildifier: disable=unsorted-dict-items 47TOOL_VERSIONS = { 48 "3.8.10": { 49 "url": "20210506/cpython-{python_version}-{platform}-pgo+lto-20210506T0943.tar.zst", 50 "sha256": { 51 "x86_64-apple-darwin": "8d06bec08db8cdd0f64f4f05ee892cf2fcbc58cfb1dd69da2caab78fac420238", 52 "x86_64-unknown-linux-gnu": "aec8c4c53373b90be7e2131093caa26063be6d9d826f599c935c0e1042af3355", 53 }, 54 "strip_prefix": "python", 55 }, 56 "3.8.12": { 57 "url": "20220227/cpython-{python_version}+20220227-{platform}-{build}.tar.gz", 58 "sha256": { 59 "aarch64-apple-darwin": "f9a3cbb81e0463d6615125964762d133387d561b226a30199f5b039b20f1d944", 60 # no aarch64-unknown-linux-gnu build available for 3.8.12 61 "x86_64-apple-darwin": "f323fbc558035c13a85ce2267d0fad9e89282268ecb810e364fff1d0a079d525", 62 "x86_64-pc-windows-msvc": "4658e08a00d60b1e01559b74d58ff4dd04da6df935d55f6268a15d6d0a679d74", 63 "x86_64-unknown-linux-gnu": "5be9c6d61e238b90dfd94755051c0d3a2d8023ebffdb4b0fa4e8fedd09a6cab6", 64 }, 65 "strip_prefix": "python", 66 }, 67 "3.8.13": { 68 "url": "20220802/cpython-{python_version}+20220802-{platform}-{build}.tar.gz", 69 "sha256": { 70 "aarch64-apple-darwin": "ae4131253d890b013171cb5f7b03cadc585ae263719506f7b7e063a7cf6fde76", 71 # no aarch64-unknown-linux-gnu build available for 3.8.13 72 "x86_64-apple-darwin": "cd6e7c0a27daf7df00f6882eaba01490dd963f698e99aeee9706877333e0df69", 73 "x86_64-pc-windows-msvc": "f20643f1b3e263a56287319aea5c3888530c09ad9de3a5629b1a5d207807e6b9", 74 "x86_64-unknown-linux-gnu": "fb566629ccb5f76ef56d275a3f8017d683f1c20c5beb5d5f38b155ed11e16187", 75 }, 76 "strip_prefix": "python", 77 }, 78 "3.8.15": { 79 "url": "20221106/cpython-{python_version}+20221106-{platform}-{build}.tar.gz", 80 "sha256": { 81 "aarch64-apple-darwin": "1e0a92d1a4f5e6d4a99f86b1cbf9773d703fe7fd032590f3e9c285c7a5eeb00a", 82 "aarch64-unknown-linux-gnu": "886ab33ced13c84bf59ce8ff79eba6448365bfcafea1bf415bd1d75e21b690aa", 83 "x86_64-apple-darwin": "70b57f28c2b5e1e3dd89f0d30edd5bc414e8b20195766cf328e1b26bed7890e1", 84 "x86_64-pc-windows-msvc": "2fdc3fa1c95f982179bbbaedae2b328197658638799b6dcb63f9f494b0de59e2", 85 "x86_64-unknown-linux-gnu": "e47edfb2ceaf43fc699e20c179ec428b6f3e497cf8e2dcd8e9c936d4b96b1e56", 86 }, 87 "strip_prefix": "python", 88 }, 89 "3.8.16": { 90 "url": "20230116/cpython-{python_version}+20230116-{platform}-{build}.tar.gz", 91 "sha256": { 92 "aarch64-apple-darwin": "d1f408569d8807c1053939d7822b082a17545e363697e1ce3cfb1ee75834c7be", 93 "aarch64-unknown-linux-gnu": "15d00bc8400ed6d94c665a797dc8ed7a491ae25c5022e738dcd665cd29beec42", 94 "x86_64-apple-darwin": "484ba901f64fc7888bec5994eb49343dc3f9d00ed43df17ee9c40935aad4aa18", 95 "x86_64-pc-windows-msvc": "b446bec833eaba1bac9063bb9b4aeadfdf67fa81783b4487a90c56d408fb7994", 96 "x86_64-unknown-linux-gnu": "c890de112f1ae31283a31fefd2061d5c97bdd4d1bdd795552c7abddef2697ea1", 97 }, 98 "strip_prefix": "python", 99 }, 100 "3.8.17": { 101 "url": "20230826/cpython-{python_version}+20230826-{platform}-{build}.tar.gz", 102 "sha256": { 103 "aarch64-apple-darwin": "c6f7a130d0044a78e39648f4dae56dcff5a41eba91888a99f6e560507162e6a1", 104 "aarch64-unknown-linux-gnu": "9f6d585091fe26906ff1dbb80437a3fe37a1e3db34d6ecc0098f3d6a78356682", 105 "x86_64-apple-darwin": "155b06821607bae1a58ecc60a7d036b358c766f19e493b8876190765c883a5c2", 106 "x86_64-pc-windows-msvc": "6428e1b4e0b4482d390828de7d4c82815257443416cb786abe10cb2466ca68cd", 107 "x86_64-unknown-linux-gnu": "8d3e1826c0bb7821ec63288038644808a2d45553245af106c685ef5892fabcd8", 108 }, 109 "strip_prefix": "python", 110 }, 111 "3.8.18": { 112 "url": "20240224/cpython-{python_version}+20240224-{platform}-{build}.tar.gz", 113 "sha256": { 114 "aarch64-apple-darwin": "4d493a1792bf211f37f98404cc1468f09bd781adc2602dea0df82ad264c11abc", 115 "aarch64-unknown-linux-gnu": "6588c9eed93833d9483d01fe40ac8935f691a1af8e583d404ec7666631b52487", 116 "x86_64-apple-darwin": "7d2cd8d289d5e3cdd0a8c06c028c7c621d3d00ce44b7e2f08c1724ae0471c626", 117 "x86_64-pc-windows-msvc": "dba923ee5df8f99db04f599e826be92880746c02247c8d8e4d955d4bc711af11", 118 "x86_64-unknown-linux-gnu": "5ae36825492372554c02708bdd26b8dcd57e3dbf34b3d6d599ad91d93540b2b7", 119 }, 120 "strip_prefix": "python", 121 }, 122 "3.8.19": { 123 "url": "20240726/cpython-{python_version}+20240726-{platform}-{build}.tar.gz", 124 "sha256": { 125 "aarch64-apple-darwin": "fe4af1b6bc59478d027ede43f6249cf7b9143558e171bdf8711247337623af57", 126 "aarch64-unknown-linux-gnu": "8dc598aca7ad43ea20119324af98862d198d8990151c734a69f0fc9d16384b46", 127 "x86_64-apple-darwin": "4bc990b35384c83b5b0b3071e91455ec203517e569f29f691b159f1a6b2a19b2", 128 "x86_64-pc-windows-msvc": "4e8e9ddda82062d6e111108ab72f439acac4ba41b77d694548ef5dbf6b2b3319", 129 "x86_64-unknown-linux-gnu": "e81ea4dd16e6057c8121bdbcb7b64e2956068ca019f244c814bc3ad907cb2765", 130 }, 131 "strip_prefix": "python", 132 }, 133 "3.9.10": { 134 "url": "20220227/cpython-{python_version}+20220227-{platform}-{build}.tar.gz", 135 "sha256": { 136 "aarch64-apple-darwin": "ad66c2a3e7263147e046a32694de7b897a46fb0124409d29d3a93ede631c8aee", 137 "aarch64-unknown-linux-gnu": "12dd1f125762f47975990ec744532a1cf3db74ad60f4dfb476ca42deb7f78ca4", 138 "x86_64-apple-darwin": "fdaf594142446029e314a9beb91f1ac75af866320b50b8b968181e592550cd68", 139 "x86_64-pc-windows-msvc": "c145d9d8143ce163670af124b623d7a2405143a3708b033b4d33eed355e61b24", 140 "x86_64-unknown-linux-gnu": "455089cc576bd9a58db45e919d1fc867ecdbb0208067dffc845cc9bbf0701b70", 141 }, 142 "strip_prefix": "python", 143 }, 144 "3.9.12": { 145 "url": "20220502/cpython-{python_version}+20220502-{platform}-{build}.tar.gz", 146 "sha256": { 147 "aarch64-apple-darwin": "8dee06c07cc6429df34b6abe091a4684a86f7cec76f5d1ccc1c3ce2bd11168df", 148 "aarch64-unknown-linux-gnu": "2ee1426c181e65133e57dc55c6a685cb1fb5e63ef02d684b8a667d5c031c4203", 149 "x86_64-apple-darwin": "2453ba7f76b3df3310353b48c881d6cff622ba06e30d2b6ae91588b2bc9e481a", 150 "x86_64-pc-windows-msvc": "3024147fd987d9e1b064a3d94932178ff8e0fe98cfea955704213c0762fee8df", 151 "x86_64-unknown-linux-gnu": "ccca12f698b3b810d79c52f007078f520d588232a36bc12ede944ec3ea417816", 152 }, 153 "strip_prefix": "python", 154 }, 155 "3.9.13": { 156 "url": "20220802/cpython-{python_version}+20220802-{platform}-{build}.tar.gz", 157 "sha256": { 158 "aarch64-apple-darwin": "d9603edc296a2dcbc59d7ada780fd12527f05c3e0b99f7545112daf11636d6e5", 159 "aarch64-unknown-linux-gnu": "80415aac1b96255b9211f6a4c300f31e9940c7e07a23d0dec12b53aa52c0d25e", 160 "x86_64-apple-darwin": "9540a7efb7c8a54a48aff1cb9480e49588d9c0a3f934ad53f5b167338174afa3", 161 "x86_64-pc-windows-msvc": "b538127025a467c64b3351babca2e4d2ea7bdfb7867d5febb3529c34456cdcd4", 162 "x86_64-unknown-linux-gnu": "ce1cfca2715e7e646dd618a8cb9baff93000e345ccc979b801fc6ccde7ce97df", 163 }, 164 "strip_prefix": "python", 165 }, 166 "3.9.15": { 167 "url": "20221106/cpython-{python_version}+20221106-{platform}-{build}.tar.gz", 168 "sha256": { 169 "aarch64-apple-darwin": "64dc7e1013481c9864152c3dd806c41144c79d5e9cd3140e185c6a5060bdc9ab", 170 "aarch64-unknown-linux-gnu": "52a8c0a67fb919f80962d992da1bddb511cdf92faf382701ce7673e10a8ff98f", 171 "x86_64-apple-darwin": "f2bcade6fc976c472f18f2b3204d67202d43ae55cf6f9e670f95e488f780da08", 172 "x86_64-pc-windows-msvc": "022daacab215679b87f0d200d08b9068a721605fa4721ebeda38220fc641ccf6", 173 "x86_64-unknown-linux-gnu": "cdc3a4cfddcd63b6cebdd75b14970e02d8ef0ac5be4d350e57ab5df56c19e85e", 174 }, 175 "strip_prefix": "python", 176 }, 177 "3.9.16": { 178 "url": "20230507/cpython-{python_version}+20230507-{platform}-{build}.tar.gz", 179 "sha256": { 180 "aarch64-apple-darwin": "c1de1d854717a6245f45262ef1bb17b09e2c587590e7e3f406593c143ff875bd", 181 "aarch64-unknown-linux-gnu": "f629b75ebfcafe9ceee2e796b7e4df5cf8dbd14f3c021afca078d159ab797acf", 182 "ppc64le-unknown-linux-gnu": "ff3ac35c58f67839aff9b5185a976abd3d1abbe61af02089f7105e876c1fe284", 183 "x86_64-apple-darwin": "3abc4d5fbbc80f5f848f280927ac5d13de8dc03aabb6ae65d8247cbb68e6f6bf", 184 "x86_64-pc-windows-msvc": "cdabb47204e96ce7ea31fbd0b5ed586114dd7d8f8eddf60a509a7f70b48a1c5e", 185 "x86_64-unknown-linux-gnu": "2b6e146234a4ef2a8946081fc3fbfffe0765b80b690425a49ebe40b47c33445b", 186 }, 187 "strip_prefix": "python", 188 }, 189 "3.9.17": { 190 "url": "20230726/cpython-{python_version}+20230726-{platform}-{build}.tar.gz", 191 "sha256": { 192 "aarch64-apple-darwin": "73dbe2d702210b566221da9265acc274ba15275c5d0d1fa327f44ad86cde9aa1", 193 "aarch64-unknown-linux-gnu": "b77012ddaf7e0673e4aa4b1c5085275a06eee2d66f33442b5c54a12b62b96cbe", 194 "ppc64le-unknown-linux-gnu": "c591a28d943dce5cf9833e916125fdfbeb3120270c4866ee214493ccb5b83c3c", 195 "s390x-unknown-linux-gnu": "01454d7cc7c9c2fccde42ba868c4f372eaaafa48049d49dd94c9cf2875f497e6", 196 "x86_64-apple-darwin": "dfe1bea92c94b9cb779288b0b06e39157c5ff7e465cdd24032ac147c2af485c0", 197 "x86_64-pc-windows-msvc": "9b9a1e21eff29dcf043cea38180cf8ca3604b90117d00062a7b31605d4157714", 198 "x86_64-unknown-linux-gnu": "26c4a712b4b8e11ed5c027db5654eb12927c02da4857b777afb98f7a930ce637", 199 }, 200 "strip_prefix": "python", 201 }, 202 "3.9.18": { 203 "url": "20240224/cpython-{python_version}+20240224-{platform}-{build}.tar.gz", 204 "sha256": { 205 "aarch64-apple-darwin": "2548f911a6e316575c303ba42bb51540dc9b47a9f76a06a2a37460d93b177aa2", 206 "aarch64-unknown-linux-gnu": "e5bc5196baa603d635ee6b0cd141e359752ad3e8ea76127eb9141a3155c51200", 207 "ppc64le-unknown-linux-gnu": "d6b18df7a25fe034fd5ce4e64216df2cc78b2d4d908d2a1c94058ae700d73d22", 208 "s390x-unknown-linux-gnu": "15d059507c7e900e9665f31e8d903e5a24a68ceed24f9a1c5ac06ab42a354f3f", 209 "x86_64-apple-darwin": "171d8b472fce0295be0e28bb702c43d5a2a39feccb3e72efe620ac3843c3e402", 210 "x86_64-pc-windows-msvc": "a9bdbd728ed4c353a4157ecf74386117fb2a2769a9353f491c528371cfe7f6cd", 211 "x86_64-unknown-linux-gnu": "0e5663025121186bd17d331538a44f48b41baff247891d014f3f962cbe2716b4", 212 }, 213 "strip_prefix": "python", 214 }, 215 "3.9.19": { 216 "url": "20240726/cpython-{python_version}+20240726-{platform}-{build}.tar.gz", 217 "sha256": { 218 "aarch64-apple-darwin": "0e5a7aae57c53d7a849bc7f67764a947b626e3fe8d4d41a8eed11d9e4be0b1c6", 219 "aarch64-unknown-linux-gnu": "05ec896db9a9d4fe8004b4e4b6a6fdc588a015fedbddb475490885b0d9c7d9b3", 220 "ppc64le-unknown-linux-gnu": "bfff0e3d536b2f0c315e85926cc317b7b756701b6de781a8972cefbdbc991ca2", 221 "s390x-unknown-linux-gnu": "059ec97080b205ea5f1ddf71c18e22b691e8d68192bd37d13ad8f4359915299d", 222 "x86_64-apple-darwin": "f2ae9fcac044a329739b8c1676245e8cb6b3094416220e71823d2673bdea0bdb", 223 "x86_64-pc-windows-msvc": "a8df6a00140055c9accb0be632e7add951d587bbe3d63c40827bbd5145d8f557", 224 "x86_64-unknown-linux-gnu": "cbf94cb1c9d4b5501d9b3652f6e8400c2cab7c41dfea48d344d9e7f29692b91b", 225 }, 226 "strip_prefix": "python", 227 }, 228 "3.10.2": { 229 "url": "20220227/cpython-{python_version}+20220227-{platform}-{build}.tar.gz", 230 "sha256": { 231 "aarch64-apple-darwin": "1409acd9a506e2d1d3b65c1488db4e40d8f19d09a7df099667c87a506f71c0ef", 232 "aarch64-unknown-linux-gnu": "8f351a8cc348bb45c0f95b8634c8345ec6e749e483384188ad865b7428342703", 233 "x86_64-apple-darwin": "8146ad4390710ec69b316a5649912df0247d35f4a42e2aa9615bffd87b3e235a", 234 "x86_64-pc-windows-msvc": "a1d9a594cd3103baa24937ad9150c1a389544b4350e859200b3e5c036ac352bd", 235 "x86_64-unknown-linux-gnu": "9b64eca2a94f7aff9409ad70bdaa7fbbf8148692662e764401883957943620dd", 236 }, 237 "strip_prefix": "python", 238 }, 239 "3.10.4": { 240 "url": "20220502/cpython-{python_version}+20220502-{platform}-{build}.tar.gz", 241 "sha256": { 242 "aarch64-apple-darwin": "2c99983d1e83e4b6e7411ed9334019f193fba626344a50c36fba6c25d4de78a2", 243 "aarch64-unknown-linux-gnu": "d8098c0c54546637e7516f93b13403b11f9db285def8d7abd825c31407a13d7e", 244 "x86_64-apple-darwin": "f2711eaffff3477826a401d09a013c6802f11c04c63ab3686aa72664f1216a05", 245 "x86_64-pc-windows-msvc": "bee24a3a5c83325215521d261d73a5207ab7060ef3481f76f69b4366744eb81d", 246 "x86_64-unknown-linux-gnu": "f6f871e53a7b1469c13f9bd7920ad98c4589e549acad8e5a1e14760fff3dd5c9", 247 }, 248 "strip_prefix": "python", 249 }, 250 "3.10.6": { 251 "url": "20220802/cpython-{python_version}+20220802-{platform}-{build}.tar.gz", 252 "sha256": { 253 "aarch64-apple-darwin": "efaf66acdb9a4eb33d57702607d2e667b1a319d58c167a43c96896b97419b8b7", 254 "aarch64-unknown-linux-gnu": "81625f5c97f61e2e3d7e9f62c484b1aa5311f21bd6545451714b949a29da5435", 255 "x86_64-apple-darwin": "7718411adf3ea1480f3f018a643eb0550282aefe39e5ecb3f363a4a566a9398c", 256 "x86_64-pc-windows-msvc": "91889a7dbdceea585ff4d3b7856a6bb8f8a4eca83a0ff52a73542c2e67220eaa", 257 "x86_64-unknown-linux-gnu": "55aa2190d28dcfdf414d96dc5dcea9fe048fadcd583dc3981fec020869826111", 258 }, 259 "strip_prefix": "python", 260 }, 261 "3.10.8": { 262 "url": "20221106/cpython-{python_version}+20221106-{platform}-{build}.tar.gz", 263 "sha256": { 264 "aarch64-apple-darwin": "d52b03817bd245d28e0a8b2f715716cd0fcd112820ccff745636932c76afa20a", 265 "aarch64-unknown-linux-gnu": "33170bef18c811906b738be530f934640491b065bf16c4d276c6515321918132", 266 "x86_64-apple-darwin": "525b79c7ce5de90ab66bd07b0ac1008bafa147ddc8a41bef15ffb7c9c1e9e7c5", 267 "x86_64-pc-windows-msvc": "f2b6d2f77118f06dd2ca04dae1175e44aaa5077a5ed8ddc63333c15347182bfe", 268 "x86_64-unknown-linux-gnu": "6c8db44ae0e18e320320bbaaafd2d69cde8bfea171ae2d651b7993d1396260b7", 269 }, 270 "strip_prefix": "python", 271 }, 272 "3.10.9": { 273 "url": "20230116/cpython-{python_version}+20230116-{platform}-{build}.tar.gz", 274 "sha256": { 275 "aarch64-apple-darwin": "018d05a779b2de7a476f3b3ff2d10f503d69d14efcedd0774e6dab8c22ef84ff", 276 "aarch64-unknown-linux-gnu": "2003750f40cd09d4bf7a850342613992f8d9454f03b3c067989911fb37e7a4d1", 277 "x86_64-apple-darwin": "0e685f98dce0e5bc8da93c7081f4e6c10219792e223e4b5886730fd73a7ba4c6", 278 "x86_64-pc-windows-msvc": "59c6970cecb357dc1d8554bd0540eb81ee7f6d16a07acf3d14ed294ece02c035", 279 "x86_64-unknown-linux-gnu": "d196347aeb701a53fe2bb2b095abec38d27d0fa0443f8a1c2023a1bed6e18cdf", 280 }, 281 "strip_prefix": "python", 282 }, 283 "3.10.11": { 284 "url": "20230507/cpython-{python_version}+20230507-{platform}-{build}.tar.gz", 285 "sha256": { 286 "aarch64-apple-darwin": "8348bc3c2311f94ec63751fb71bd0108174be1c4def002773cf519ee1506f96f", 287 "aarch64-unknown-linux-gnu": "c7573fdb00239f86b22ea0e8e926ca881d24fde5e5890851339911d76110bc35", 288 "ppc64le-unknown-linux-gnu": "73a9d4c89ed51be39dd2de4e235078281087283e9fdedef65bec02f503e906ee", 289 "x86_64-apple-darwin": "bd3fc6e4da6f4033ebf19d66704e73b0804c22641ddae10bbe347c48f82374ad", 290 "x86_64-pc-windows-msvc": "9c2d3604a06fcd422289df73015cd00e7271d90de28d2c910f0e2309a7f73a68", 291 "x86_64-unknown-linux-gnu": "c5bcaac91bc80bfc29cf510669ecad12d506035ecb3ad85ef213416d54aecd79", 292 }, 293 "strip_prefix": "python", 294 }, 295 "3.10.12": { 296 "url": "20230726/cpython-{python_version}+20230726-{platform}-{build}.tar.gz", 297 "sha256": { 298 "aarch64-apple-darwin": "bc66c706ea8c5fc891635fda8f9da971a1a901d41342f6798c20ad0b2a25d1d6", 299 "aarch64-unknown-linux-gnu": "fee80e221663eca5174bd794cb5047e40d3910dbeadcdf1f09d405a4c1c15fe4", 300 "ppc64le-unknown-linux-gnu": "bb5e8cb0d2e44241725fa9b342238245503e7849917660006b0246a9c97b1d6c", 301 "s390x-unknown-linux-gnu": "8d33d435ae6fb93ded7fc26798cc0a1a4f546a4e527012a1e2909cc314b332df", 302 "x86_64-apple-darwin": "8a6e3ed973a671de468d9c691ed9cb2c3a4858c5defffcf0b08969fba9c1dd04", 303 "x86_64-pc-windows-msvc": "c1a31c353ca44de7d1b1a3b6c55a823e9c1eed0423d4f9f66e617bdb1b608685", 304 "x86_64-unknown-linux-gnu": "a476dbca9184df9fc69fe6309cda5ebaf031d27ca9e529852437c94ec1bc43d3", 305 }, 306 "strip_prefix": "python", 307 }, 308 "3.10.13": { 309 "url": "20240224/cpython-{python_version}+20240224-{platform}-{build}.tar.gz", 310 "sha256": { 311 "aarch64-apple-darwin": "5fdc0f6a5b5a90fd3c528e8b1da8e3aac931ea8690126c2fdb4254c84a3ff04a", 312 "aarch64-unknown-linux-gnu": "a898a88705611b372297bb8fe4d23cc16b8603ce5f24494c3a8cfa65d83787f9", 313 "ppc64le-unknown-linux-gnu": "c23706e138a0351fc1e9def2974af7b8206bac7ecbbb98a78f5aa9e7535fee42", 314 "s390x-unknown-linux-gnu": "09be8fb2cdfbb4a93d555f268f244dbe4d8ff1854b2658e8043aa4ec08aede3e", 315 "x86_64-apple-darwin": "6378dfd22f58bb553ddb02be28304d739cd730c1f95c15c74955c923a1bc3d6a", 316 "x86_64-pc-windows-msvc": "086f7fe9156b897bb401273db8359017104168ac36f60f3af4e31ac7acd6634e", 317 "x86_64-unknown-linux-gnu": "d995d032ca702afd2fc3a689c1f84a6c64972ecd82bba76a61d525f08eb0e195", 318 }, 319 "strip_prefix": "python", 320 }, 321 "3.10.14": { 322 "url": "20240726/cpython-{python_version}+20240726-{platform}-{build}.tar.gz", 323 "sha256": { 324 "aarch64-apple-darwin": "164d89f0df2feb689981864ecc1dffb19e6aa3696c8880166de555494fe92607", 325 "aarch64-unknown-linux-gnu": "39bcd46b4d70e40da177c55259be16d5c2be7a3f7f93f1e3bde47e71b4833f29", 326 "ppc64le-unknown-linux-gnu": "549d38b9ef59cba9ab2990025255231bfa1cb32b4bc5eac321667640fdee19d1", 327 "s390x-unknown-linux-gnu": "de4bc878a8666c734f983db971610980870148f333bda8b0c34abfaeae88d7ec", 328 "x86_64-apple-darwin": "1a1455838cd1e8ed0da14a152a2d559a2fd3a6047ba7013e841db4a35a228c1d", 329 "x86_64-pc-windows-msvc": "7f68821a8b5445267eca480660364ebd06ec84632b336770c6e39de07ac0f6c3", 330 "x86_64-unknown-linux-gnu": "32b34cd13d9d745b3db3f3b8398ab2c07de74544829915dbebd8dce39bdc405e", 331 }, 332 "strip_prefix": "python", 333 }, 334 "3.11.1": { 335 "url": "20230116/cpython-{python_version}+20230116-{platform}-{build}.tar.gz", 336 "sha256": { 337 "aarch64-apple-darwin": "4918cdf1cab742a90f85318f88b8122aeaa2d04705803c7b6e78e81a3dd40f80", 338 "aarch64-unknown-linux-gnu": "debf15783bdcb5530504f533d33fda75a7b905cec5361ae8f33da5ba6599f8b4", 339 "x86_64-apple-darwin": "20a4203d069dc9b710f70b09e7da2ce6f473d6b1110f9535fb6f4c469ed54733", 340 "x86_64-pc-windows-msvc": "edc08979cb0666a597466176511529c049a6f0bba8adf70df441708f766de5bf", 341 "x86_64-unknown-linux-gnu": "02a551fefab3750effd0e156c25446547c238688a32fabde2995c941c03a6423", 342 }, 343 "strip_prefix": "python", 344 }, 345 "3.11.3": { 346 "url": "20230507/cpython-{python_version}+20230507-{platform}-{build}.tar.gz", 347 "sha256": { 348 "aarch64-apple-darwin": "09e412506a8d63edbb6901742b54da9aa7faf120b8dbdce56c57b303fc892c86", 349 "aarch64-unknown-linux-gnu": "8190accbbbbcf7620f1ff6d668e4dd090c639665d11188ce864b62554d40e5ab", 350 "ppc64le-unknown-linux-gnu": "767d24f3570b35fedb945f5ac66224c8983f2d556ab83c5cfaa5f3666e9c212c", 351 "x86_64-apple-darwin": "f710b8d60621308149c100d5175fec39274ed0b9c99645484fd93d1716ef4310", 352 "x86_64-pc-windows-msvc": "24741066da6f35a7ff67bee65ce82eae870d84e1181843e64a7076d1571e95af", 353 "x86_64-unknown-linux-gnu": "da50b87d1ec42b3cb577dfd22a3655e43a53150f4f98a4bfb40757c9d7839ab5", 354 }, 355 "strip_prefix": "python", 356 }, 357 "3.11.4": { 358 "url": "20230726/cpython-{python_version}+20230726-{platform}-{build}.tar.gz", 359 "sha256": { 360 "aarch64-apple-darwin": "cb6d2948384a857321f2aa40fa67744cd9676a330f08b6dad7070bda0b6120a4", 361 "aarch64-unknown-linux-gnu": "2e84fc53f4e90e11963281c5c871f593abcb24fc796a50337fa516be99af02fb", 362 "ppc64le-unknown-linux-gnu": "df7b92ed9cec96b3bb658fb586be947722ecd8e420fb23cee13d2e90abcfcf25", 363 "s390x-unknown-linux-gnu": "e477f0749161f9aa7887964f089d9460a539f6b4a8fdab5166f898210e1a87a4", 364 "x86_64-apple-darwin": "47e1557d93a42585972772e82661047ca5f608293158acb2778dccf120eabb00", 365 "x86_64-pc-windows-msvc": "878614c03ea38538ae2f758e36c85d2c0eb1eaaca86cd400ff8c76693ee0b3e1", 366 "x86_64-unknown-linux-gnu": "e26247302bc8e9083a43ce9e8dd94905b40d464745b1603041f7bc9a93c65d05", 367 }, 368 "strip_prefix": "python", 369 }, 370 "3.11.5": { 371 "url": "20230826/cpython-{python_version}+20230826-{platform}-{build}.tar.gz", 372 "sha256": { 373 "aarch64-apple-darwin": "dab64b3580118ad2073babd7c29fd2053b616479df5c107d31fe2af1f45e948b", 374 "aarch64-unknown-linux-gnu": "bb5c5d1ea0f199fe2d3f0996fff4b48ca6ddc415a3dbd98f50bff7fce48aac80", 375 "ppc64le-unknown-linux-gnu": "14121b53e9c8c6d0741f911ae00102a35adbcf5c3cdf732687ef7617b7d7304d", 376 "s390x-unknown-linux-gnu": "fe459da39874443579d6fe88c68777c6d3e331038e1fb92a0451879fb6beb16d", 377 "x86_64-apple-darwin": "4a4efa7378c72f1dd8ebcce1afb99b24c01b07023aa6b8fea50eaedb50bf2bfc", 378 "x86_64-pc-windows-msvc": "00f002263efc8aea896bcfaaf906b1f4dab3e5cd3db53e2b69ab9a10ba220b97", 379 "x86_64-unknown-linux-gnu": "fbed6f7694b2faae5d7c401a856219c945397f772eea5ca50c6eb825cbc9d1e1", 380 }, 381 "strip_prefix": "python", 382 }, 383 "3.11.6": { 384 "url": "20231002/cpython-{python_version}+20231002-{platform}-{build}.tar.gz", 385 "sha256": { 386 "aarch64-apple-darwin": "916c35125b5d8323a21526d7a9154ca626453f63d0878e95b9f613a95006c990", 387 "aarch64-unknown-linux-gnu": "3e26a672df17708c4dc928475a5974c3fb3a34a9b45c65fb4bd1e50504cc84ec", 388 "ppc64le-unknown-linux-gnu": "7937035f690a624dba4d014ffd20c342e843dd46f89b0b0a1e5726b85deb8eaf", 389 "s390x-unknown-linux-gnu": "f9f19823dba3209cedc4647b00f46ed0177242917db20fb7fb539970e384531c", 390 "x86_64-apple-darwin": "178cb1716c2abc25cb56ae915096c1a083e60abeba57af001996e8bc6ce1a371", 391 "x86_64-pc-windows-msvc": "3933545e6d41462dd6a47e44133ea40995bc6efeed8c2e4cbdf1a699303e95ea", 392 "x86_64-unknown-linux-gnu": "ee37a7eae6e80148c7e3abc56e48a397c1664f044920463ad0df0fc706eacea8", 393 }, 394 "strip_prefix": "python", 395 }, 396 "3.11.7": { 397 "url": "20240107/cpython-{python_version}+20240107-{platform}-{build}.tar.gz", 398 "sha256": { 399 "aarch64-apple-darwin": "b042c966920cf8465385ca3522986b12d745151a72c060991088977ca36d3883", 400 "aarch64-unknown-linux-gnu": "b102eaf865eb715aa98a8a2ef19037b6cc3ae7dfd4a632802650f29de635aa13", 401 "ppc64le-unknown-linux-gnu": "b44e1b74afe75c7b19143413632c4386708ae229117f8f950c2094e9681d34c7", 402 "s390x-unknown-linux-gnu": "49520e3ff494708020f306e30b0964f079170be83e956be4504f850557378a22", 403 "x86_64-apple-darwin": "a0e615eef1fafdc742da0008425a9030b7ea68a4ae4e73ac557ef27b112836d4", 404 "x86_64-pc-windows-msvc": "67077e6fa918e4f4fd60ba169820b00be7c390c497bf9bc9cab2c255ea8e6f3e", 405 "x86_64-unknown-linux-gnu": "4a51ce60007a6facf64e5495f4cf322e311ba9f39a8cd3f3e4c026eae488e140", 406 }, 407 "strip_prefix": "python", 408 }, 409 "3.11.8": { 410 "url": "20240224/cpython-{python_version}+20240224-{platform}-{build}.tar.gz", 411 "sha256": { 412 "aarch64-apple-darwin": "389a51139f5abe071a0d70091ca5df3e7a3dfcfcbe3e0ba6ad85fb4c5638421e", 413 "aarch64-unknown-linux-gnu": "389b9005fb78dd5a6f68df5ea45ab7b30d9a4b3222af96999e94fd20d4ad0c6a", 414 "ppc64le-unknown-linux-gnu": "eb2b31f8e50309aae493c6a359c32b723a676f07c641f5e8fe4b6aa4dbb50946", 415 "s390x-unknown-linux-gnu": "844f64f4c16e24965778281da61d1e0e6cd1358a581df1662da814b1eed096b9", 416 "x86_64-apple-darwin": "097f467b0c36706bfec13f199a2eaf924e668f70c6e2bd1f1366806962f7e86e", 417 "x86_64-pc-windows-msvc": "b618f1f047349770ee1ef11d1b05899840abd53884b820fd25c7dfe2ec1664d4", 418 "x86_64-unknown-linux-gnu": "94e13d0e5ad417035b80580f3e893a72e094b0900d5d64e7e34ab08e95439987", 419 }, 420 "strip_prefix": "python", 421 }, 422 "3.11.9": { 423 "url": "20240726/cpython-{python_version}+20240726-{platform}-{build}.tar.gz", 424 "sha256": { 425 "aarch64-apple-darwin": "cbdac9462bab9671c8e84650e425d3f43b775752a930a2ef954a0d457d5c00c3", 426 "aarch64-unknown-linux-gnu": "4d17cf988abe24449d649aad3ef974091ab76807904d41839907061925b4c9e3", 427 "ppc64le-unknown-linux-gnu": "fc4f3c9ef9bfac2ed0282126ff376e544697ad04a5408d6429d46899d7d3bf21", 428 "s390x-unknown-linux-gnu": "e69b66e53e926460df044f44846eef3fea642f630e829719e1a4112fc370dc56", 429 "x86_64-apple-darwin": "dc3174666a30f4c38d04e79a80c3159b4b3aa69597c4676701c8386696811611", 430 "x86_64-pc-windows-msvc": "f694be48bdfec1dace6d69a19906b6083f4dd7c7c61f1138ba520e433e5598f8", 431 "x86_64-unknown-linux-gnu": "f6e955dc9ddfcad74e77abe6f439dac48ebca14b101ed7c85a5bf3206ed2c53d", 432 }, 433 "strip_prefix": "python", 434 }, 435 "3.12.0": { 436 "url": "20231002/cpython-{python_version}+20231002-{platform}-{build}.tar.gz", 437 "sha256": { 438 "aarch64-apple-darwin": "4734a2be2becb813830112c780c9879ac3aff111a0b0cd590e65ec7465774d02", 439 "aarch64-unknown-linux-gnu": "bccfe67cf5465a3dfb0336f053966e2613a9bc85a6588c2fcf1366ef930c4f88", 440 "ppc64le-unknown-linux-gnu": "b5dae075467ace32c594c7877fe6ebe0837681f814601d5d90ba4c0dfd87a1f2", 441 "s390x-unknown-linux-gnu": "5681621349dd85d9726d1b67c84a9686ce78f72e73a6f9e4cc4119911655759e", 442 "x86_64-apple-darwin": "5a9e88c8aa52b609d556777b52ebde464ae4b4f77e4aac4eb693af57395c9abf", 443 "x86_64-pc-windows-msvc": "facfaa1fbc8653f95057f3c4a0f8aa833dab0e0b316e24ee8686bc761d4b4f8d", 444 "x86_64-unknown-linux-gnu": "e51a5293f214053ddb4645b2c9f84542e2ef86870b8655704367bd4b29d39fe9", 445 }, 446 "strip_prefix": "python", 447 }, 448 "3.12.1": { 449 "url": "20240107/cpython-{python_version}+20240107-{platform}-{build}.tar.gz", 450 "sha256": { 451 "aarch64-apple-darwin": "f93f8375ca6ac0a35d58ff007043cbd3a88d9609113f1cb59cf7c8d215f064af", 452 "aarch64-unknown-linux-gnu": "236533ef20e665007a111c2f36efb59c87ae195ad7dca223b6dc03fb07064f0b", 453 "ppc64le-unknown-linux-gnu": "78051f0d1411ee62bc2af5edfccf6e8400ac4ef82887a2affc19a7ace6a05267", 454 "s390x-unknown-linux-gnu": "60631211c701f8d2c56e5dd7b154e68868128a019b9db1d53a264f56c0d4aee2", 455 "x86_64-apple-darwin": "eca96158c1568dedd9a0b3425375637a83764d1fa74446438293089a8bfac1f8", 456 "x86_64-pc-windows-msvc": "fd5a9e0f41959d0341246d3643f2b8794f638adc0cec8dd5e1b6465198eae08a", 457 "x86_64-unknown-linux-gnu": "74e330b8212ca22fd4d9a2003b9eec14892155566738febc8e5e572f267b9472", 458 }, 459 "strip_prefix": "python", 460 }, 461 "3.12.2": { 462 "url": "20240224/cpython-{python_version}+20240224-{platform}-{build}.tar.gz", 463 "sha256": { 464 "aarch64-apple-darwin": "01c064c00013b0175c7858b159989819ead53f4746d40580b5b0b35b6e80fba6", 465 "aarch64-unknown-linux-gnu": "e52550379e7c4ac27a87de832d172658bc04150e4e27d4e858e6d8cbb96fd709", 466 "ppc64le-unknown-linux-gnu": "74bc02c4bbbd26245c37b29b9e12d0a9c1b7ab93477fed8b651c988b6a9a6251", 467 "s390x-unknown-linux-gnu": "ecd6b0285e5eef94deb784b588b4b425a15a43ae671bf206556659dc141a9825", 468 "x86_64-apple-darwin": "a53a6670a202c96fec0b8c55ccc780ea3af5307eb89268d5b41a9775b109c094", 469 "x86_64-pc-windows-msvc": "1e5655a6ccb1a64a78460e4e3ee21036c70246800f176a6c91043a3fe3654a3b", 470 "x86_64-unknown-linux-gnu": "57a37b57f8243caa4cdac016176189573ad7620f0b6da5941c5e40660f9468ab", 471 }, 472 "strip_prefix": "python", 473 }, 474 "3.12.3": { 475 "url": "20240415/cpython-{python_version}+20240415-{platform}-{build}.tar.gz", 476 "sha256": { 477 "aarch64-apple-darwin": "ccc40e5af329ef2af81350db2a88bbd6c17b56676e82d62048c15d548401519e", 478 "aarch64-unknown-linux-gnu": "ec8126de97945e629cca9aedc80a29c4ae2992c9d69f2655e27ae73906ba187d", 479 "ppc64le-unknown-linux-gnu": "c5dcf08b8077e617d949bda23027c49712f583120b3ed744f9b143da1d580572", 480 "s390x-unknown-linux-gnu": "872fc321363b8cdd826fd2cb1adfd1ceb813bc1281f9d410c1c2c4e177e8df86", 481 "x86_64-apple-darwin": "c37a22fca8f57d4471e3708de6d13097668c5f160067f264bb2b18f524c890c8", 482 "x86_64-pc-windows-msvc": "f7cfa4ad072feb4578c8afca5ba9a54ad591d665a441dd0d63aa366edbe19279", 483 "x86_64-unknown-linux-gnu": "a73ba777b5d55ca89edef709e6b8521e3f3d4289581f174c8699adfb608d09d6", 484 }, 485 "strip_prefix": "python", 486 }, 487 "3.12.4": { 488 "url": "20240726/cpython-{python_version}+20240726-{platform}-{build}.tar.gz", 489 "sha256": { 490 "aarch64-apple-darwin": "1801025e825c04b3907e4ef6220a13607bc0397628c9485897073110ef7fde15", 491 "aarch64-unknown-linux-gnu": "a098b18b7e9fea0c66867b76c0124fce9465765017572b2e7b522154c87c78d7", 492 "ppc64le-unknown-linux-gnu": "04011c4c5b7fe34b0b895edf4ad8748e410686c1d69aaee11d6688d481023bcb", 493 "s390x-unknown-linux-gnu": "8f8f3e29cf0c2facdbcfee70660939fda7667ac24fee8656d3388fc72f3acc7c", 494 "x86_64-apple-darwin": "4c325838c1b0ed13698506fcd515be25c73dcbe195f8522cf98f9148a97601ed", 495 "x86_64-pc-windows-msvc": "74309b0f322716409883d38c621743ea7fa0376eb00927b8ee1e1671d3aff450", 496 "x86_64-unknown-linux-gnu": "e133dd6fc6a2d0033e2658637cc22e9c95f9d7073b80115037ee1f16417a54ac", 497 }, 498 "strip_prefix": "python", 499 }, 500} 501 502# buildifier: disable=unsorted-dict-items 503MINOR_MAPPING = { 504 "3.8": "3.8.19", 505 "3.9": "3.9.19", 506 "3.10": "3.10.14", 507 "3.11": "3.11.9", 508 "3.12": "3.12.4", 509} 510 511PLATFORMS = { 512 "aarch64-apple-darwin": struct( 513 compatible_with = [ 514 "@platforms//os:macos", 515 "@platforms//cpu:aarch64", 516 ], 517 flag_values = {}, 518 os_name = MACOS_NAME, 519 # Matches the value returned from: 520 # repository_ctx.execute(["uname", "-m"]).stdout.strip() 521 arch = "arm64", 522 ), 523 "aarch64-unknown-linux-gnu": struct( 524 compatible_with = [ 525 "@platforms//os:linux", 526 "@platforms//cpu:aarch64", 527 ], 528 flag_values = { 529 Label("//python/config_settings:py_linux_libc"): "glibc", 530 }, 531 os_name = LINUX_NAME, 532 # Note: this string differs between OSX and Linux 533 # Matches the value returned from: 534 # repository_ctx.execute(["uname", "-m"]).stdout.strip() 535 arch = "aarch64", 536 ), 537 "armv7-unknown-linux-gnu": struct( 538 compatible_with = [ 539 "@platforms//os:linux", 540 "@platforms//cpu:armv7", 541 ], 542 flag_values = { 543 Label("//python/config_settings:py_linux_libc"): "glibc", 544 }, 545 os_name = LINUX_NAME, 546 arch = "armv7", 547 ), 548 "i386-unknown-linux-gnu": struct( 549 compatible_with = [ 550 "@platforms//os:linux", 551 "@platforms//cpu:i386", 552 ], 553 flag_values = { 554 Label("//python/config_settings:py_linux_libc"): "glibc", 555 }, 556 os_name = LINUX_NAME, 557 arch = "i386", 558 ), 559 "ppc64le-unknown-linux-gnu": struct( 560 compatible_with = [ 561 "@platforms//os:linux", 562 "@platforms//cpu:ppc", 563 ], 564 flag_values = { 565 Label("//python/config_settings:py_linux_libc"): "glibc", 566 }, 567 os_name = LINUX_NAME, 568 # Note: this string differs between OSX and Linux 569 # Matches the value returned from: 570 # repository_ctx.execute(["uname", "-m"]).stdout.strip() 571 arch = "ppc64le", 572 ), 573 "riscv64-unknown-linux-gnu": struct( 574 compatible_with = [ 575 "@platforms//os:linux", 576 "@platforms//cpu:riscv64", 577 ], 578 flag_values = { 579 Label("//python/config_settings:py_linux_libc"): "glibc", 580 }, 581 os_name = LINUX_NAME, 582 arch = "riscv64", 583 ), 584 "s390x-unknown-linux-gnu": struct( 585 compatible_with = [ 586 "@platforms//os:linux", 587 "@platforms//cpu:s390x", 588 ], 589 flag_values = { 590 Label("//python/config_settings:py_linux_libc"): "glibc", 591 }, 592 os_name = LINUX_NAME, 593 # Note: this string differs between OSX and Linux 594 # Matches the value returned from: 595 # repository_ctx.execute(["uname", "-m"]).stdout.strip() 596 arch = "s390x", 597 ), 598 "x86_64-apple-darwin": struct( 599 compatible_with = [ 600 "@platforms//os:macos", 601 "@platforms//cpu:x86_64", 602 ], 603 flag_values = {}, 604 os_name = MACOS_NAME, 605 arch = "x86_64", 606 ), 607 "x86_64-pc-windows-msvc": struct( 608 compatible_with = [ 609 "@platforms//os:windows", 610 "@platforms//cpu:x86_64", 611 ], 612 flag_values = {}, 613 os_name = WINDOWS_NAME, 614 arch = "x86_64", 615 ), 616 "x86_64-unknown-linux-gnu": struct( 617 compatible_with = [ 618 "@platforms//os:linux", 619 "@platforms//cpu:x86_64", 620 ], 621 flag_values = { 622 Label("//python/config_settings:py_linux_libc"): "glibc", 623 }, 624 os_name = LINUX_NAME, 625 arch = "x86_64", 626 ), 627} 628 629def get_release_info(platform, python_version, base_url = DEFAULT_RELEASE_BASE_URL, tool_versions = TOOL_VERSIONS): 630 """Resolve the release URL for the requested interpreter version 631 632 Args: 633 platform: The platform string for the interpreter 634 python_version: The version of the interpreter to get 635 base_url: The URL to prepend to the 'url' attr in the tool_versions dict 636 tool_versions: A dict listing the interpreter versions, their SHAs and URL 637 638 Returns: 639 A tuple of (filename, url, archive strip prefix, patches, patch_strip) 640 """ 641 642 url = tool_versions[python_version]["url"] 643 644 if type(url) == type({}): 645 url = url[platform] 646 647 if type(url) != type([]): 648 url = [url] 649 650 strip_prefix = tool_versions[python_version].get("strip_prefix", None) 651 if type(strip_prefix) == type({}): 652 strip_prefix = strip_prefix[platform] 653 654 release_filename = None 655 rendered_urls = [] 656 for u in url: 657 release_filename = u.format( 658 platform = platform, 659 python_version = python_version, 660 build = "shared-install_only" if (WINDOWS_NAME in platform) else "install_only", 661 ) 662 if "://" in release_filename: # is absolute url? 663 rendered_urls.append(release_filename) 664 else: 665 rendered_urls.append("/".join([base_url, release_filename])) 666 667 if release_filename == None: 668 fail("release_filename should be set by now; were any download URLs given?") 669 670 patches = tool_versions[python_version].get("patches", []) 671 if type(patches) == type({}): 672 if platform in patches.keys(): 673 patches = patches[platform] 674 else: 675 patches = [] 676 patch_strip = tool_versions[python_version].get("patch_strip", None) 677 if type(patch_strip) == type({}): 678 if platform in patch_strip.keys(): 679 patch_strip = patch_strip[platform] 680 else: 681 patch_strip = None 682 683 return (release_filename, rendered_urls, strip_prefix, patches, patch_strip) 684 685def print_toolchains_checksums(name): 686 native.genrule( 687 name = name, 688 srcs = [], 689 outs = ["print_toolchains_checksums.sh"], 690 cmd = """\ 691cat > "$@" <<'EOF' 692#!/bin/bash 693 694set -o errexit -o nounset -o pipefail 695 696echo "Fetching hashes..." 697 698{commands} 699EOF 700 """.format( 701 commands = "\n".join([ 702 _commands_for_version(python_version) 703 for python_version in TOOL_VERSIONS.keys() 704 ]), 705 ), 706 executable = True, 707 ) 708 709def _commands_for_version(python_version): 710 return "\n".join([ 711 "echo \"{python_version}: {platform}: $$(curl --location --fail {release_url_sha256} 2>/dev/null || curl --location --fail {release_url} 2>/dev/null | shasum -a 256 | awk '{{ print $$1 }}')\"".format( 712 python_version = python_version, 713 platform = platform, 714 release_url = release_url, 715 release_url_sha256 = release_url + ".sha256", 716 ) 717 for platform in TOOL_VERSIONS[python_version]["sha256"].keys() 718 for release_url in get_release_info(platform, python_version)[1] 719 ]) 720 721def gen_python_config_settings(name = ""): 722 for platform in PLATFORMS.keys(): 723 native.config_setting( 724 name = "{name}{platform}".format(name = name, platform = platform), 725 flag_values = PLATFORMS[platform].flag_values, 726 constraint_values = PLATFORMS[platform].compatible_with, 727 ) 728