prepare_vscode.sh 10 KB

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