diff --git a/src/bootstrap/src/core/build_steps/test.rs b/src/bootstrap/src/core/build_steps/test.rs index c28fe4ad832d3..49c98969f7ea7 100644 --- a/src/bootstrap/src/core/build_steps/test.rs +++ b/src/bootstrap/src/core/build_steps/test.rs @@ -509,6 +509,8 @@ impl Step for RustAnalyzer { // specify `--workspace`. cargo.arg("--workspace"); cargo.arg("--exclude=xtask"); + // cargo.arg("-p"); + // cargo.arg("hir-def"); if build_compiler.stage == 0 { // This builds a proc macro against the bootstrap libproc_macro, which is not ABI diff --git a/src/ci/docker/host-x86_64/x86_64-gnu-llvm-21/Dockerfile b/src/ci/docker/host-x86_64/x86_64-gnu-llvm-21/Dockerfile index fc96735521077..d825fc873fa81 100644 --- a/src/ci/docker/host-x86_64/x86_64-gnu-llvm-21/Dockerfile +++ b/src/ci/docker/host-x86_64/x86_64-gnu-llvm-21/Dockerfile @@ -35,9 +35,9 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ # Install powershell (universal package) so we can test x.ps1 on Linux # FIXME: need a "universal" version that supports libicu74, but for now it still works to ignore that dep. -RUN curl -sL "https://github.com/PowerShell/PowerShell/releases/download/v7.3.1/powershell_7.3.1-1.deb_amd64.deb" > powershell.deb && \ - dpkg --ignore-depends=libicu72 -i powershell.deb && \ - rm -f powershell.deb +# RUN curl -sL "https://github.com/PowerShell/PowerShell/releases/download/v7.3.1/powershell_7.3.1-1.deb_amd64.deb" > powershell.deb && \ +# dpkg --ignore-depends=libicu72 -i powershell.deb && \ +# rm -f powershell.deb COPY scripts/sccache.sh /scripts/ RUN sh /scripts/sccache.sh diff --git a/src/ci/docker/scripts/stage_2_test_set2.sh b/src/ci/docker/scripts/stage_2_test_set2.sh index 06b80b200a8c0..364a5ef58d7aa 100755 --- a/src/ci/docker/scripts/stage_2_test_set2.sh +++ b/src/ci/docker/scripts/stage_2_test_set2.sh @@ -7,15 +7,10 @@ set -ex # When this job partition is run as part of PR CI, skip tidy to allow revealing more failures. The # dedicated `tidy` job failing won't block other PR CI jobs from completing, and so tidy failures # shouldn't inhibit revealing other failures in PR CI jobs. -if [ "$PR_CI_JOB" == "1" ]; then - echo "PR_CI_JOB set; skipping tidy" - SKIP_TIDY="--skip tidy" -fi +# if [ "$PR_CI_JOB" == "1" ]; then +# echo "PR_CI_JOB set; skipping tidy" +# SKIP_TIDY="--skip tidy" +# fi -../x.py --stage 2 test \ - ${SKIP_TIDY:+$SKIP_TIDY} \ - --skip tests \ - --skip coverage-map \ - --skip coverage-run \ - --skip library \ - --skip tidyselftest +../x.py --stage 2 test src/tools/rust-analyzer || \ + gdb -batch -ex "bt" /checkout/obj/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-linux-gnu/release/deps/hir_def-* /checkout/obj/eric-core diff --git a/src/ci/github-actions/jobs.yml b/src/ci/github-actions/jobs.yml index 97ddde799a757..7be85af7333b4 100644 --- a/src/ci/github-actions/jobs.yml +++ b/src/ci/github-actions/jobs.yml @@ -111,41 +111,68 @@ jobs: # When overridden, `citool` will check for equivalence between the PR and CI job # of the same name modulo `continue_on_error` and `env`. pr: - - name: pr-check-1 - <<: *job-linux-4c - - name: pr-check-2 - <<: *job-linux-4c - - name: tidy - continue_on_error: true - free_disk: false + - name: x86_64-gnu-llvm-21-1 env: - # This submodule is expensive to checkout, and it should not be needed for - # tidy. This speeds up the PR CI job by ~1 minute. - SKIP_SUBMODULES: src/gcc + RUST_BACKTRACE: 1 + IMAGE: x86_64-gnu-llvm-21 + DOCKER_SCRIPT: stage_2_test_set2.sh <<: *job-linux-4c - - name: x86_64-gnu-llvm-21 + - name: x86_64-gnu-llvm-21-2 env: - ENABLE_GCC_CODEGEN: "1" - DOCKER_SCRIPT: x86_64-gnu-llvm.sh + RUST_BACKTRACE: 1 + IMAGE: x86_64-gnu-llvm-21 + DOCKER_SCRIPT: stage_2_test_set2.sh <<: *job-linux-4c - - name: aarch64-gnu-llvm-21-1 - env: - IMAGE: aarch64-gnu-llvm-21 - DOCKER_SCRIPT: stage_2_test_set1.sh - <<: *job-aarch64-linux - - name: aarch64-gnu-llvm-21-2 + - name: x86_64-gnu-llvm-21-3 env: - IMAGE: aarch64-gnu-llvm-21 + RUST_BACKTRACE: 1 + IMAGE: x86_64-gnu-llvm-21 DOCKER_SCRIPT: stage_2_test_set2.sh - <<: *job-aarch64-linux - - name: x86_64-gnu-tools - <<: *job-linux-4c - - name: x86_64-gnu-miri <<: *job-linux-4c - - name: x86_64-gnu-gcc - doc_url: https://rustc-dev-guide.rust-lang.org/tests/codegen-backend-tests/cg_gcc.html + - name: x86_64-gnu-llvm-21-4 + env: + RUST_BACKTRACE: 1 + IMAGE: x86_64-gnu-llvm-21 + DOCKER_SCRIPT: stage_2_test_set2.sh <<: *job-linux-4c + + + # - name: pr-check-1 + # <<: *job-linux-4c + # - name: pr-check-2 + # <<: *job-linux-4c + # - name: tidy + # continue_on_error: true + # free_disk: false + # env: + # # This submodule is expensive to checkout, and it should not be needed for + # # tidy. This speeds up the PR CI job by ~1 minute. + # SKIP_SUBMODULES: src/gcc + # <<: *job-linux-4c + # - name: x86_64-gnu-llvm-21 + # env: + # ENABLE_GCC_CODEGEN: "1" + # DOCKER_SCRIPT: x86_64-gnu-llvm.sh + # <<: *job-linux-4c + # - name: aarch64-gnu-llvm-21-1 + # env: + # IMAGE: aarch64-gnu-llvm-21 + # DOCKER_SCRIPT: stage_2_test_set1.sh + # <<: *job-aarch64-linux + # - name: aarch64-gnu-llvm-21-2 + # env: + # IMAGE: aarch64-gnu-llvm-21 + # DOCKER_SCRIPT: stage_2_test_set2.sh + # <<: *job-aarch64-linux + # - name: x86_64-gnu-tools + # <<: *job-linux-4c + # - name: x86_64-gnu-miri + # <<: *job-linux-4c + # - name: x86_64-gnu-gcc + # doc_url: https://rustc-dev-guide.rust-lang.org/tests/codegen-backend-tests/cg_gcc.html + # <<: *job-linux-4c + # Jobs that run when you perform a try build (@bors try) # These jobs automatically inherit envs.try, to avoid repeating # it in each job definition. diff --git a/src/ci/run.sh b/src/ci/run.sh index 215292965e65d..0fac35ead9bd0 100755 --- a/src/ci/run.sh +++ b/src/ci/run.sh @@ -10,6 +10,8 @@ if [ -n "$CI_JOB_DOC_URL" ]; then echo "[CI_JOB_DOC_URL=$CI_JOB_DOC_URL]" fi +sysctl -w kernel.core_pattern=/checkout/obj/eric-core + if [ "$NO_CHANGE_USER" = "" ]; then if [ "$LOCAL_USER_ID" != "" ]; then id -u user &>/dev/null || useradd --shell /bin/bash -u $LOCAL_USER_ID -o -c "" -m user @@ -33,6 +35,7 @@ fi if [ -f /proc/sys/kernel/core_pattern ]; then ulimit -c unlimited fi +cat /proc/sys/kernel/core_pattern # There was a bad interaction between "old" 32-bit binaries on current 64-bit # kernels with selinux enabled, where ASLR mmap would sometimes choose a low @@ -58,14 +61,15 @@ if [ "$FORCE_CI_RUSTC" == "" ]; then DISABLE_CI_RUSTC_IF_INCOMPATIBLE=1 fi -RUST_CONFIGURE_ARGS="$RUST_CONFIGURE_ARGS --set build.print-step-timings --enable-verbose-tests" -RUST_CONFIGURE_ARGS="$RUST_CONFIGURE_ARGS --set build.metrics" +RUST_CONFIGURE_ARGS="$RUST_CONFIGURE_ARGS --enable-verbose-tests" RUST_CONFIGURE_ARGS="$RUST_CONFIGURE_ARGS --enable-verbose-configure" RUST_CONFIGURE_ARGS="$RUST_CONFIGURE_ARGS --enable-sccache" RUST_CONFIGURE_ARGS="$RUST_CONFIGURE_ARGS --disable-manage-submodules" RUST_CONFIGURE_ARGS="$RUST_CONFIGURE_ARGS --enable-locked-deps" RUST_CONFIGURE_ARGS="$RUST_CONFIGURE_ARGS --enable-cargo-native-static" RUST_CONFIGURE_ARGS="$RUST_CONFIGURE_ARGS --set rust.codegen-units-std=1" +RUST_CONFIGURE_ARGS="$RUST_CONFIGURE_ARGS --set rust.llvm-bitcode-linker=false" +RUST_CONFIGURE_ARGS="$RUST_CONFIGURE_ARGS --tools=cargo,rustdoc,rust-analyzer,rust-analyzer-proc-macro-srv,analysis" # rust-lang/promote-release will recompress CI artifacts, and while we care # about the per-commit artifact sizes, it's not as important that they're # highly compressed as it is that the process is fast. Best compression @@ -166,7 +170,7 @@ else CODEGEN_BACKENDS="${CODEGEN_BACKENDS:-llvm,cranelift,gcc}" else # Test the Cranelift backend in CI. Bootstrap knows which targets to run tests on. - CODEGEN_BACKENDS="${CODEGEN_BACKENDS:-llvm,cranelift}" + CODEGEN_BACKENDS="${CODEGEN_BACKENDS:-llvm}" fi RUST_CONFIGURE_ARGS="$RUST_CONFIGURE_ARGS --set rust.codegen-backends=$CODEGEN_BACKENDS"