prepare_vscode.sh 11 KB

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