prepare_vscode.sh 11 KB

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