summaryrefslogtreecommitdiffstats
path: root/compiler/rustc_codegen_gcc/.github/workflows/stdarch.yml
blob: 556c6444833200b96ec9bf7cd9c5f564d1ea1b74 (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
137
138
139
140
141
142
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:
        libgccjit_version:
          - { gcc: "libgccjit.so", artifacts_branch: "master" }
        cargo_runner: [
          "sde -future -rtm_mode full --",
          "",
        ]

    steps:
    - uses: actions/checkout@v3

    - uses: actions/checkout@v3
      with:
        repository: llvm/llvm-project
        path: llvm

    - 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: ${{ matrix.libgccjit_version.gcc }}
          path: gcc-build
          repo: antoyo/gcc
          branch: ${{ matrix.libgccjit_version.artifacts_branch }}
          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: |
          echo $(readlink -f gcc-build) > gcc_path
          # NOTE: the filename is still libgccjit.so even when the artifact name is different.
          ln gcc-build/libgccjit.so gcc-build/libgccjit.so.0

    - 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: Set RUST_COMPILER_RT_ROOT
      run: echo "RUST_COMPILER_RT_ROOT="${{ env.workspace }}/llvm/compiler-rt >> $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: |
        ./prepare_build.sh
        ./build.sh --release --release-sysroot
        cargo test

    - 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"
        ./prepare.sh

    # 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
        args: --release

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

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

    - name: Run stdarch tests
      if: ${{ matrix.cargo_runner }}
      run: |
        cd build_sysroot/sysroot_src/library/stdarch/
        STDARCH_TEST_EVERYTHING=1 CHANNEL=release CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_RUNNER="${{ matrix.cargo_runner }}" TARGET=x86_64-unknown-linux-gnu ../../../../cargo.sh test -- --skip rtm --skip tbm --skip sse4a