소스 검색

fix: use sysroot with glibc-2.17 [skip ci]

Baptiste Augrain 1 년 전
부모
커밋
ad4d2c612d
5개의 변경된 파일151개의 추가작업 그리고 110개의 파일을 삭제
  1. 8 82
      .github/workflows/insider-linux.yml
  2. 41 8
      patches/linux/reh-node16.patch
  3. 68 0
      patches/linux/sysroot.patch
  4. 4 0
      prepare_assets.sh
  5. 30 20
      prepare_vscode.sh

+ 8 - 82
.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 }}

+ 41 - 8
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

+ 68 - 0
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)',

+ 4 - 0
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

+ 30 - 20
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
-
-    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
-
-    cd ../..
-  fi
+  # 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
+
+  npm_config_node_gyp="$( pwd )/bin/node-gyp.js"
+  export npm_config_node_gyp
+
+  cd ../..
 
   if [[ "${npm_config_arch}" == "arm" ]]; then
     export npm_config_arm_version=7