name: stdarch tests with sysroot compiled in release mode

on:
  push:
    branches:
      - master
  pull_request:

permissions:
  contents: read

env:
  # Enable backtraces for easier debugging
  RUST_BACKTRACE: 1

jobs:
  build:
    runs-on: ubuntu-24.04

    strategy:
      fail-fast: false
      matrix:
        cargo_runner: [
          "sde -future -rtm_mode full --",
          "",
        ]

    steps:
    - uses: actions/checkout@v4

    # `rustup show` installs from rust-toolchain.toml
    - name: Setup rust toolchain
      run: rustup show

    - name: Setup rust cache
      uses: Swatinem/rust-cache@v2

    - name: Install packages
      run: sudo apt-get install ninja-build ripgrep

    # TODO: remove when we have binutils version 2.43 in the repo.
    - name: Install more recent binutils
      run: |
        echo "deb http://archive.ubuntu.com/ubuntu plucky main universe" | sudo tee /etc/apt/sources.list.d/plucky-copies.list
        sudo apt-get update
        sudo apt-get install binutils

    - name: Install Intel Software Development Emulator
      if: ${{ matrix.cargo_runner }}
      run: |
          mkdir intel-sde
          cd intel-sde
          dir=sde-external-9.33.0-2024-01-07-lin
          file=$dir.tar.xz
          wget https://downloadmirror.intel.com/813591/$file
          tar xvf $file
          sudo mkdir /usr/share/intel-sde
          sudo cp -r $dir/* /usr/share/intel-sde
          sudo ln -s /usr/share/intel-sde/sde /usr/bin/sde
          sudo ln -s /usr/share/intel-sde/sde64 /usr/bin/sde64

    - name: Set env
      run: |
        echo "workspace="$GITHUB_WORKSPACE >> $GITHUB_ENV
        echo 'download-gccjit = true' > config.toml

    - name: Build
      run: |
        ./y.sh prepare --only-libcore
        ./y.sh build --sysroot --release --release-sysroot

    - name: Set env (part 2)
      run: |
        # Set the `LD_LIBRARY_PATH` and `LIBRARY_PATH` env variables...
        echo "LD_LIBRARY_PATH="$(./y.sh info | grep -v Using) >> $GITHUB_ENV
        echo "LIBRARY_PATH="$(./y.sh info | grep -v Using) >> $GITHUB_ENV

    - name: Clean
      if: ${{ !matrix.cargo_runner }}
      run: |
        ./y.sh clean all

    - name: Prepare dependencies
      run: |
        git config --global user.email "user@example.com"
        git config --global user.name "User"
        ./y.sh prepare

    - name: Run tests
      if: ${{ !matrix.cargo_runner }}
      run: |
        ./y.sh test --release --clean --release-sysroot --build-sysroot --mini-tests --std-tests --test-libcore
        ./y.sh test --cargo-tests

    - name: Run stdarch tests
      if: ${{ !matrix.cargo_runner }}
      run: |
        CHANNEL=release TARGET=x86_64-unknown-linux-gnu CG_RUSTFLAGS="-Ainternal_features" ./y.sh cargo test --manifest-path build/build_sysroot/sysroot_src/library/stdarch/Cargo.toml

    - name: Run stdarch tests
      if: ${{ matrix.cargo_runner }}
      run: |
        # FIXME: these tests fail when the sysroot is compiled with LTO because of a missing symbol in proc-macro.
        # TODO: remove --skip test_tile_ when it's implemented.
        STDARCH_TEST_SKIP_FUNCTION="xsave,xsaveopt,xsave64,xsaveopt64" STDARCH_TEST_EVERYTHING=1 CHANNEL=release CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_RUNNER="${{ matrix.cargo_runner }}" TARGET=x86_64-unknown-linux-gnu CG_RUSTFLAGS="-Ainternal_features" ./y.sh cargo test --manifest-path build/build_sysroot/sysroot_src/library/stdarch/Cargo.toml -- --skip rtm --skip tbm --skip sse4a --skip test_tile_

  # Summary job for the merge queue.
  # ALL THE PREVIOUS JOBS NEED TO BE ADDED TO THE `needs` SECTION OF THIS JOB!
  success_stdarch:
    needs: [build]
    # We need to ensure this job does *not* get skipped if its dependencies fail,
    # because a skipped job is considered a success by GitHub. So we have to
    # overwrite `if:`. We use `!cancelled()` to ensure the job does still not get run
    # when the workflow is canceled manually.
    if: ${{ !cancelled() }}
    runs-on: ubuntu-latest
    steps:
      # Manually check the status of all dependencies. `if: failure()` does not work.
      - name: Conclusion
        run: |
          # Print the dependent jobs to see them in the CI log
          jq -C <<< '${{ toJson(needs) }}'
          # Check if all jobs that we depend on (in the needs array) were successful.
          jq --exit-status 'all(.result == "success")' <<< '${{ toJson(needs) }}'
