prepare_vscode.sh 11 KB

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