prepare_vscode.sh 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245
  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. for file in ../patches/*.patch; do
  17. if [[ -f "${file}" ]]; then
  18. echo applying patch: "${file}";
  19. if ! git apply --ignore-whitespace "${file}"; then
  20. echo failed to apply patch "${file}" >&2
  21. exit 1
  22. fi
  23. fi
  24. done
  25. if [[ "${VSCODE_QUALITY}" == "insider" ]]; then
  26. for file in ../patches/insider/*.patch; do
  27. if [[ -f "${file}" ]]; then
  28. echo applying patch: "${file}";
  29. if ! git apply --ignore-whitespace "${file}"; then
  30. echo failed to apply patch "${file}" >&2
  31. exit 1
  32. fi
  33. fi
  34. done
  35. fi
  36. for file in ../patches/user/*.patch; do
  37. if [[ -f "${file}" ]]; then
  38. echo applying user patch: "${file}";
  39. if ! git apply --ignore-whitespace "${file}"; then
  40. echo failed to apply patch "${file}" >&2
  41. exit 1
  42. fi
  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. fi
  51. if [[ "${OS_NAME}" == "osx" ]]; then
  52. CHILD_CONCURRENCY=1 yarn --frozen-lockfile --network-timeout 180000
  53. yarn postinstall
  54. else
  55. if [[ "${OS_NAME}" == "windows" ]]; then
  56. # TODO: Should be replaced with upstream URL once https://github.com/nodejs/node-gyp/pull/2825
  57. # gets merged.
  58. rm -rf .build/node-gyp
  59. mkdir -p .build/node-gyp
  60. cd .build/node-gyp
  61. git config --global user.email "$( echo "${GITHUB_USERNAME}" | awk '{print tolower($0)}' )-ci@not-real.com"
  62. git config --global user.name "${GITHUB_USERNAME} CI"
  63. git clone https://github.com/nodejs/node-gyp.git .
  64. git checkout v9.4.0
  65. git am --3way --whitespace=fix ../../build/npm/gyp/patches/gyp_spectre_mitigation_support.patch
  66. npm install
  67. npm_config_node_gyp="$( pwd )/bin/node-gyp.js"
  68. export npm_config_node_gyp
  69. cd ../..
  70. fi
  71. if [[ "${npm_config_arch}" == "arm" ]]; then
  72. export npm_config_arm_version=7
  73. fi
  74. CHILD_CONCURRENCY=1 yarn --frozen-lockfile --check-files --network-timeout 180000
  75. fi
  76. setpath() {
  77. local jsonTmp
  78. { set +x; } 2>/dev/null
  79. jsonTmp=$( jq --arg 'path' "${2}" --arg 'value' "${3}" 'setpath([$path]; $value)' "${1}.json" )
  80. echo "${jsonTmp}" > "${1}.json"
  81. set -x
  82. }
  83. setpath_json() {
  84. local jsonTmp
  85. { set +x; } 2>/dev/null
  86. jsonTmp=$( jq --arg 'path' "${2}" --argjson 'value' "${3}" 'setpath([$path]; $value)' "${1}.json" )
  87. echo "${jsonTmp}" > "${1}.json"
  88. set -x
  89. }
  90. # product.json
  91. cp product.json{,.bak}
  92. setpath "product" "checksumFailMoreInfoUrl" "https://go.microsoft.com/fwlink/?LinkId=828886"
  93. setpath "product" "documentationUrl" "https://go.microsoft.com/fwlink/?LinkID=533484#vscode"
  94. setpath_json "product" "extensionsGallery" '{"serviceUrl": "https://open-vsx.org/vscode/gallery", "itemUrl": "https://open-vsx.org/vscode/item"}'
  95. setpath "product" "introductoryVideosUrl" "https://go.microsoft.com/fwlink/?linkid=832146"
  96. setpath "product" "keyboardShortcutsUrlLinux" "https://go.microsoft.com/fwlink/?linkid=832144"
  97. setpath "product" "keyboardShortcutsUrlMac" "https://go.microsoft.com/fwlink/?linkid=832143"
  98. setpath "product" "keyboardShortcutsUrlWin" "https://go.microsoft.com/fwlink/?linkid=832145"
  99. setpath "product" "licenseUrl" "https://github.com/VSCodium/vscodium/blob/master/LICENSE"
  100. setpath_json "product" "linkProtectionTrustedDomains" '["https://open-vsx.org"]'
  101. setpath "product" "releaseNotesUrl" "https://go.microsoft.com/fwlink/?LinkID=533483#vscode"
  102. setpath "product" "reportIssueUrl" "https://github.com/VSCodium/vscodium/issues/new"
  103. setpath "product" "requestFeatureUrl" "https://go.microsoft.com/fwlink/?LinkID=533482"
  104. setpath "product" "tipsAndTricksUrl" "https://go.microsoft.com/fwlink/?linkid=852118"
  105. setpath "product" "twitterUrl" "https://go.microsoft.com/fwlink/?LinkID=533687"
  106. if [[ "${DISABLE_UPDATE}" != "yes" ]]; then
  107. setpath "product" "updateUrl" "https://vscodium.now.sh"
  108. setpath "product" "downloadUrl" "https://github.com/VSCodium/vscodium/releases"
  109. fi
  110. if [[ "${VSCODE_QUALITY}" == "insider" ]]; then
  111. setpath "product" "nameShort" "VSCodium - Insiders"
  112. setpath "product" "nameLong" "VSCodium - Insiders"
  113. setpath "product" "applicationName" "codium-insiders"
  114. setpath "product" "dataFolderName" ".vscodium-insiders"
  115. setpath "product" "linuxIconName" "vscodium-insiders"
  116. setpath "product" "quality" "insider"
  117. setpath "product" "urlProtocol" "vscodium-insiders"
  118. setpath "product" "serverApplicationName" "codium-server-insiders"
  119. setpath "product" "serverDataFolderName" ".vscodium-server-insiders"
  120. setpath "product" "darwinBundleIdentifier" "com.vscodium.VSCodiumInsiders"
  121. setpath "product" "win32AppUserModelId" "VSCodium.VSCodiumInsiders"
  122. setpath "product" "win32DirName" "VSCodium Insiders"
  123. setpath "product" "win32MutexName" "vscodiuminsiders"
  124. setpath "product" "win32NameVersion" "VSCodium Insiders"
  125. setpath "product" "win32RegValueName" "VSCodiumInsiders"
  126. setpath "product" "win32ShellNameShort" "VSCodium Insiders"
  127. setpath "product" "win32AppId" "{{EF35BB36-FA7E-4BB9-B7DA-D1E09F2DA9C9}"
  128. setpath "product" "win32x64AppId" "{{B2E0DDB2-120E-4D34-9F7E-8C688FF839A2}"
  129. setpath "product" "win32arm64AppId" "{{44721278-64C6-4513-BC45-D48E07830599}"
  130. setpath "product" "win32UserAppId" "{{ED2E5618-3E7E-4888-BF3C-A6CCC84F586F}"
  131. setpath "product" "win32x64UserAppId" "{{20F79D0D-A9AC-4220-9A81-CE675FFB6B41}"
  132. setpath "product" "win32arm64UserAppId" "{{2E362F92-14EA-455A-9ABD-3E656BBBFE71}"
  133. else
  134. setpath "product" "nameShort" "VSCodium"
  135. setpath "product" "nameLong" "VSCodium"
  136. setpath "product" "applicationName" "codium"
  137. setpath "product" "linuxIconName" "vscodium"
  138. setpath "product" "quality" "stable"
  139. setpath "product" "urlProtocol" "vscodium"
  140. setpath "product" "serverApplicationName" "codium-server"
  141. setpath "product" "serverDataFolderName" ".vscodium-server"
  142. setpath "product" "darwinBundleIdentifier" "com.vscodium"
  143. setpath "product" "win32AppUserModelId" "VSCodium.VSCodium"
  144. setpath "product" "win32DirName" "VSCodium"
  145. setpath "product" "win32MutexName" "vscodium"
  146. setpath "product" "win32NameVersion" "VSCodium"
  147. setpath "product" "win32RegValueName" "VSCodium"
  148. setpath "product" "win32ShellNameShort" "VSCodium"
  149. setpath "product" "win32AppId" "{{763CBF88-25C6-4B10-952F-326AE657F16B}"
  150. setpath "product" "win32x64AppId" "{{88DA3577-054F-4CA1-8122-7D820494CFFB}"
  151. setpath "product" "win32arm64AppId" "{{67DEE444-3D04-4258-B92A-BC1F0FF2CAE4}"
  152. setpath "product" "win32UserAppId" "{{0FD05EB4-651E-4E78-A062-515204B47A3A}"
  153. setpath "product" "win32x64UserAppId" "{{2E1F05D1-C245-4562-81EE-28188DB6FD17}"
  154. setpath "product" "win32arm64UserAppId" "{{57FD70A5-1B8D-4875-9F40-C5553F094828}"
  155. fi
  156. jsonTmp=$( jq -s '.[0] * .[1]' product.json ../product.json )
  157. echo "${jsonTmp}" > product.json && unset jsonTmp
  158. cat product.json
  159. # package.json
  160. cp package.json{,.bak}
  161. setpath "package" "version" "$( echo "${RELEASE_VERSION}" | sed -n -E "s/^(.*)\.([0-9]+)(-insider)?$/\1/p" )"
  162. setpath "package" "release" "$( echo "${RELEASE_VERSION}" | sed -n -E "s/^(.*)\.([0-9]+)(-insider)?$/\2/p" )"
  163. replace 's|Microsoft Corporation|VSCodium|' package.json
  164. # announcements
  165. replace "s|\\[\\/\\* BUILTIN_ANNOUNCEMENTS \\*\\/\\]|$( tr -d '\n' < ../announcements-builtin.json )|" src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStarted.ts
  166. ../undo_telemetry.sh
  167. replace 's|Microsoft Corporation|VSCodium|' build/lib/electron.js
  168. replace 's|Microsoft Corporation|VSCodium|' build/lib/electron.ts
  169. replace 's|([0-9]) Microsoft|\1 VSCodium|' build/lib/electron.js
  170. replace 's|([0-9]) Microsoft|\1 VSCodium|' build/lib/electron.ts
  171. if [[ "${OS_NAME}" == "linux" ]]; then
  172. # microsoft adds their apt repo to sources
  173. # unless the app name is code-oss
  174. # as we are renaming the application to vscodium
  175. # we need to edit a line in the post install template
  176. if [[ "${VSCODE_QUALITY}" == "insider" ]]; then
  177. sed -i "s/code-oss/codium-insiders/" resources/linux/debian/postinst.template
  178. else
  179. sed -i "s/code-oss/codium/" resources/linux/debian/postinst.template
  180. fi
  181. # fix the packages metadata
  182. # code.appdata.xml
  183. sed -i 's|Visual Studio Code|VSCodium|g' resources/linux/code.appdata.xml
  184. sed -i 's|https://code.visualstudio.com/docs/setup/linux|https://github.com/VSCodium/vscodium#download-install|' resources/linux/code.appdata.xml
  185. sed -i 's|https://code.visualstudio.com/home/home-screenshot-linux-lg.png|https://vscodium.com/img/vscodium.png|' resources/linux/code.appdata.xml
  186. sed -i 's|https://code.visualstudio.com|https://vscodium.com|' resources/linux/code.appdata.xml
  187. # control.template
  188. sed -i 's|Microsoft Corporation <vscode-linux@microsoft.com>|VSCodium Team https://github.com/VSCodium/vscodium/graphs/contributors|' resources/linux/debian/control.template
  189. sed -i 's|https://code.visualstudio.com|https://vscodium.com|' resources/linux/debian/control.template
  190. sed -i 's|Visual Studio Code|VSCodium|g' resources/linux/debian/control.template
  191. sed -i 's|https://code.visualstudio.com/docs/setup/linux|https://github.com/VSCodium/vscodium#download-install|' resources/linux/debian/control.template
  192. # code.spec.template
  193. sed -i 's|https://code.visualstudio.com/docs/setup/linux|https://github.com/VSCodium/vscodium#download-install|' resources/linux/rpm/code.spec.template
  194. sed -i 's|Microsoft Corporation|VSCodium Team|' resources/linux/rpm/code.spec.template
  195. 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
  196. sed -i 's|https://code.visualstudio.com|https://vscodium.com|' resources/linux/rpm/code.spec.template
  197. sed -i 's|Visual Studio Code|VSCodium|' resources/linux/rpm/code.spec.template
  198. # snapcraft.yaml
  199. sed -i 's|Visual Studio Code|VSCodium|' resources/linux/rpm/code.spec.template
  200. elif [[ "${OS_NAME}" == "windows" ]]; then
  201. # code.iss
  202. sed -i 's|https://code.visualstudio.com|https://vscodium.com|' build/win32/code.iss
  203. sed -i 's|Microsoft Corporation|VSCodium|' build/win32/code.iss
  204. fi
  205. cd ..