prepare_vscode.sh 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271
  1. #!/usr/bin/env bash
  2. # shellcheck disable=SC1091,2154
  3. set -e
  4. # include common functions
  5. . ./utils.sh
  6. if [[ "${VSCODE_QUALITY}" == "insider" ]]; then
  7. cp -rp src/insider/* vscode/
  8. else
  9. cp -rp src/stable/* vscode/
  10. fi
  11. cp -f LICENSE vscode/LICENSE.txt
  12. cd vscode || { echo "'vscode' dir not found"; exit 1; }
  13. # apply patches
  14. { set +x; } 2>/dev/null
  15. echo "APP_NAME=\"${APP_NAME}\""
  16. echo "APP_NAME_LC=\"${APP_NAME_LC}\""
  17. echo "BINARY_NAME=\"${BINARY_NAME}\""
  18. echo "GH_REPO_PATH=\"${GH_REPO_PATH}\""
  19. echo "ORG_NAME=\"${ORG_NAME}\""
  20. for file in ../patches/*.patch; do
  21. if [[ -f "${file}" ]]; then
  22. apply_patch "${file}"
  23. fi
  24. done
  25. if [[ "${VSCODE_QUALITY}" == "insider" ]]; then
  26. for file in ../patches/insider/*.patch; do
  27. if [[ -f "${file}" ]]; then
  28. apply_patch "${file}"
  29. fi
  30. done
  31. fi
  32. if [[ -d "../patches/${OS_NAME}/" ]]; then
  33. for file in "../patches/${OS_NAME}/"*.patch; do
  34. if [[ -f "${file}" ]]; then
  35. apply_patch "${file}"
  36. fi
  37. done
  38. fi
  39. for file in ../patches/user/*.patch; do
  40. if [[ -f "${file}" ]]; then
  41. apply_patch "${file}"
  42. fi
  43. done
  44. set -x
  45. export ELECTRON_SKIP_BINARY_DOWNLOAD=1
  46. export PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1
  47. if [[ "${OS_NAME}" == "linux" ]]; then
  48. export VSCODE_SKIP_NODE_VERSION_CHECK=1
  49. if [[ "${npm_config_arch}" == "arm" ]]; then
  50. export npm_config_arm_version=7
  51. fi
  52. elif [[ "${OS_NAME}" == "windows" ]]; then
  53. if [[ "${npm_config_arch}" == "arm" ]]; then
  54. export npm_config_arm_version=7
  55. fi
  56. else
  57. if [[ "${CI_BUILD}" != "no" ]]; then
  58. clang++ --version
  59. fi
  60. fi
  61. mv .npmrc .npmrc.bak
  62. cp ../npmrc .npmrc
  63. for i in {1..5}; do # try 5 times
  64. if [[ "${CI_BUILD}" != "no" && "${OS_NAME}" == "osx" ]]; then
  65. CXX=clang++ npm ci && break
  66. else
  67. npm ci && break
  68. fi
  69. if [[ $i == 5 ]]; then
  70. echo "Npm install failed too many times" >&2
  71. exit 1
  72. fi
  73. echo "Npm install failed $i, trying again..."
  74. sleep $(( 15 * (i + 1)))
  75. done
  76. mv .npmrc.bak .npmrc
  77. setpath() {
  78. local jsonTmp
  79. { set +x; } 2>/dev/null
  80. jsonTmp=$( jq --arg 'value' "${3}" "setpath(path(.${2}); \$value)" "${1}.json" )
  81. echo "${jsonTmp}" > "${1}.json"
  82. set -x
  83. }
  84. setpath_json() {
  85. local jsonTmp
  86. { set +x; } 2>/dev/null
  87. jsonTmp=$( jq --argjson 'value' "${3}" "setpath(path(.${2}); \$value)" "${1}.json" )
  88. echo "${jsonTmp}" > "${1}.json"
  89. set -x
  90. }
  91. # product.json
  92. cp product.json{,.bak}
  93. setpath "product" "checksumFailMoreInfoUrl" "https://go.microsoft.com/fwlink/?LinkId=828886"
  94. setpath "product" "documentationUrl" "https://go.microsoft.com/fwlink/?LinkID=533484#vscode"
  95. setpath_json "product" "extensionsGallery" '{"serviceUrl": "https://open-vsx.org/vscode/gallery", "itemUrl": "https://open-vsx.org/vscode/item", "latestUrlTemplate": "https://open-vsx.org/vscode/gallery/{publisher}/{name}/latest", "controlUrl": "https://raw.githubusercontent.com/EclipseFdn/publish-extensions/refs/heads/master/extension-control/extensions.json"}'
  96. setpath "product" "introductoryVideosUrl" "https://go.microsoft.com/fwlink/?linkid=832146"
  97. setpath "product" "keyboardShortcutsUrlLinux" "https://go.microsoft.com/fwlink/?linkid=832144"
  98. setpath "product" "keyboardShortcutsUrlMac" "https://go.microsoft.com/fwlink/?linkid=832143"
  99. setpath "product" "keyboardShortcutsUrlWin" "https://go.microsoft.com/fwlink/?linkid=832145"
  100. setpath "product" "licenseUrl" "https://github.com/VSCodium/vscodium/blob/master/LICENSE"
  101. setpath_json "product" "linkProtectionTrustedDomains" '["https://open-vsx.org"]'
  102. setpath "product" "releaseNotesUrl" "https://go.microsoft.com/fwlink/?LinkID=533483#vscode"
  103. setpath "product" "reportIssueUrl" "https://github.com/VSCodium/vscodium/issues/new"
  104. setpath "product" "requestFeatureUrl" "https://go.microsoft.com/fwlink/?LinkID=533482"
  105. setpath "product" "tipsAndTricksUrl" "https://go.microsoft.com/fwlink/?linkid=852118"
  106. setpath "product" "twitterUrl" "https://go.microsoft.com/fwlink/?LinkID=533687"
  107. if [[ "${DISABLE_UPDATE}" != "yes" ]]; then
  108. setpath "product" "updateUrl" "https://raw.githubusercontent.com/VSCodium/versions/refs/heads/master"
  109. if [[ "${VSCODE_QUALITY}" == "insider" ]]; then
  110. setpath "product" "downloadUrl" "https://github.com/VSCodium/vscodium-insiders/releases"
  111. else
  112. setpath "product" "downloadUrl" "https://github.com/VSCodium/vscodium/releases"
  113. fi
  114. fi
  115. if [[ "${VSCODE_QUALITY}" == "insider" ]]; then
  116. setpath "product" "nameShort" "VSCodium - Insiders"
  117. setpath "product" "nameLong" "VSCodium - Insiders"
  118. setpath "product" "applicationName" "codium-insiders"
  119. setpath "product" "dataFolderName" ".vscodium-insiders"
  120. setpath "product" "linuxIconName" "vscodium-insiders"
  121. setpath "product" "quality" "insider"
  122. setpath "product" "urlProtocol" "vscodium-insiders"
  123. setpath "product" "serverApplicationName" "codium-server-insiders"
  124. setpath "product" "serverDataFolderName" ".vscodium-server-insiders"
  125. setpath "product" "darwinBundleIdentifier" "com.vscodium.VSCodiumInsiders"
  126. setpath "product" "win32AppUserModelId" "VSCodium.VSCodiumInsiders"
  127. setpath "product" "win32DirName" "VSCodium Insiders"
  128. setpath "product" "win32MutexName" "vscodiuminsiders"
  129. setpath "product" "win32NameVersion" "VSCodium Insiders"
  130. setpath "product" "win32RegValueName" "VSCodiumInsiders"
  131. setpath "product" "win32ShellNameShort" "VSCodium Insiders"
  132. setpath "product" "win32AppId" "{{EF35BB36-FA7E-4BB9-B7DA-D1E09F2DA9C9}"
  133. setpath "product" "win32x64AppId" "{{B2E0DDB2-120E-4D34-9F7E-8C688FF839A2}"
  134. setpath "product" "win32arm64AppId" "{{44721278-64C6-4513-BC45-D48E07830599}"
  135. setpath "product" "win32UserAppId" "{{ED2E5618-3E7E-4888-BF3C-A6CCC84F586F}"
  136. setpath "product" "win32x64UserAppId" "{{20F79D0D-A9AC-4220-9A81-CE675FFB6B41}"
  137. setpath "product" "win32arm64UserAppId" "{{2E362F92-14EA-455A-9ABD-3E656BBBFE71}"
  138. setpath "product" "tunnelApplicationName" "codium-tunnel-insiders"
  139. setpath "product" "win32TunnelServiceMutex" "vscodiuminsiders-tunnelservice"
  140. setpath "product" "win32TunnelMutex" "vscodiuminsiders-tunnel"
  141. setpath "product" "win32ContextMenu.x64.clsid" "90AAD229-85FD-43A3-B82D-8598A88829CF"
  142. setpath "product" "win32ContextMenu.arm64.clsid" "7544C31C-BDBF-4DDF-B15E-F73A46D6723D"
  143. else
  144. setpath "product" "nameShort" "VSCodium"
  145. setpath "product" "nameLong" "VSCodium"
  146. setpath "product" "applicationName" "codium"
  147. setpath "product" "linuxIconName" "vscodium"
  148. setpath "product" "quality" "stable"
  149. setpath "product" "urlProtocol" "vscodium"
  150. setpath "product" "serverApplicationName" "codium-server"
  151. setpath "product" "serverDataFolderName" ".vscodium-server"
  152. setpath "product" "darwinBundleIdentifier" "com.vscodium"
  153. setpath "product" "win32AppUserModelId" "VSCodium.VSCodium"
  154. setpath "product" "win32DirName" "VSCodium"
  155. setpath "product" "win32MutexName" "vscodium"
  156. setpath "product" "win32NameVersion" "VSCodium"
  157. setpath "product" "win32RegValueName" "VSCodium"
  158. setpath "product" "win32ShellNameShort" "VSCodium"
  159. setpath "product" "win32AppId" "{{763CBF88-25C6-4B10-952F-326AE657F16B}"
  160. setpath "product" "win32x64AppId" "{{88DA3577-054F-4CA1-8122-7D820494CFFB}"
  161. setpath "product" "win32arm64AppId" "{{67DEE444-3D04-4258-B92A-BC1F0FF2CAE4}"
  162. setpath "product" "win32UserAppId" "{{0FD05EB4-651E-4E78-A062-515204B47A3A}"
  163. setpath "product" "win32x64UserAppId" "{{2E1F05D1-C245-4562-81EE-28188DB6FD17}"
  164. setpath "product" "win32arm64UserAppId" "{{57FD70A5-1B8D-4875-9F40-C5553F094828}"
  165. setpath "product" "tunnelApplicationName" "codium-tunnel"
  166. setpath "product" "win32TunnelServiceMutex" "vscodium-tunnelservice"
  167. setpath "product" "win32TunnelMutex" "vscodium-tunnel"
  168. setpath "product" "win32ContextMenu.x64.clsid" "D910D5E6-B277-4F4A-BDC5-759A34EEE25D"
  169. setpath "product" "win32ContextMenu.arm64.clsid" "4852FC55-4A84-4EA1-9C86-D53BE3DF83C0"
  170. fi
  171. jsonTmp=$( jq -s '.[0] * .[1]' product.json ../product.json )
  172. echo "${jsonTmp}" > product.json && unset jsonTmp
  173. cat product.json
  174. # package.json
  175. cp package.json{,.bak}
  176. setpath "package" "version" "${RELEASE_VERSION%-insider}"
  177. replace 's|Microsoft Corporation|VSCodium|' package.json
  178. cp resources/server/manifest.json{,.bak}
  179. if [[ "${VSCODE_QUALITY}" == "insider" ]]; then
  180. setpath "resources/server/manifest" "name" "VSCodium - Insiders"
  181. setpath "resources/server/manifest" "short_name" "VSCodium - Insiders"
  182. else
  183. setpath "resources/server/manifest" "name" "VSCodium"
  184. setpath "resources/server/manifest" "short_name" "VSCodium"
  185. fi
  186. # announcements
  187. replace "s|\\[\\/\\* BUILTIN_ANNOUNCEMENTS \\*\\/\\]|$( tr -d '\n' < ../announcements-builtin.json )|" src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStarted.ts
  188. ../undo_telemetry.sh
  189. replace 's|Microsoft Corporation|VSCodium|' build/lib/electron.js
  190. replace 's|Microsoft Corporation|VSCodium|' build/lib/electron.ts
  191. replace 's|([0-9]) Microsoft|\1 VSCodium|' build/lib/electron.js
  192. replace 's|([0-9]) Microsoft|\1 VSCodium|' build/lib/electron.ts
  193. if [[ "${OS_NAME}" == "linux" ]]; then
  194. # microsoft adds their apt repo to sources
  195. # unless the app name is code-oss
  196. # as we are renaming the application to vscodium
  197. # we need to edit a line in the post install template
  198. if [[ "${VSCODE_QUALITY}" == "insider" ]]; then
  199. sed -i "s/code-oss/codium-insiders/" resources/linux/debian/postinst.template
  200. else
  201. sed -i "s/code-oss/codium/" resources/linux/debian/postinst.template
  202. fi
  203. # fix the packages metadata
  204. # code.appdata.xml
  205. sed -i 's|Visual Studio Code|VSCodium|g' resources/linux/code.appdata.xml
  206. sed -i 's|https://code.visualstudio.com/docs/setup/linux|https://github.com/VSCodium/vscodium#download-install|' resources/linux/code.appdata.xml
  207. sed -i 's|https://code.visualstudio.com/home/home-screenshot-linux-lg.png|https://vscodium.com/img/vscodium.png|' resources/linux/code.appdata.xml
  208. sed -i 's|https://code.visualstudio.com|https://vscodium.com|' resources/linux/code.appdata.xml
  209. # control.template
  210. sed -i 's|Microsoft Corporation <vscode-linux@microsoft.com>|VSCodium Team https://github.com/VSCodium/vscodium/graphs/contributors|' resources/linux/debian/control.template
  211. sed -i 's|Visual Studio Code|VSCodium|g' resources/linux/debian/control.template
  212. sed -i 's|https://code.visualstudio.com/docs/setup/linux|https://github.com/VSCodium/vscodium#download-install|' resources/linux/debian/control.template
  213. sed -i 's|https://code.visualstudio.com|https://vscodium.com|' resources/linux/debian/control.template
  214. # code.spec.template
  215. sed -i 's|Microsoft Corporation|VSCodium Team|' resources/linux/rpm/code.spec.template
  216. sed -i 's|Visual Studio Code Team <vscode-linux@microsoft.com>|VSCodium Team https://github.com/VSCodium/vscodium/graphs/contributors|' resources/linux/rpm/code.spec.template
  217. sed -i 's|Visual Studio Code|VSCodium|' resources/linux/rpm/code.spec.template
  218. sed -i 's|https://code.visualstudio.com/docs/setup/linux|https://github.com/VSCodium/vscodium#download-install|' resources/linux/rpm/code.spec.template
  219. sed -i 's|https://code.visualstudio.com|https://vscodium.com|' resources/linux/rpm/code.spec.template
  220. # snapcraft.yaml
  221. sed -i 's|Visual Studio Code|VSCodium|' resources/linux/rpm/code.spec.template
  222. elif [[ "${OS_NAME}" == "windows" ]]; then
  223. # code.iss
  224. sed -i 's|https://code.visualstudio.com|https://vscodium.com|' build/win32/code.iss
  225. sed -i 's|Microsoft Corporation|VSCodium|' build/win32/code.iss
  226. fi
  227. cd ..