prepare_vscode.sh 11 KB

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