summaryrefslogtreecommitdiffstats
path: root/compiler/rustc_codegen_gcc/.github/workflows/stdarch.yml
blob: 42109ba3e0245310fded9727050822d156692132 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
name: stdarch tests with sysroot compiled in release mode

on:
  - push
  - pull_request

permissions:
  contents: read

env:
  # Enable backtraces for easier debugging
  RUST_BACKTRACE: 1

jobs:
  build:
    runs-on: ubuntu-latest

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

    steps:
    - uses: actions/checkout@v3

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

    - name: Install Intel Software Development Emulator
      if: ${{ matrix.cargo_runner }}
      run: |
          mkdir intel-sde
          cd intel-sde
          dir=sde-external-9.14.0-2022-10-25-lin
          file=$dir.tar.xz
          wget https://downloadmirror.intel.com/751535/$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: Download artifact
      uses: dawidd6/action-download-artifact@v2
      with:
          workflow: main.yml
          name: gcc-13
          path: gcc-13
          repo: antoyo/gcc
          branch: "master"
          event: push
          search_artifacts: true # Because, instead, the action only check the last job ran and that won't work since we want multiple artifacts.

    - name: Setup path to libgccjit
      run: |
          sudo dpkg --force-overwrite -i gcc-13/gcc-13.deb
          echo /usr/lib/ > gcc_path

    - name: Set env
      run: |
        echo "LIBRARY_PATH=$(cat gcc_path)" >> $GITHUB_ENV
        echo "LD_LIBRARY_PATH=$(cat gcc_path)" >> $GITHUB_ENV
        echo "workspace="$GITHUB_WORKSPACE >> $GITHUB_ENV

    - name: Cache cargo installed crates
      uses: actions/cache@v3
      with:
        path: ~/.cargo/bin
        key: cargo-installed-crates2-ubuntu-latest

    - name: Cache cargo registry
      uses: actions/cache@v3
      with:
        path: ~/.cargo/registry
        key: ${{ runner.os }}-cargo-registry2-${{ hashFiles('**/Cargo.lock') }}

    - name: Cache cargo index
      uses: actions/cache@v3
      with:
        path: ~/.cargo/git
        key: ${{ runner.os }}-cargo-index-${{ hashFiles('**/Cargo.lock') }}

    - name: Cache cargo target dir
      uses: actions/cache@v3
      with:
        path: target
        key: ${{ runner.os }}-cargo-build-target-${{ hashFiles('rust-toolchain') }}

    - name: Build
      run: |
        ./y.sh prepare --only-libcore
        # TODO: remove `--features master` when it is back to the default.
        ./y.sh build --release --release-sysroot --features master
        # TODO: remove --features master when it is back to the default.
        cargo test --features master

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

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

    # Compile is a separate step, as the actions-rs/cargo action supports error annotations
    - name: Compile
      uses: actions-rs/cargo@v1.0.3
      with:
        command: build
        # TODO: remove `--features master` when it is back to the default.
        args: --release --features master

    - name: Run tests
      if: ${{ !matrix.cargo_runner }}
      run: |
        # TODO: remove `--features master` when it is back to the default.
        ./test.sh --release --clean --release-sysroot --build-sysroot --mini-tests --std-tests --test-libcore --features master

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

    - name: Run stdarch tests
      if: ${{ matrix.cargo_runner }}
      run: |
        cd build_sysroot/sysroot_src/library/stdarch/
        # FIXME: these tests fail when the sysroot is compiled with LTO because of a missing symbol in proc-macro.
        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" ../../../../cargo.sh test -- --skip rtm --skip tbm --skip sse4a