ppc64le-and-riscv64-support.patch 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734
  1. diff --git a/build/azure-pipelines/linux/setup-env.sh b/build/azure-pipelines/linux/setup-env.sh
  2. index 949b5f3..30093d6 100755
  3. --- a/build/azure-pipelines/linux/setup-env.sh
  4. +++ b/build/azure-pipelines/linux/setup-env.sh
  5. @@ -9,2 +9,6 @@ fi
  6. +if [ "$npm_config_arch" == "riscv64" ]; then
  7. + exit 0
  8. +fi
  9. +
  10. export VSCODE_SYSROOT_DIR=$PWD/.build/sysroots
  11. @@ -67,2 +71,16 @@ elif [ "$npm_config_arch" == "arm" ]; then
  12. export VSCODE_REMOTE_LDFLAGS="--sysroot=$VSCODE_SYSROOT_DIR/arm-rpi-linux-gnueabihf/arm-rpi-linux-gnueabihf/sysroot -L$VSCODE_SYSROOT_DIR/arm-rpi-linux-gnueabihf/arm-rpi-linux-gnueabihf/sysroot/usr/lib/arm-linux-gnueabihf -L$VSCODE_SYSROOT_DIR/arm-rpi-linux-gnueabihf/arm-rpi-linux-gnueabihf/sysroot/lib/arm-linux-gnueabihf"
  13. +elif [ "$npm_config_arch" == "ppc64" ]; then
  14. + if [ "$(echo "$@" | grep -c -- "--only-remote")" -eq 0 ]; then
  15. + # Set compiler toolchain for client native modules
  16. + export CC=$VSCODE_SYSROOT_DIR/powerpc64le-linux-gnu/bin/powerpc64le-linux-gnu-gcc
  17. + export CXX=$VSCODE_SYSROOT_DIR/powerpc64le-linux-gnu/bin/powerpc64le-linux-gnu-g++
  18. + export CXXFLAGS="--sysroot=$VSCODE_SYSROOT_DIR/powerpc64le-linux-gnu/powerpc64le-linux-gnu/sysroot"
  19. + export LDFLAGS="--sysroot=$VSCODE_SYSROOT_DIR/powerpc64le-linux-gnu/powerpc64le-linux-gnu/sysroot -L$VSCODE_SYSROOT_DIR/powerpc64le-linux-gnu/powerpc64le-linux-gnu/sysroot/usr/lib/powerpc64le-linux-gnu -L$VSCODE_SYSROOT_DIR/powerpc64le-linux-gnu/powerpc64le-linux-gnu/sysroot/lib/powerpc64le-linux-gnu"
  20. +
  21. + # Set compiler toolchain for remote server
  22. + export VSCODE_REMOTE_CC=$VSCODE_SYSROOT_DIR/powerpc64le-linux-gnu/bin/powerpc64le-linux-gnu-gcc
  23. + export VSCODE_REMOTE_CXX=$VSCODE_SYSROOT_DIR/powerpc64le-linux-gnu/bin/powerpc64le-linux-gnu-g++
  24. + export VSCODE_REMOTE_CXXFLAGS="--sysroot=$VSCODE_SYSROOT_DIR/powerpc64le-linux-gnu/powerpc64le-linux-gnu/sysroot"
  25. + export VSCODE_REMOTE_LDFLAGS="--sysroot=$VSCODE_SYSROOT_DIR/powerpc64le-linux-gnu/powerpc64le-linux-gnu/sysroot -L$VSCODE_SYSROOT_DIR/powerpc64le-linux-gnu/powerpc64le-linux-gnu/sysroot/usr/lib/powerpc64le-linux-gnu -L$VSCODE_SYSROOT_DIR/powerpc64le-linux-gnu/powerpc64le-linux-gnu/sysroot/lib/powerpc64le-linux-gnu"
  26. + fi
  27. fi
  28. diff --git a/build/azure-pipelines/linux/verify-glibc-requirements.sh b/build/azure-pipelines/linux/verify-glibc-requirements.sh
  29. index 19482c2..f49d910 100755
  30. --- a/build/azure-pipelines/linux/verify-glibc-requirements.sh
  31. +++ b/build/azure-pipelines/linux/verify-glibc-requirements.sh
  32. @@ -9,2 +9,4 @@ elif [ "$VSCODE_ARCH" == "armhf" ]; then
  33. TRIPLE="arm-rpi-linux-gnueabihf"
  34. +elif [ "$VSCODE_ARCH" == "ppc64le" ]; then
  35. + TRIPLE="powerpc64le-linux-gnu"
  36. fi
  37. diff --git a/build/checksums/vscode-sysroot.txt b/build/checksums/vscode-sysroot.txt
  38. index 0b5f38c..9f3b02b 100644
  39. --- a/build/checksums/vscode-sysroot.txt
  40. +++ b/build/checksums/vscode-sysroot.txt
  41. @@ -6 +6,2 @@
  42. dbb927408393041664a020661f2641c9785741be3d29b050b9dac58980967784 x86_64-linux-gnu-glibc-2.28.tar.gz
  43. +fa8176d27be18bb0eeb7f55b0fa22255050b430ef68c29136599f02976eb0b1b powerpc64le-linux-gnu-glibc-2.28.tar.gz
  44. diff --git a/build/gulpfile.reh.js b/build/gulpfile.reh.js
  45. index 7d58861..f14984f 100644
  46. --- a/build/gulpfile.reh.js
  47. +++ b/build/gulpfile.reh.js
  48. @@ -48,2 +48,4 @@ const BUILD_TARGETS = [
  49. { platform: 'linux', arch: 'arm64' },
  50. + { platform: 'linux', arch: 'ppc64le' },
  51. + { platform: 'linux', arch: 'riscv64' },
  52. { platform: 'alpine', arch: 'arm64' },
  53. @@ -217,2 +219,10 @@ function nodejs(platform, arch) {
  54. case 'linux':
  55. + if (arch === 'riscv64') {
  56. + return fetchUrls(`/download/release/v${nodeVersion}/node-v${nodeVersion}-${platform}-${arch}.tar.gz`,
  57. + { base: 'https://unofficial-builds.nodejs.org', checksumSha256 }).pipe(flatmap(stream => stream.pipe(gunzip()).pipe
  58. + (untar())))
  59. + .pipe(filter('**/node'))
  60. + .pipe(util.setExecutableBit('**'))
  61. + .pipe(rename('node'));
  62. + }
  63. return (product.nodejsRepository !== 'https://nodejs.org' ?
  64. diff --git a/build/gulpfile.scan.js b/build/gulpfile.scan.js
  65. index 6f8144b..8a8195e 100644
  66. --- a/build/gulpfile.scan.js
  67. +++ b/build/gulpfile.scan.js
  68. @@ -26,2 +26,4 @@ const BUILD_TARGETS = [
  69. { platform: 'linux', arch: 'arm64' },
  70. + { platform: 'linux', arch: 'ppc64le' },
  71. + { platform: 'linux', arch: 'riscv64' },
  72. ];
  73. diff --git a/build/gulpfile.vscode.js b/build/gulpfile.vscode.js
  74. index 4af4067..1f99344 100644
  75. --- a/build/gulpfile.vscode.js
  76. +++ b/build/gulpfile.vscode.js
  77. @@ -350,2 +350,12 @@ function packageTask(platform, arch, sourceFolderName, destinationFolderName, op
  78. + const electronOverride = {};
  79. + if (process.env.VSCODE_ELECTRON_REPO) {
  80. + // electron doesn't support riscv64 and ppc64le, override the repo with `VSCODE_ELECTRON_REPO`.
  81. + electronOverride.repo = process.env.VSCODE_ELECTRON_REPO;
  82. + }
  83. +
  84. + if (process.env.VSCODE_ELECTRON_TAG) {
  85. + electronOverride.tag = process.env.VSCODE_ELECTRON_TAG;
  86. + }
  87. +
  88. let result = all
  89. @@ -354,3 +364,3 @@ function packageTask(platform, arch, sourceFolderName, destinationFolderName, op
  90. .pipe(filter(['**', '!**/.github/**'], { dot: true })) // https://github.com/microsoft/vscode/issues/116523
  91. - .pipe(electron({ ...config, platform, arch: arch === 'armhf' ? 'arm' : arch, ffmpegChromium: false }))
  92. + .pipe(electron({ ...config, ...electronOverride, platform, arch: arch === 'armhf' ? 'arm' : arch, ffmpegChromium: false }))
  93. .pipe(filter(['**', '!LICENSE', '!version'], { dot: true }));
  94. @@ -449,2 +459,4 @@ const BUILD_TARGETS = [
  95. { platform: 'linux', arch: 'arm64' },
  96. + { platform: 'linux', arch: 'ppc64le' },
  97. + { platform: 'linux', arch: 'riscv64' },
  98. ];
  99. diff --git a/build/gulpfile.vscode.linux.js b/build/gulpfile.vscode.linux.js
  100. index 28ddfb0..cb3169c 100644
  101. --- a/build/gulpfile.vscode.linux.js
  102. +++ b/build/gulpfile.vscode.linux.js
  103. @@ -33,3 +33,3 @@ const linuxPackageRevision = Math.floor(new Date().getTime() / 1000);
  104. function getDebPackageArch(arch) {
  105. - return { x64: 'amd64', armhf: 'armhf', arm64: 'arm64' }[arch];
  106. + return { x64: 'amd64', armhf: 'armhf', arm64: 'arm64', ppc64le: 'ppc64el', riscv64: 'riscv64' }[arch];
  107. }
  108. @@ -141,3 +141,3 @@ function getRpmBuildPath(rpmArch) {
  109. function getRpmPackageArch(arch) {
  110. - return { x64: 'x86_64', armhf: 'armv7hl', arm64: 'aarch64' }[arch];
  111. + return { x64: 'x86_64', armhf: 'armv7hl', arm64: 'aarch64', ppc64le: 'ppc64le', riscv64: 'riscv64' }[arch];
  112. }
  113. @@ -301,2 +301,4 @@ const BUILD_TARGETS = [
  114. { arch: 'arm64' },
  115. + { arch: 'ppc64le' },
  116. + { arch: 'riscv64' },
  117. ];
  118. diff --git a/build/linux/debian/calculate-deps.js b/build/linux/debian/calculate-deps.js
  119. index bbcb6bf..d00158f 100644
  120. --- a/build/linux/debian/calculate-deps.js
  121. +++ b/build/linux/debian/calculate-deps.js
  122. @@ -51,2 +51,8 @@ function calculatePackageDeps(binaryPath, arch, chromiumSysroot, vscodeSysroot)
  123. break;
  124. + case 'ppc64el':
  125. + cmd.push(`-l${chromiumSysroot}/usr/lib/powerpc64le-linux-gnu`, `-l${chromiumSysroot}/lib/powerpc64le-linux-gnu`, `-l${vscodeSysroot}/usr/lib/powerpc64le-linux-gnu`, `-l${vscodeSysroot}/lib/powerpc64le-linux-gnu`);
  126. + break;
  127. + case 'riscv64':
  128. + cmd.push(`-l${chromiumSysroot}/usr/lib/riscv64-linux-gnu`, `-l${chromiumSysroot}/lib/riscv64-linux-gnu`, `-l${vscodeSysroot}/usr/lib/riscv64-linux-gnu`, `-l${vscodeSysroot}/lib/riscv64-linux-gnu`);
  129. + break;
  130. }
  131. diff --git a/build/linux/debian/calculate-deps.ts b/build/linux/debian/calculate-deps.ts
  132. index 92f8065..b86b4db 100644
  133. --- a/build/linux/debian/calculate-deps.ts
  134. +++ b/build/linux/debian/calculate-deps.ts
  135. @@ -61,2 +61,14 @@ function calculatePackageDeps(binaryPath: string, arch: DebianArchString, chromi
  136. break;
  137. + case 'ppc64el':
  138. + cmd.push(`-l${chromiumSysroot}/usr/lib/powerpc64le-linux-gnu`,
  139. + `-l${chromiumSysroot}/lib/powerpc64le-linux-gnu`,
  140. + `-l${vscodeSysroot}/usr/lib/powerpc64le-linux-gnu`,
  141. + `-l${vscodeSysroot}/lib/powerpc64le-linux-gnu`);
  142. + break;
  143. + case 'riscv64':
  144. + cmd.push(`-l${chromiumSysroot}/usr/lib/riscv64-linux-gnu`,
  145. + `-l${chromiumSysroot}/lib/riscv64-linux-gnu`,
  146. + `-l${vscodeSysroot}/usr/lib/riscv64-linux-gnu`,
  147. + `-l${vscodeSysroot}/lib/riscv64-linux-gnu`);
  148. + break;
  149. }
  150. diff --git a/build/linux/debian/dep-lists.js b/build/linux/debian/dep-lists.js
  151. index 3a642a7..91daf09 100644
  152. --- a/build/linux/debian/dep-lists.js
  153. +++ b/build/linux/debian/dep-lists.js
  154. @@ -144,2 +144,81 @@ exports.referenceGeneratedDepsByArch = {
  155. 'xdg-utils (>= 1.0.2)'
  156. + ],
  157. + 'ppc64el': [
  158. + 'ca-certificates',
  159. + 'libasound2 (>= 1.0.17)',
  160. + 'libatk-bridge2.0-0 (>= 2.5.3)',
  161. + 'libatk1.0-0 (>= 2.2.0)',
  162. + 'libatspi2.0-0 (>= 2.9.90)',
  163. + 'libc6 (>= 2.17)',
  164. + 'libc6 (>= 2.28)',
  165. + 'libcairo2 (>= 1.6.0)',
  166. + 'libcurl3-gnutls | libcurl3-nss | libcurl4 | libcurl3',
  167. + 'libdbus-1-3 (>= 1.9.14)',
  168. + 'libdrm2 (>= 2.4.75)',
  169. + 'libexpat1 (>= 2.1~beta3)',
  170. + 'libgbm1 (>= 17.1.0~rc2)',
  171. + 'libglib2.0-0 (>= 2.37.3)',
  172. + 'libgssapi-krb5-2 (>= 1.17)',
  173. + 'libgtk-3-0 (>= 3.9.10)',
  174. + 'libgtk-3-0 (>= 3.9.10) | libgtk-4-1',
  175. + 'libkrb5-3 (>= 1.6.dfsg.2)',
  176. + 'libnspr4 (>= 2:4.9-2~)',
  177. + 'libnss3 (>= 2:3.30)',
  178. + 'libnss3 (>= 3.26)',
  179. + 'libpango-1.0-0 (>= 1.14.0)',
  180. + 'libstdc++6 (>= 4.1.1)',
  181. + 'libstdc++6 (>= 5)',
  182. + 'libstdc++6 (>= 5.2)',
  183. + 'libstdc++6 (>= 6)',
  184. + 'libx11-6',
  185. + 'libx11-6 (>= 2:1.4.99.1)',
  186. + 'libxcb1 (>= 1.9.2)',
  187. + 'libxcomposite1 (>= 1:0.4.4-1)',
  188. + 'libxdamage1 (>= 1:1.1)',
  189. + 'libxext6',
  190. + 'libxfixes3',
  191. + 'libxkbcommon0 (>= 0.5.0)',
  192. + 'libxkbfile1 (>= 1:1.1.0)',
  193. + 'libxrandr2',
  194. + 'xdg-utils (>= 1.0.2)'
  195. + ],
  196. + 'riscv64': [
  197. + 'ca-certificates',
  198. + 'libatomic1',
  199. + 'libasound2 (>= 1.0.17)',
  200. + 'libatk-bridge2.0-0 (>= 2.5.3)',
  201. + 'libatk1.0-0 (>= 2.2.0)',
  202. + 'libatspi2.0-0 (>= 2.9.90)',
  203. + 'libc6 (>= 2.17)',
  204. + 'libc6 (>= 2.28)',
  205. + 'libcairo2 (>= 1.6.0)',
  206. + 'libcurl3-gnutls | libcurl3-nss | libcurl4 | libcurl3',
  207. + 'libdbus-1-3 (>= 1.0.2)',
  208. + 'libdrm2 (>= 2.4.60)',
  209. + 'libexpat1 (>= 2.0.1)',
  210. + 'libgbm1 (>= 17.1.0~rc2)',
  211. + 'libglib2.0-0 (>= 2.16.0)',
  212. + 'libglib2.0-0 (>= 2.39.4)',
  213. + 'libgtk-3-0 (>= 3.9.10)',
  214. + 'libgtk-3-0 (>= 3.9.10) | libgtk-4-1',
  215. + 'libnspr4 (>= 2:4.9-2~)',
  216. + 'libnss3 (>= 2:3.22)',
  217. + 'libnss3 (>= 3.26)',
  218. + 'libpango-1.0-0 (>= 1.14.0)',
  219. + 'libsecret-1-0 (>= 0.18)',
  220. + 'libstdc++6 (>= 4.1.1)',
  221. + 'libstdc++6 (>= 5)',
  222. + 'libstdc++6 (>= 5.2)',
  223. + 'libstdc++6 (>= 6)',
  224. + 'libx11-6',
  225. + 'libx11-6 (>= 2:1.4.99.1)',
  226. + 'libxcb1 (>= 1.9.2)',
  227. + 'libxcomposite1 (>= 1:0.4.4-1)',
  228. + 'libxdamage1 (>= 1:1.1)',
  229. + 'libxext6',
  230. + 'libxfixes3',
  231. + 'libxkbcommon0 (>= 0.4.1)',
  232. + 'libxkbfile1',
  233. + 'libxrandr2',
  234. + 'xdg-utils (>= 1.0.2)'
  235. ]
  236. diff --git a/build/linux/debian/dep-lists.ts b/build/linux/debian/dep-lists.ts
  237. index 86d1de1..ab0e268 100644
  238. --- a/build/linux/debian/dep-lists.ts
  239. +++ b/build/linux/debian/dep-lists.ts
  240. @@ -144,2 +144,81 @@ export const referenceGeneratedDepsByArch = {
  241. 'xdg-utils (>= 1.0.2)'
  242. + ],
  243. + 'ppc64el': [
  244. + 'ca-certificates',
  245. + 'libasound2 (>= 1.0.17)',
  246. + 'libatk-bridge2.0-0 (>= 2.5.3)',
  247. + 'libatk1.0-0 (>= 2.2.0)',
  248. + 'libatspi2.0-0 (>= 2.9.90)',
  249. + 'libc6 (>= 2.17)',
  250. + 'libc6 (>= 2.28)',
  251. + 'libcairo2 (>= 1.6.0)',
  252. + 'libcurl3-gnutls | libcurl3-nss | libcurl4 | libcurl3',
  253. + 'libdbus-1-3 (>= 1.9.14)',
  254. + 'libdrm2 (>= 2.4.75)',
  255. + 'libexpat1 (>= 2.1~beta3)',
  256. + 'libgbm1 (>= 17.1.0~rc2)',
  257. + 'libglib2.0-0 (>= 2.37.3)',
  258. + 'libgssapi-krb5-2 (>= 1.17)',
  259. + 'libgtk-3-0 (>= 3.9.10)',
  260. + 'libgtk-3-0 (>= 3.9.10) | libgtk-4-1',
  261. + 'libkrb5-3 (>= 1.6.dfsg.2)',
  262. + 'libnspr4 (>= 2:4.9-2~)',
  263. + 'libnss3 (>= 2:3.30)',
  264. + 'libnss3 (>= 3.26)',
  265. + 'libpango-1.0-0 (>= 1.14.0)',
  266. + 'libstdc++6 (>= 4.1.1)',
  267. + 'libstdc++6 (>= 5)',
  268. + 'libstdc++6 (>= 5.2)',
  269. + 'libstdc++6 (>= 6)',
  270. + 'libx11-6',
  271. + 'libx11-6 (>= 2:1.4.99.1)',
  272. + 'libxcb1 (>= 1.9.2)',
  273. + 'libxcomposite1 (>= 1:0.4.4-1)',
  274. + 'libxdamage1 (>= 1:1.1)',
  275. + 'libxext6',
  276. + 'libxfixes3',
  277. + 'libxkbcommon0 (>= 0.5.0)',
  278. + 'libxkbfile1 (>= 1:1.1.0)',
  279. + 'libxrandr2',
  280. + 'xdg-utils (>= 1.0.2)'
  281. + ],
  282. + 'riscv64': [
  283. + 'ca-certificates',
  284. + 'libatomic1',
  285. + 'libasound2 (>= 1.0.17)',
  286. + 'libatk-bridge2.0-0 (>= 2.5.3)',
  287. + 'libatk1.0-0 (>= 2.2.0)',
  288. + 'libatspi2.0-0 (>= 2.9.90)',
  289. + 'libc6 (>= 2.17)',
  290. + 'libc6 (>= 2.28)',
  291. + 'libcairo2 (>= 1.6.0)',
  292. + 'libcurl3-gnutls | libcurl3-nss | libcurl4 | libcurl3',
  293. + 'libdbus-1-3 (>= 1.0.2)',
  294. + 'libdrm2 (>= 2.4.60)',
  295. + 'libexpat1 (>= 2.0.1)',
  296. + 'libgbm1 (>= 17.1.0~rc2)',
  297. + 'libglib2.0-0 (>= 2.16.0)',
  298. + 'libglib2.0-0 (>= 2.39.4)',
  299. + 'libgtk-3-0 (>= 3.9.10)',
  300. + 'libgtk-3-0 (>= 3.9.10) | libgtk-4-1',
  301. + 'libnspr4 (>= 2:4.9-2~)',
  302. + 'libnss3 (>= 2:3.22)',
  303. + 'libnss3 (>= 3.26)',
  304. + 'libpango-1.0-0 (>= 1.14.0)',
  305. + 'libsecret-1-0 (>= 0.18)',
  306. + 'libstdc++6 (>= 4.1.1)',
  307. + 'libstdc++6 (>= 5)',
  308. + 'libstdc++6 (>= 5.2)',
  309. + 'libstdc++6 (>= 6)',
  310. + 'libx11-6',
  311. + 'libx11-6 (>= 2:1.4.99.1)',
  312. + 'libxcb1 (>= 1.9.2)',
  313. + 'libxcomposite1 (>= 1:0.4.4-1)',
  314. + 'libxdamage1 (>= 1:1.1)',
  315. + 'libxext6',
  316. + 'libxfixes3',
  317. + 'libxkbcommon0 (>= 0.4.1)',
  318. + 'libxkbfile1',
  319. + 'libxrandr2',
  320. + 'xdg-utils (>= 1.0.2)'
  321. ]
  322. diff --git a/build/linux/debian/install-sysroot.js b/build/linux/debian/install-sysroot.js
  323. index feca7d3..f075ebc 100644
  324. --- a/build/linux/debian/install-sysroot.js
  325. +++ b/build/linux/debian/install-sysroot.js
  326. @@ -72,3 +72,6 @@ async function fetchUrl(options, retries = 10, retryDelay = 1000) {
  327. try {
  328. - const response = await fetch(`https://api.github.com/repos/Microsoft/vscode-linux-build-agent/releases/tags/v${version}`, {
  329. + // if VSCODE_SYSROOT_REPO and VSCODE_SYSROOT_VERSION are set, use those instead
  330. + const repo = process.env['VSCODE_SYSROOT_REPO'] ?? 'Microsoft/vscode-linux-build-agent';
  331. + const actualVersion = process.env['VSCODE_SYSROOT_VERSION'] ?? version;
  332. + const response = await fetch(`https://api.github.com/repos/${repo}/releases/tags/v${actualVersion}`, {
  333. headers: ghApiHeaders,
  334. @@ -81,3 +84,3 @@ async function fetchUrl(options, retries = 10, retryDelay = 1000) {
  335. if (!asset) {
  336. - throw new Error(`Could not find asset in release of Microsoft/vscode-linux-build-agent @ ${version}`);
  337. + throw new Error(`Could not find asset in release of ${repo} @ ${actualVersion}`);
  338. }
  339. @@ -136,2 +139,10 @@ async function getVSCodeSysroot(arch) {
  340. break;
  341. + case 'ppc64le':
  342. + expectedName = `powerpc64le-linux-gnu${prefix}.tar.gz`;
  343. + triple = `powerpc64le-linux-gnu`;
  344. + break;
  345. + case 'riscv64':
  346. + expectedName = `riscv64-linux-gnu${prefix}.tar.gz`;
  347. + triple = 'riscv64-linux-gnu';
  348. + break;
  349. }
  350. diff --git a/build/linux/debian/install-sysroot.ts b/build/linux/debian/install-sysroot.ts
  351. index aa417dc..58f0eee 100644
  352. --- a/build/linux/debian/install-sysroot.ts
  353. +++ b/build/linux/debian/install-sysroot.ts
  354. @@ -84,3 +84,6 @@ async function fetchUrl(options: IFetchOptions, retries = 10, retryDelay = 1000)
  355. try {
  356. - const response = await fetch(`https://api.github.com/repos/Microsoft/vscode-linux-build-agent/releases/tags/v${version}`, {
  357. + // if VSCODE_SYSROOT_REPO and VSCODE_SYSROOT_VERSION are set, use those instead
  358. + const repo = process.env['VSCODE_SYSROOT_REPO'] ?? 'Microsoft/vscode-linux-build-agent';
  359. + const actualVersion = process.env['VSCODE_SYSROOT_VERSION'] ?? version;
  360. + const response = await fetch(`https://api.github.com/repos/${repo}/releases/tags/v${actualVersion}`, {
  361. headers: ghApiHeaders,
  362. @@ -93,3 +96,3 @@ async function fetchUrl(options: IFetchOptions, retries = 10, retryDelay = 1000)
  363. if (!asset) {
  364. - throw new Error(`Could not find asset in release of Microsoft/vscode-linux-build-agent @ ${version}`);
  365. + throw new Error(`Could not find asset in release of ${repo} @ ${actualVersion}`);
  366. }
  367. @@ -153,2 +156,10 @@ export async function getVSCodeSysroot(arch: DebianArchString): Promise<string>
  368. break;
  369. + case 'ppc64el':
  370. + expectedName = `powerpc64le-linux-gnu${prefix}.tar.gz`;
  371. + triple = 'powerpc64le-linux-gnu'
  372. + break;
  373. + case 'riscv64':
  374. + expectedName = `riscv64-linux-gnu${prefix}.tar.gz`;
  375. + triple = 'riscv64-linux-gnu';
  376. + break;
  377. }
  378. diff --git a/build/linux/debian/types.js b/build/linux/debian/types.js
  379. index ce21d50..cadefc2 100644
  380. --- a/build/linux/debian/types.js
  381. +++ b/build/linux/debian/types.js
  382. @@ -8,3 +8,3 @@ exports.isDebianArchString = isDebianArchString;
  383. function isDebianArchString(s) {
  384. - return ['amd64', 'armhf', 'arm64'].includes(s);
  385. + return ['amd64', 'armhf', 'arm64', 'ppc64el', 'riscv64'].includes(s);
  386. }
  387. diff --git a/build/linux/debian/types.ts b/build/linux/debian/types.ts
  388. index e97485e..24fe452 100644
  389. --- a/build/linux/debian/types.ts
  390. +++ b/build/linux/debian/types.ts
  391. @@ -5,6 +5,6 @@
  392. -export type DebianArchString = 'amd64' | 'armhf' | 'arm64';
  393. +export type DebianArchString = 'amd64' | 'armhf' | 'arm64' | 'ppc64el' | 'riscv64';
  394. export function isDebianArchString(s: string): s is DebianArchString {
  395. - return ['amd64', 'armhf', 'arm64'].includes(s);
  396. + return ['amd64', 'armhf', 'arm64', 'ppc64el', 'riscv64'].includes(s);
  397. }
  398. diff --git a/build/linux/rpm/dep-lists.js b/build/linux/rpm/dep-lists.js
  399. index 9798451..bd246e7 100644
  400. --- a/build/linux/rpm/dep-lists.js
  401. +++ b/build/linux/rpm/dep-lists.js
  402. @@ -321,2 +321,102 @@ exports.referenceGeneratedDepsByArch = {
  403. 'xdg-utils'
  404. + ],
  405. + "ppc64le": [
  406. + 'ca-certificates',
  407. + 'ld-linux-x86-64.so.2()(64bit)',
  408. + 'ld-linux-x86-64.so.2(GLIBC_2.3)(64bit)',
  409. + 'ld64.so.2()(64bit)',
  410. + 'ld64.so.2(GLIBC_2.17)(64bit)',
  411. + 'libX11.so.6()(64bit)',
  412. + 'libXcomposite.so.1()(64bit)',
  413. + 'libXdamage.so.1()(64bit)',
  414. + 'libXext.so.6()(64bit)',
  415. + 'libXfixes.so.3()(64bit)',
  416. + 'libXrandr.so.2()(64bit)',
  417. + 'libasound.so.2()(64bit)',
  418. + 'libasound.so.2(ALSA_0.9)(64bit)',
  419. + 'libasound.so.2(ALSA_0.9.0rc4)(64bit)',
  420. + 'libatk-1.0.so.0()(64bit)',
  421. + 'libatk-bridge-2.0.so.0()(64bit)',
  422. + 'libatspi.so.0()(64bit)',
  423. + 'libc.so.6()(64bit)',
  424. + 'libc.so.6(GLIBC_2.14)(64bit)',
  425. + 'libc.so.6(GLIBC_2.17)(64bit)',
  426. + 'libc.so.6(GLIBC_2.2.5)(64bit)',
  427. + 'libc.so.6(GLIBC_2.28)(64bit)',
  428. + 'libc.so.6(GLIBC_2.4)(64bit)',
  429. + 'libc.so.6(GLIBC_2.9)(64bit)',
  430. + 'libcairo.so.2()(64bit)',
  431. + 'libcups.so.2()(64bit)',
  432. + 'libcurl.so.4()(64bit)',
  433. + 'libdbus-1.so.3()(64bit)',
  434. + 'libdbus-1.so.3(LIBDBUS_1_3)(64bit)',
  435. + 'libdl.so.2()(64bit)',
  436. + 'libdl.so.2(GLIBC_2.17)(64bit)',
  437. + 'libdrm.so.2()(64bit)',
  438. + 'libexpat.so.1()(64bit)',
  439. + 'libgbm.so.1()(64bit)',
  440. + 'libgcc_s.so.1()(64bit)',
  441. + 'libgcc_s.so.1(GCC_3.0)(64bit)',
  442. + 'libgcc_s.so.1(GCC_3.4.4)(64bit)',
  443. + 'libgio-2.0.so.0()(64bit)',
  444. + 'libglib-2.0.so.0()(64bit)',
  445. + 'libgobject-2.0.so.0()(64bit)',
  446. + 'libgssapi_krb5.so.2()(64bit)',
  447. + 'libgssapi_krb5.so.2(gssapi_krb5_2_MIT)(64bit)',
  448. + 'libgtk-3.so.0()(64bit)',
  449. + 'libkrb5.so.3()(64bit)',
  450. + 'libkrb5.so.3(krb5_3_MIT)(64bit)',
  451. + 'libm.so.6()(64bit)',
  452. + 'libm.so.6(GLIBC_2.17)(64bit)',
  453. + 'libm.so.6(GLIBC_2.2.5)(64bit)',
  454. + 'libm.so.6(GLIBC_2.27)(64bit)',
  455. + 'libnspr4.so()(64bit)',
  456. + 'libnss3.so()(64bit)',
  457. + 'libnss3.so(NSS_3.11)(64bit)',
  458. + 'libnss3.so(NSS_3.12)(64bit)',
  459. + 'libnss3.so(NSS_3.12.1)(64bit)',
  460. + 'libnss3.so(NSS_3.2)(64bit)',
  461. + 'libnss3.so(NSS_3.22)(64bit)',
  462. + 'libnss3.so(NSS_3.3)(64bit)',
  463. + 'libnss3.so(NSS_3.30)(64bit)',
  464. + 'libnss3.so(NSS_3.4)(64bit)',
  465. + 'libnss3.so(NSS_3.5)(64bit)',
  466. + 'libnss3.so(NSS_3.9.2)(64bit)',
  467. + 'libnssutil3.so()(64bit)',
  468. + 'libnssutil3.so(NSSUTIL_3.12.3)(64bit)',
  469. + 'libpango-1.0.so.0()(64bit)',
  470. + 'libpthread.so.0()(64bit)',
  471. + 'libpthread.so.0(GLIBC_2.17)(64bit)',
  472. + 'libpthread.so.0(GLIBC_2.2.5)(64bit)',
  473. + 'libpthread.so.0(GLIBC_2.3.2)(64bit)',
  474. + 'libpthread.so.0(GLIBC_2.3.3)(64bit)',
  475. + 'libsmime3.so()(64bit)',
  476. + 'libsmime3.so(NSS_3.10)(64bit)',
  477. + 'libsmime3.so(NSS_3.2)(64bit)',
  478. + 'libssl3.so(NSS_3.28)(64bit)',
  479. + 'libstdc++.so.6()(64bit)',
  480. + 'libstdc++.so.6(CXXABI_1.3)(64bit)',
  481. + 'libstdc++.so.6(CXXABI_1.3.5)(64bit)',
  482. + 'libstdc++.so.6(CXXABI_1.3.8)(64bit)',
  483. + 'libstdc++.so.6(CXXABI_1.3.9)(64bit)',
  484. + 'libstdc++.so.6(GLIBCXX_3.4)(64bit)',
  485. + 'libstdc++.so.6(GLIBCXX_3.4.11)(64bit)',
  486. + 'libstdc++.so.6(GLIBCXX_3.4.14)(64bit)',
  487. + 'libstdc++.so.6(GLIBCXX_3.4.15)(64bit)',
  488. + 'libstdc++.so.6(GLIBCXX_3.4.18)(64bit)',
  489. + 'libstdc++.so.6(GLIBCXX_3.4.19)(64bit)',
  490. + 'libstdc++.so.6(GLIBCXX_3.4.20)(64bit)',
  491. + 'libstdc++.so.6(GLIBCXX_3.4.21)(64bit)',
  492. + 'libstdc++.so.6(GLIBCXX_3.4.22)(64bit)',
  493. + 'libstdc++.so.6(GLIBCXX_3.4.5)(64bit)',
  494. + 'libstdc++.so.6(GLIBCXX_3.4.9)(64bit)',
  495. + 'libutil.so.1()(64bit)',
  496. + 'libutil.so.1(GLIBC_2.2.5)(64bit)',
  497. + 'libxcb.so.1()(64bit)',
  498. + 'libxkbcommon.so.0()(64bit)',
  499. + 'libxkbcommon.so.0(V_0.5.0)(64bit)',
  500. + 'libxkbfile.so.1()(64bit)',
  501. + 'rpmlib(FileDigests) <= 4.6.0-1',
  502. + 'rtld(GNU_HASH)',
  503. + 'xdg-utils'
  504. ]
  505. diff --git a/build/linux/rpm/dep-lists.ts b/build/linux/rpm/dep-lists.ts
  506. index b798127..c3f5308 100644
  507. --- a/build/linux/rpm/dep-lists.ts
  508. +++ b/build/linux/rpm/dep-lists.ts
  509. @@ -320,2 +320,102 @@ export const referenceGeneratedDepsByArch = {
  510. 'xdg-utils'
  511. + ],
  512. + "ppc64le": [
  513. + 'ca-certificates',
  514. + 'ld-linux-x86-64.so.2()(64bit)',
  515. + 'ld-linux-x86-64.so.2(GLIBC_2.3)(64bit)',
  516. + 'ld64.so.2()(64bit)',
  517. + 'ld64.so.2(GLIBC_2.17)(64bit)',
  518. + 'libX11.so.6()(64bit)',
  519. + 'libXcomposite.so.1()(64bit)',
  520. + 'libXdamage.so.1()(64bit)',
  521. + 'libXext.so.6()(64bit)',
  522. + 'libXfixes.so.3()(64bit)',
  523. + 'libXrandr.so.2()(64bit)',
  524. + 'libasound.so.2()(64bit)',
  525. + 'libasound.so.2(ALSA_0.9)(64bit)',
  526. + 'libasound.so.2(ALSA_0.9.0rc4)(64bit)',
  527. + 'libatk-1.0.so.0()(64bit)',
  528. + 'libatk-bridge-2.0.so.0()(64bit)',
  529. + 'libatspi.so.0()(64bit)',
  530. + 'libc.so.6()(64bit)',
  531. + 'libc.so.6(GLIBC_2.14)(64bit)',
  532. + 'libc.so.6(GLIBC_2.17)(64bit)',
  533. + 'libc.so.6(GLIBC_2.2.5)(64bit)',
  534. + 'libc.so.6(GLIBC_2.28)(64bit)',
  535. + 'libc.so.6(GLIBC_2.4)(64bit)',
  536. + 'libc.so.6(GLIBC_2.9)(64bit)',
  537. + 'libcairo.so.2()(64bit)',
  538. + 'libcups.so.2()(64bit)',
  539. + 'libcurl.so.4()(64bit)',
  540. + 'libdbus-1.so.3()(64bit)',
  541. + 'libdbus-1.so.3(LIBDBUS_1_3)(64bit)',
  542. + 'libdl.so.2()(64bit)',
  543. + 'libdl.so.2(GLIBC_2.17)(64bit)',
  544. + 'libdrm.so.2()(64bit)',
  545. + 'libexpat.so.1()(64bit)',
  546. + 'libgbm.so.1()(64bit)',
  547. + 'libgcc_s.so.1()(64bit)',
  548. + 'libgcc_s.so.1(GCC_3.0)(64bit)',
  549. + 'libgcc_s.so.1(GCC_3.4.4)(64bit)',
  550. + 'libgio-2.0.so.0()(64bit)',
  551. + 'libglib-2.0.so.0()(64bit)',
  552. + 'libgobject-2.0.so.0()(64bit)',
  553. + 'libgssapi_krb5.so.2()(64bit)',
  554. + 'libgssapi_krb5.so.2(gssapi_krb5_2_MIT)(64bit)',
  555. + 'libgtk-3.so.0()(64bit)',
  556. + 'libkrb5.so.3()(64bit)',
  557. + 'libkrb5.so.3(krb5_3_MIT)(64bit)',
  558. + 'libm.so.6()(64bit)',
  559. + 'libm.so.6(GLIBC_2.17)(64bit)',
  560. + 'libm.so.6(GLIBC_2.2.5)(64bit)',
  561. + 'libm.so.6(GLIBC_2.27)(64bit)',
  562. + 'libnspr4.so()(64bit)',
  563. + 'libnss3.so()(64bit)',
  564. + 'libnss3.so(NSS_3.11)(64bit)',
  565. + 'libnss3.so(NSS_3.12)(64bit)',
  566. + 'libnss3.so(NSS_3.12.1)(64bit)',
  567. + 'libnss3.so(NSS_3.2)(64bit)',
  568. + 'libnss3.so(NSS_3.22)(64bit)',
  569. + 'libnss3.so(NSS_3.3)(64bit)',
  570. + 'libnss3.so(NSS_3.30)(64bit)',
  571. + 'libnss3.so(NSS_3.4)(64bit)',
  572. + 'libnss3.so(NSS_3.5)(64bit)',
  573. + 'libnss3.so(NSS_3.9.2)(64bit)',
  574. + 'libnssutil3.so()(64bit)',
  575. + 'libnssutil3.so(NSSUTIL_3.12.3)(64bit)',
  576. + 'libpango-1.0.so.0()(64bit)',
  577. + 'libpthread.so.0()(64bit)',
  578. + 'libpthread.so.0(GLIBC_2.17)(64bit)',
  579. + 'libpthread.so.0(GLIBC_2.2.5)(64bit)',
  580. + 'libpthread.so.0(GLIBC_2.3.2)(64bit)',
  581. + 'libpthread.so.0(GLIBC_2.3.3)(64bit)',
  582. + 'libsmime3.so()(64bit)',
  583. + 'libsmime3.so(NSS_3.10)(64bit)',
  584. + 'libsmime3.so(NSS_3.2)(64bit)',
  585. + 'libssl3.so(NSS_3.28)(64bit)',
  586. + 'libstdc++.so.6()(64bit)',
  587. + 'libstdc++.so.6(CXXABI_1.3)(64bit)',
  588. + 'libstdc++.so.6(CXXABI_1.3.5)(64bit)',
  589. + 'libstdc++.so.6(CXXABI_1.3.8)(64bit)',
  590. + 'libstdc++.so.6(CXXABI_1.3.9)(64bit)',
  591. + 'libstdc++.so.6(GLIBCXX_3.4)(64bit)',
  592. + 'libstdc++.so.6(GLIBCXX_3.4.11)(64bit)',
  593. + 'libstdc++.so.6(GLIBCXX_3.4.14)(64bit)',
  594. + 'libstdc++.so.6(GLIBCXX_3.4.15)(64bit)',
  595. + 'libstdc++.so.6(GLIBCXX_3.4.18)(64bit)',
  596. + 'libstdc++.so.6(GLIBCXX_3.4.19)(64bit)',
  597. + 'libstdc++.so.6(GLIBCXX_3.4.20)(64bit)',
  598. + 'libstdc++.so.6(GLIBCXX_3.4.21)(64bit)',
  599. + 'libstdc++.so.6(GLIBCXX_3.4.22)(64bit)',
  600. + 'libstdc++.so.6(GLIBCXX_3.4.5)(64bit)',
  601. + 'libstdc++.so.6(GLIBCXX_3.4.9)(64bit)',
  602. + 'libutil.so.1()(64bit)',
  603. + 'libutil.so.1(GLIBC_2.2.5)(64bit)',
  604. + 'libxcb.so.1()(64bit)',
  605. + 'libxkbcommon.so.0()(64bit)',
  606. + 'libxkbcommon.so.0(V_0.5.0)(64bit)',
  607. + 'libxkbfile.so.1()(64bit)',
  608. + 'rpmlib(FileDigests) <= 4.6.0-1',
  609. + 'rtld(GNU_HASH)',
  610. + 'xdg-utils'
  611. ]
  612. diff --git a/build/linux/rpm/types.js b/build/linux/rpm/types.js
  613. index a20b9c2..99a8cff 100644
  614. --- a/build/linux/rpm/types.js
  615. +++ b/build/linux/rpm/types.js
  616. @@ -8,3 +8,3 @@ exports.isRpmArchString = isRpmArchString;
  617. function isRpmArchString(s) {
  618. - return ['x86_64', 'armv7hl', 'aarch64'].includes(s);
  619. + return ['x86_64', 'armv7hl', 'aarch64', 'ppc64le', 'riscv64'].includes(s);
  620. }
  621. diff --git a/build/linux/rpm/types.ts b/build/linux/rpm/types.ts
  622. index c6a01da..d94537e 100644
  623. --- a/build/linux/rpm/types.ts
  624. +++ b/build/linux/rpm/types.ts
  625. @@ -5,6 +5,6 @@
  626. -export type RpmArchString = 'x86_64' | 'armv7hl' | 'aarch64';
  627. +export type RpmArchString = 'x86_64' | 'armv7hl' | 'aarch64' | 'ppc64le' | 'riscv64';
  628. export function isRpmArchString(s: string): s is RpmArchString {
  629. - return ['x86_64', 'armv7hl', 'aarch64'].includes(s);
  630. + return ['x86_64', 'armv7hl', 'aarch64', 'ppc64le', 'riscv64'].includes(s);
  631. }
  632. diff --git a/cli/src/update_service.rs b/cli/src/update_service.rs
  633. index 4bec13d..3debda1 100644
  634. --- a/cli/src/update_service.rs
  635. +++ b/cli/src/update_service.rs
  636. @@ -216,2 +216,5 @@ pub enum Platform {
  637. LinuxARM32Legacy,
  638. + LinuxPPC64LE,
  639. + LinuxPPC64LELegacy,
  640. + LinuxRISCV64,
  641. DarwinX64,
  642. @@ -229,2 +232,4 @@ impl Platform {
  643. Platform::LinuxARM32 => Some("linux-armhf".to_owned()),
  644. + Platform::LinuxPPC64LE => Some("linux-ppc64le".to_owned()),
  645. + Platform::LinuxRISCV64 => Some("linux-riscv64".to_owned()),
  646. Platform::DarwinX64 => Some("darwin".to_owned()),
  647. @@ -247,2 +252,5 @@ impl Platform {
  648. Platform::LinuxARM32Legacy => "server-linux-legacy-armhf",
  649. + Platform::LinuxPPC64LE => "server-linux-ppc64le",
  650. + Platform::LinuxPPC64LELegacy => "server-linux-legacy-ppc64le",
  651. + Platform::LinuxRISCV64 => "server-linux-riscv64",
  652. Platform::DarwinX64 => "server-darwin",
  653. @@ -266,2 +274,5 @@ impl Platform {
  654. Platform::LinuxARM32Legacy => "cli-linux-armhf",
  655. + Platform::LinuxPPC64LE => "cli-linux-ppc64le",
  656. + Platform::LinuxPPC64LELegacy => "cli-linux-ppc64le",
  657. + Platform::LinuxRISCV64 => "cli-linux-riscv64",
  658. Platform::DarwinX64 => "cli-darwin-x64",
  659. @@ -298,2 +309,6 @@ impl Platform {
  660. Some(Platform::LinuxARM64)
  661. + } else if cfg!(all(target_os = "linux", target_arch = "ppc64le")) {
  662. + Some(Platform::LinuxPPC64LE)
  663. + } else if cfg!(all(target_os = "linux", target_arch = "riscv64")) {
  664. + Some(Platform::LinuxRISCV64)
  665. } else if cfg!(all(target_os = "macos", target_arch = "x86_64")) {
  666. @@ -325,2 +340,5 @@ impl fmt::Display for Platform {
  667. Platform::LinuxARM32Legacy => "LinuxARM32Legacy",
  668. + Platform::LinuxPPC64LE => "LinuxPPC64LE",
  669. + Platform::LinuxPPC64LELegacy => "LinuxPPC64LELegacy",
  670. + Platform::LinuxRISCV64 => "LinuxRISCV64",
  671. Platform::DarwinX64 => "DarwinX64",
  672. diff --git a/cli/src/util/prereqs.rs b/cli/src/util/prereqs.rs
  673. index 0f49ab2..d873a49 100644
  674. --- a/cli/src/util/prereqs.rs
  675. +++ b/cli/src/util/prereqs.rs
  676. @@ -86,2 +86,6 @@ impl PreReqChecker {
  677. Platform::LinuxARM32
  678. + } else if cfg!(target_arch = "ppc64le") {
  679. + Platform::LinuxPPC64LE
  680. + } else if cfg!(target_arch = "riscv64") {
  681. + Platform::LinuxRISCV64
  682. } else {
  683. @@ -95,2 +99,4 @@ impl PreReqChecker {
  684. Platform::LinuxARM32Legacy
  685. + } else if cfg!(target_arch = "ppc64le") {
  686. + Platform::LinuxPPC64LELegacy
  687. } else {
  688. diff --git a/resources/server/bin/helpers/check-requirements-linux.sh b/resources/server/bin/helpers/check-requirements-linux.sh
  689. index 31a618f..dc457e0 100644
  690. --- a/resources/server/bin/helpers/check-requirements-linux.sh
  691. +++ b/resources/server/bin/helpers/check-requirements-linux.sh
  692. @@ -56,2 +56,4 @@ case $ARCH in
  693. ;;
  694. + ppc64el) LDCONFIG_ARCH="64bit";;
  695. + riscv64) LDCONFIG_ARCH="RISC-V";;
  696. esac
  697. diff --git a/src/vs/platform/extensionManagement/common/extensionManagement.ts b/src/vs/platform/extensionManagement/common/extensionManagement.ts
  698. index 1dcc4c7..54a7f36 100644
  699. --- a/src/vs/platform/extensionManagement/common/extensionManagement.ts
  700. +++ b/src/vs/platform/extensionManagement/common/extensionManagement.ts
  701. @@ -41,2 +41,4 @@ export function TargetPlatformToString(targetPlatform: TargetPlatform) {
  702. case TargetPlatform.LINUX_ARMHF: return 'Linux ARM';
  703. + case TargetPlatform.LINUX_PPC64LE: return 'Linux PowerPC64';
  704. + case TargetPlatform.LINUX_RISCV64: return 'Linux RISC-V 64';
  705. @@ -64,2 +66,4 @@ export function toTargetPlatform(targetPlatform: string): TargetPlatform {
  706. case TargetPlatform.LINUX_ARMHF: return TargetPlatform.LINUX_ARMHF;
  707. + case TargetPlatform.LINUX_PPC64LE: return TargetPlatform.LINUX_PPC64LE;
  708. + case TargetPlatform.LINUX_RISCV64: return TargetPlatform.LINUX_RISCV64;
  709. @@ -99,2 +103,8 @@ export function getTargetPlatform(platform: Platform | 'alpine', arch: string |
  710. }
  711. + if (arch === 'ppc64le') {
  712. + return TargetPlatform.LINUX_PPC64LE;
  713. + }
  714. + if (arch === 'riscv64') {
  715. + return TargetPlatform.LINUX_RISCV64;
  716. + }
  717. return TargetPlatform.UNKNOWN;
  718. diff --git a/src/vs/platform/extensions/common/extensions.ts b/src/vs/platform/extensions/common/extensions.ts
  719. index 822260b..fc11650 100644
  720. --- a/src/vs/platform/extensions/common/extensions.ts
  721. +++ b/src/vs/platform/extensions/common/extensions.ts
  722. @@ -294,2 +294,4 @@ export const enum TargetPlatform {
  723. LINUX_ARMHF = 'linux-armhf',
  724. + LINUX_PPC64LE = 'linux-ppc64le',
  725. + LINUX_RISCV64 = 'linux-riscv64',