From ad4d2c612d4c6a449a3598b8d64b259f719053af Mon Sep 17 00:00:00 2001 From: Baptiste Augrain Date: Fri, 16 Feb 2024 01:45:48 +0100 Subject: [PATCH] fix: use sysroot with glibc-2.17 [skip ci] --- .github/workflows/insider-linux.yml | 90 +++-------------------------- patches/linux/reh-node16.patch | 49 +++++++++++++--- patches/linux/sysroot.patch | 68 ++++++++++++++++++++++ prepare_assets.sh | 4 ++ prepare_vscode.sh | 44 ++++++++------ 5 files changed, 148 insertions(+), 107 deletions(-) create mode 100644 patches/linux/sysroot.patch diff --git a/.github/workflows/insider-linux.yml b/.github/workflows/insider-linux.yml index b1453fa..4f75e25 100644 --- a/.github/workflows/insider-linux.yml +++ b/.github/workflows/insider-linux.yml @@ -30,85 +30,10 @@ env: VSCODE_QUALITY: insider jobs: - check: - runs-on: ubuntu-latest - container: - image: vscodium/vscodium-linux-build-agent:bionic-x64 - outputs: - MS_COMMIT: ${{ env.MS_COMMIT }} - MS_TAG: ${{ env.MS_TAG }} - RELEASE_VERSION: ${{ env.RELEASE_VERSION }} - SHOULD_BUILD: ${{ env.SHOULD_BUILD }} - SHOULD_DEPLOY: ${{ env.SHOULD_DEPLOY }} - - steps: - - uses: actions/checkout@v3 - with: - ref: ${{ env.GITHUB_BRANCH }} - - - name: Clone VSCode repo - env: - RELEASE_VERSION: ${{ github.event.inputs.release_version }} - run: ./get_repo.sh - - - name: Check PR or cron - env: - GENERATE_ASSETS: ${{ github.event.inputs.generate_assets }} - run: ./check_cron_or_pr.sh - - dependencies: - needs: - - check - runs-on: ubuntu-latest - env: - MS_COMMIT: ${{ needs.check.outputs.MS_COMMIT }} - MS_TAG: ${{ needs.check.outputs.MS_TAG }} - RELEASE_VERSION: ${{ needs.check.outputs.RELEASE_VERSION }} - strategy: - fail-fast: false - matrix: - include: - - vscode_arch: x64 - image: vscodium/vscodium-linux-build-agent:centos7-devtoolset8-x64 - # - vscode_arch: arm64 - # image: vscodium/vscodium-linux-build-agent:centos7-devtoolset8-arm64 - container: - image: ${{ matrix.image }} - if: needs.check.outputs.SHOULD_BUILD == 'yes' || needs.check.outputs.SHOULD_DEPLOY == 'yes' - - steps: - - uses: actions/checkout@v3 - with: - ref: ${{ env.GITHUB_BRANCH }} - - - name: Clone VSCode repo - run: ./get_repo.sh - - - uses: docker/setup-qemu-action@v3 - if: matrix.vscode_arch == 'arm64' || matrix.vscode_arch == 'ppc64le' - - - name: Install remote dependencies - run: ./install_remote_dependencies.sh - - - name: Save remote dependencies - uses: actions/upload-artifact@v3 - with: - name: remote-dependencies-${{ matrix.vscode_arch }} - path: ./remote-dependencies.tar - retention-days: ${{ needs.check.outputs.SHOULD_DEPLOY == 'yes' && 30 || 1 }} - build: - needs: - - check - - dependencies runs-on: ubuntu-latest env: DISABLE_UPDATE: 'yes' - MS_COMMIT: ${{ needs.check.outputs.MS_COMMIT }} - MS_TAG: ${{ needs.check.outputs.MS_TAG }} - RELEASE_VERSION: ${{ needs.check.outputs.RELEASE_VERSION }} - SHOULD_BUILD: ${{ needs.check.outputs.SHOULD_BUILD }} - SHOULD_DEPLOY: ${{ needs.check.outputs.SHOULD_DEPLOY }} strategy: fail-fast: false matrix: @@ -130,10 +55,11 @@ jobs: env: VSCODE_ARCH: ${{ matrix.vscode_arch }} outputs: + MS_COMMIT: ${{ env.MS_COMMIT }} + MS_TAG: ${{ env.MS_TAG }} RELEASE_VERSION: ${{ env.RELEASE_VERSION }} SHOULD_BUILD: ${{ env.SHOULD_BUILD }} SHOULD_DEPLOY: ${{ env.SHOULD_DEPLOY }} - if: needs.check.outputs.SHOULD_BUILD == 'yes' || needs.check.outputs.SHOULD_DEPLOY == 'yes' steps: - uses: actions/checkout@v3 @@ -143,8 +69,14 @@ jobs: - name: Clone VSCode repo run: ./get_repo.sh + - name: Check PR or cron + env: + GENERATE_ASSETS: ${{ github.event.inputs.generate_assets }} + run: ./check_cron_or_pr.sh + - name: Install GH run: ./install_gh.sh + if: env.SHOULD_DEPLOY == 'yes' - name: Check existing VSCodium tags/releases env: @@ -152,12 +84,6 @@ jobs: run: ./check_tags.sh if: env.SHOULD_DEPLOY == 'yes' - - name: Restore remote dependencies - uses: actions/download-artifact@v3 - with: - name: remote-dependencies-${{ matrix.vscode_arch }} - if: env.SHOULD_BUILD == 'yes' && matrix.vscode_arch == 'x64' - - name: Build env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/patches/linux/reh-node16.patch b/patches/linux/reh-node16.patch index 4ade0ea..e9e3a78 100644 --- a/patches/linux/reh-node16.patch +++ b/patches/linux/reh-node16.patch @@ -23,28 +23,61 @@ index adbe2d2..dfc3bd7 100644 +target "16.20.2" ms_build_id "252256" diff --git a/remote/package.json b/remote/package.json -index b1fbc7b..87716c0 100644 +index b1fbc7b..a49694c 100644 --- a/remote/package.json +++ b/remote/package.json +@@ -11,3 +11,3 @@ + "@vscode/ripgrep": "^1.15.9", +- "@vscode/spdlog": "^0.14.0", ++ "@vscode/spdlog": "0.13.11", + "@vscode/vscode-languagedetection": "1.0.21", @@ -31,3 +31,3 @@ "native-watchdog": "^1.4.1", - "node-pty": "1.1.0-beta5", -+ "node-pty": "1.1.0-beta4", ++ "node-pty": "1.1.0-beta1", "tas-client-umd": "0.1.8", diff --git a/remote/yarn.lock b/remote/yarn.lock -index bb20531..8f7c051 100644 +index bb20531..64c480a 100644 --- a/remote/yarn.lock +++ b/remote/yarn.lock -@@ -433,6 +433,6 @@ node-gyp-build@^4.3.0: +@@ -83,9 +83,9 @@ + +-"@vscode/spdlog@^0.14.0": +- version "0.14.0" +- resolved "https://registry.yarnpkg.com/@vscode/spdlog/-/spdlog-0.14.0.tgz#3cdf589ca59b9ce792ef58b5f773e29a732a360f" +- integrity sha512-mpblZa3v6AGEJC1qTwIkpgTc6NItdiiuTxufGxr6XD14srXCvVAUXFIYNqszxC6RY57qDQMX1d9Wd4/oZDxuUQ== ++"@vscode/spdlog@0.13.11": ++ version "0.13.11" ++ resolved "https://registry.npmjs.org/@vscode/spdlog/-/spdlog-0.13.11.tgz#1c65c3527dd8e9679ada7f427c4d9e4af2ea097a" ++ integrity sha512-4qk6G3XKTJNsrqsGwmo9lr8NPaH84WeLsoFVPrpvoEC1t1tFu7H6l4RRMgzKNeE92nwRbjejLv1nATJNoabRfA== + dependencies: + bindings "^1.5.0" +- mkdirp "^1.0.4" ++ mkdirp "^0.5.5" + nan "^2.17.0" +@@ -381,6 +381,8 @@ mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3: + +-mkdirp@^1.0.4: +- version "1.0.4" +- resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" +- integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== ++mkdirp@^0.5.5: ++ version "0.5.6" ++ resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" ++ integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== ++ dependencies: ++ minimist "^1.2.6" + +@@ -433,6 +435,6 @@ node-gyp-build@^4.3.0: -node-pty@1.1.0-beta5: - version "1.1.0-beta5" - resolved "https://registry.yarnpkg.com/node-pty/-/node-pty-1.1.0-beta5.tgz#364386b7058a93070234064f13164ec1ef914993" - integrity sha512-j3QdgFHnLY0JWxztrvM3g67RaQLOGvytv+C6mFu0PqD+JILlzqfwuoyqRqVxdZZjoOTUXPfSRj1qPVCaCH+eOw== -+node-pty@1.1.0-beta4: -+ version "1.1.0-beta4" -+ resolved "https://registry.yarnpkg.com/node-pty/-/node-pty-1.1.0-beta4.tgz#ee74d909c9f422ffc7f675e1092529673f8906ec" -+ integrity sha512-CgffN9AxVtH4g7vDxtanm2qaR7jw3oet9r+ArzziGiFvmds9SdR3gXkZF0fqZWSxhTHZusJWvsuKvRv+5O2K8A== ++node-pty@1.1.0-beta1: ++ version "1.1.0-beta1" ++ resolved "https://registry.npmjs.org/node-pty/-/node-pty-1.1.0-beta1.tgz#95d4baf406c043b78042f951b325e9713df2beac" ++ integrity sha512-h+1E/gX/brFqsp3yZKGERHOhdo1POG1rrsI+8tEuocqdEddHd029471gq8KOuiHKicd52h2pSU8Gtqb3Vo2PfQ== dependencies: diff --git a/resources/server/bin/code-server-linux.sh b/resources/server/bin/code-server-linux.sh index e3d96bd..3df32df 100644 diff --git a/patches/linux/sysroot.patch b/patches/linux/sysroot.patch new file mode 100644 index 0000000..c8c3505 --- /dev/null +++ b/patches/linux/sysroot.patch @@ -0,0 +1,68 @@ +diff --git a/build/checksums/vscode-sysroot.txt b/build/checksums/vscode-sysroot.txt +index 86da04d..0b5f38c 100644 +--- a/build/checksums/vscode-sysroot.txt ++++ b/build/checksums/vscode-sysroot.txt +@@ -1,3 +1,6 @@ +-a2d51dc505ed544c52757f90bcdab44920132295fc7a67166eff86b6e0e24aa8 aarch64-linux-gnu.tar.gz +-032cf16bf8b965e1351305f10f3dedabf4f9868027ac6d0e8f52321ca0b70d4a arm-rpi-linux-gnueabihf.tar.gz +-360475a764d0faf4d3743aa866347eff78072639d20660def83e1a03eadf534c x86_64-linux-gnu.tar.gz ++68a17006021975ff271a1dd615f9db9eda7c25f2cc65e750c87980dc57a06c94 aarch64-linux-gnu-glibc-2.17.tar.gz ++0de422a81683cf9e8cf875dbd1e0c27545ac3c775b2d53015daf3ca2b31d3f15 aarch64-linux-gnu-glibc-2.28.tar.gz ++3ced48cb479f2cdba95aa649710fcb7778685551c745bbd76ac706c3c0ead9fb arm-rpi-linux-gnueabihf-glibc-2.17.tar.gz ++7aea163f7fad8cc50000c86b5108be880121d35e2f55d016ef8c96bbe54129eb arm-rpi-linux-gnueabihf-glibc-2.28.tar.gz ++5aae21115f1d284c3cdf32c83db15771b59bc80793f1423032abf5a823c0d658 x86_64-linux-gnu-glibc-2.17.tar.gz ++dbb927408393041664a020661f2641c9785741be3d29b050b9dac58980967784 x86_64-linux-gnu-glibc-2.28.tar.gz +diff --git a/build/linux/debian/install-sysroot.js b/build/linux/debian/install-sysroot.js +index 40ca42e..d637fce 100644 +--- a/build/linux/debian/install-sysroot.js ++++ b/build/linux/debian/install-sysroot.js +@@ -69,3 +69,3 @@ async function fetchUrl(options, retries = 10, retryDelay = 1000) { + const timeout = setTimeout(() => controller.abort(), 30 * 1000); +- const version = '20231122-245579'; ++ const version = '20240129-253798'; + try { +@@ -121,5 +121,6 @@ async function getVSCodeSysroot(arch) { + let triple; ++ const prefix = process.env['VSCODE_SYSROOT_PREFIX'] ?? '-glibc-2.28'; + switch (arch) { + case 'amd64': +- expectedName = `x86_64-linux-gnu.tar.gz`; ++ expectedName = `x86_64-linux-gnu${prefix}.tar.gz`; + triple = 'x86_64-linux-gnu'; +@@ -127,3 +128,3 @@ async function getVSCodeSysroot(arch) { + case 'arm64': +- expectedName = `aarch64-linux-gnu.tar.gz`; ++ expectedName = `aarch64-linux-gnu${prefix}.tar.gz`; + triple = 'aarch64-linux-gnu'; +@@ -131,3 +132,3 @@ async function getVSCodeSysroot(arch) { + case 'armhf': +- expectedName = `arm-rpi-linux-gnueabihf.tar.gz`; ++ expectedName = `arm-rpi-linux-gnueabihf${prefix}.tar.gz`; + triple = 'arm-rpi-linux-gnueabihf'; +@@ -135,2 +136,3 @@ async function getVSCodeSysroot(arch) { + } ++ console.log(`Fetching ${expectedName} for ${triple}`); + const checksumSha256 = getVSCodeSysrootChecksum(expectedName); +diff --git a/build/linux/rpm/dep-lists.js b/build/linux/rpm/dep-lists.js +index e824f19..b9a6e80 100644 +--- a/build/linux/rpm/dep-lists.js ++++ b/build/linux/rpm/dep-lists.js +@@ -44,6 +44,3 @@ exports.referenceGeneratedDepsByArch = { + 'libc.so.6(GLIBC_2.17)(64bit)', +- 'libc.so.6(GLIBC_2.18)(64bit)', + 'libc.so.6(GLIBC_2.2.5)(64bit)', +- 'libc.so.6(GLIBC_2.25)(64bit)', +- 'libc.so.6(GLIBC_2.27)(64bit)', + 'libc.so.6(GLIBC_2.28)(64bit)', +@@ -143,5 +140,2 @@ exports.referenceGeneratedDepsByArch = { + 'libc.so.6(GLIBC_2.17)', +- 'libc.so.6(GLIBC_2.18)', +- 'libc.so.6(GLIBC_2.25)', +- 'libc.so.6(GLIBC_2.27)', + 'libc.so.6(GLIBC_2.28)', +@@ -247,5 +241,2 @@ exports.referenceGeneratedDepsByArch = { + 'libc.so.6(GLIBC_2.17)(64bit)', +- 'libc.so.6(GLIBC_2.18)(64bit)', +- 'libc.so.6(GLIBC_2.25)(64bit)', +- 'libc.so.6(GLIBC_2.27)(64bit)', + 'libc.so.6(GLIBC_2.28)(64bit)', diff --git a/prepare_assets.sh b/prepare_assets.sh index 5dbf0ab..ffe1f74 100755 --- a/prepare_assets.sh +++ b/prepare_assets.sh @@ -141,6 +141,10 @@ else if [[ "${CI_BUILD}" == "no" ]]; then . ./stores/snapcraft/build.sh + + if [[ "${SKIP_ASSETS}" == "no" ]]; then + mv stores/snapcraft/build/*.snap assets/ + fi fi if [[ "${SHOULD_BUILD_TAR}" != "no" ]]; then diff --git a/prepare_vscode.sh b/prepare_vscode.sh index 882c965..7e6f085 100755 --- a/prepare_vscode.sh +++ b/prepare_vscode.sh @@ -77,30 +77,40 @@ if [[ "${OS_NAME}" == "linux" ]]; then done fi -if [[ "${OS_NAME}" == "osx" ]]; then +if [[ "${OS_NAME}" == "linux" ]]; then + if [[ "${npm_config_arch}" == "arm" ]]; then + export npm_config_arm_version=7 + fi + + CHILD_CONCURRENCY=1 yarn --frozen-lockfile --check-files --network-timeout 180000 + + mkdir -p .build + + export VSCODE_SYSROOT_PREFIX='-glibc-2.17' + + ./build/azure-pipelines/linux/install.sh +elif [[ "${OS_NAME}" == "osx" ]]; then CHILD_CONCURRENCY=1 yarn --frozen-lockfile --network-timeout 180000 yarn postinstall else - if [[ "${OS_NAME}" == "windows" ]]; then - # TODO: Should be replaced with upstream URL once https://github.com/nodejs/node-gyp/pull/2825 - # gets merged. - rm -rf .build/node-gyp - mkdir -p .build/node-gyp - cd .build/node-gyp + # TODO: Should be replaced with upstream URL once https://github.com/nodejs/node-gyp/pull/2825 + # gets merged. + rm -rf .build/node-gyp + mkdir -p .build/node-gyp + cd .build/node-gyp - git config --global user.email "$( echo "${GITHUB_USERNAME}" | awk '{print tolower($0)}' )-ci@not-real.com" - git config --global user.name "${GITHUB_USERNAME} CI" - git clone https://github.com/nodejs/node-gyp.git . - git checkout v9.4.0 - git am --3way --whitespace=fix ../../build/npm/gyp/patches/gyp_spectre_mitigation_support.patch - npm install + git config --global user.email "$( echo "${GITHUB_USERNAME}" | awk '{print tolower($0)}' )-ci@not-real.com" + git config --global user.name "${GITHUB_USERNAME} CI" + git clone https://github.com/nodejs/node-gyp.git . + git checkout v9.4.0 + git am --3way --whitespace=fix ../../build/npm/gyp/patches/gyp_spectre_mitigation_support.patch + npm install - npm_config_node_gyp="$( pwd )/bin/node-gyp.js" - export npm_config_node_gyp + npm_config_node_gyp="$( pwd )/bin/node-gyp.js" + export npm_config_node_gyp - cd ../.. - fi + cd ../.. if [[ "${npm_config_arch}" == "arm" ]]; then export npm_config_arm_version=7