build.sh 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. #!/usr/bin/env bash
  2. # shellcheck disable=SC1091,SC2129
  3. ### Windows
  4. # to run with Bash: "C:\Program Files\Git\bin\bash.exe" ./dev/build.sh
  5. ###
  6. export APP_NAME="VSCodium"
  7. export ASSETS_REPOSITORY="VSCodium/vscodium"
  8. export BINARY_NAME="codium"
  9. export CI_BUILD="no"
  10. export GH_REPO_PATH="VSCodium/vscodium"
  11. export ORG_NAME="VSCodium"
  12. export SHOULD_BUILD="yes"
  13. export SKIP_ASSETS="yes"
  14. export SKIP_BUILD="no"
  15. export SKIP_SOURCE="no"
  16. export VSCODE_LATEST="no"
  17. export VSCODE_QUALITY="stable"
  18. export VSCODE_SKIP_NODE_VERSION_CHECK="yes"
  19. while getopts ":ilops" opt; do
  20. case "$opt" in
  21. i)
  22. export ASSETS_REPOSITORY="VSCodium/vscodium-insiders"
  23. export BINARY_NAME="codium-insiders"
  24. export VSCODE_QUALITY="insider"
  25. ;;
  26. l)
  27. export VSCODE_LATEST="yes"
  28. ;;
  29. o)
  30. export SKIP_BUILD="yes"
  31. ;;
  32. p)
  33. export SKIP_ASSETS="no"
  34. ;;
  35. s)
  36. export SKIP_SOURCE="yes"
  37. ;;
  38. *)
  39. ;;
  40. esac
  41. done
  42. case "${OSTYPE}" in
  43. darwin*)
  44. export OS_NAME="osx"
  45. ;;
  46. msys* | cygwin*)
  47. export OS_NAME="windows"
  48. ;;
  49. *)
  50. export OS_NAME="linux"
  51. ;;
  52. esac
  53. UNAME_ARCH=$( uname -m )
  54. if [[ "${UNAME_ARCH}" == "aarch64" || "${UNAME_ARCH}" == "arm64" ]]; then
  55. export VSCODE_ARCH="arm64"
  56. elif [[ "${UNAME_ARCH}" == "ppc64le" ]]; then
  57. export VSCODE_ARCH="ppc64le"
  58. elif [[ "${UNAME_ARCH}" == "riscv64" ]]; then
  59. export VSCODE_ARCH="riscv64"
  60. elif [[ "${UNAME_ARCH}" == "loongarch64" ]]; then
  61. export VSCODE_ARCH="loong64"
  62. elif [[ "${UNAME_ARCH}" == "s390x" ]]; then
  63. export VSCODE_ARCH="s390x"
  64. else
  65. export VSCODE_ARCH="x64"
  66. fi
  67. export NODE_OPTIONS="--max-old-space-size=8192"
  68. echo "OS_NAME=\"${OS_NAME}\""
  69. echo "SKIP_SOURCE=\"${SKIP_SOURCE}\""
  70. echo "SKIP_BUILD=\"${SKIP_BUILD}\""
  71. echo "SKIP_ASSETS=\"${SKIP_ASSETS}\""
  72. echo "VSCODE_ARCH=\"${VSCODE_ARCH}\""
  73. echo "VSCODE_LATEST=\"${VSCODE_LATEST}\""
  74. echo "VSCODE_QUALITY=\"${VSCODE_QUALITY}\""
  75. if [[ "${SKIP_SOURCE}" == "no" ]]; then
  76. rm -rf vscode* VSCode*
  77. . get_repo.sh
  78. . version.sh
  79. # save variables for later
  80. echo "MS_TAG=\"${MS_TAG}\"" > dev/build.env
  81. echo "MS_COMMIT=\"${MS_COMMIT}\"" >> dev/build.env
  82. echo "RELEASE_VERSION=\"${RELEASE_VERSION}\"" >> dev/build.env
  83. echo "BUILD_SOURCEVERSION=\"${BUILD_SOURCEVERSION}\"" >> dev/build.env
  84. else
  85. if [[ "${SKIP_ASSETS}" != "no" ]]; then
  86. rm -rf vscode-* VSCode-*
  87. fi
  88. . dev/build.env
  89. echo "MS_TAG=\"${MS_TAG}\""
  90. echo "MS_COMMIT=\"${MS_COMMIT}\""
  91. echo "RELEASE_VERSION=\"${RELEASE_VERSION}\""
  92. echo "BUILD_SOURCEVERSION=\"${BUILD_SOURCEVERSION}\""
  93. fi
  94. if [[ "${SKIP_BUILD}" == "no" ]]; then
  95. if [[ "${SKIP_SOURCE}" != "no" ]]; then
  96. cd vscode || { echo "'vscode' dir not found"; exit 1; }
  97. git add .
  98. git reset -q --hard HEAD
  99. rm -rf .build out*
  100. cd ..
  101. fi
  102. if [[ -f "./include_${OS_NAME}.gypi" ]]; then
  103. echo "Installing custom ~/.gyp/include.gypi"
  104. mkdir -p ~/.gyp
  105. if [[ -f "${HOME}/.gyp/include.gypi" ]]; then
  106. mv ~/.gyp/include.gypi ~/.gyp/include.gypi.pre-vscodium
  107. else
  108. echo "{}" > ~/.gyp/include.gypi.pre-vscodium
  109. fi
  110. cp ./build/osx/include.gypi ~/.gyp/include.gypi
  111. fi
  112. . build.sh
  113. if [[ -f "./include_${OS_NAME}.gypi" ]]; then
  114. mv ~/.gyp/include.gypi.pre-vscodium ~/.gyp/include.gypi
  115. fi
  116. if [[ "${VSCODE_LATEST}" == "yes" ]]; then
  117. jsonTmp=$( cat "./upstream/${VSCODE_QUALITY}.json" | jq --arg 'tag' "${MS_TAG/\-insider/}" --arg 'commit' "${MS_COMMIT}" '. | .tag=$tag | .commit=$commit' )
  118. echo "${jsonTmp}" > "./upstream/${VSCODE_QUALITY}.json" && unset jsonTmp
  119. fi
  120. fi
  121. if [[ "${SKIP_ASSETS}" == "no" ]]; then
  122. if [[ "${OS_NAME}" == "windows" ]]; then
  123. rm -rf build/windows/msi/releasedir
  124. fi
  125. if [[ "${OS_NAME}" == "osx" && -f "dev/osx/codesign.env" ]]; then
  126. . dev/osx/macos-codesign.env
  127. echo "CERTIFICATE_OSX_ID: ${CERTIFICATE_OSX_ID}"
  128. fi
  129. . prepare_assets.sh
  130. fi