about summary refs log tree commit diff
path: root/compiler/rustc_codegen_gcc/.github/workflows/failures.yml
blob: ae8de79b773db413ec230cbf0ca8657f5e1b1657 (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
# TODO: refactor to avoid duplication with the ci.yml file.
name: Failures

on:
  - pull_request

permissions:
  contents: read

env:
  # Enable backtraces for easier debugging
  RUST_BACKTRACE: 1

jobs:
  build:
    runs-on: ubuntu-22.04

    strategy:
      fail-fast: false
      matrix:
        libgccjit_version:
          - gcc: "libgccjit.so"
            artifacts_branch: "master"
            # TODO: switch back to --no-default-features in the case of libgccjit 12 when the default is to enable
            # master again.
            extra: "--features master"
          - gcc: "libgccjit_without_int128.so"
            artifacts_branch: "master-without-128bit-integers"
            extra: "--features master"
          - gcc: "libgccjit12.so"
            artifacts_branch: "gcc12"
            # FIXME(antoyo): we need to set GCC_EXEC_PREFIX so that the linker can find the linker plugin.
            # Not sure why it's not found otherwise.
            env_extra: "TEST_FLAGS='-Cpanic=abort -Zpanic-abort-tests' GCC_EXEC_PREFIX=/usr/lib/gcc/"

    steps:
    - uses: actions/checkout@v3

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

    - name: Install libgccjit12
      if: matrix.libgccjit_version.gcc == 'libgccjit12.so'
      run: sudo apt-get install libgccjit-12-dev

    - name: Setup path to libgccjit
      if: matrix.libgccjit_version.gcc == 'libgccjit12.so'
      run: echo /usr/lib/gcc/x86_64-linux-gnu/12 > gcc_path

    - name: Download artifact
      if: matrix.libgccjit_version.gcc != 'libgccjit12.so'
      uses: dawidd6/action-download-artifact@v2
      with:
          workflow: main.yml
          name: gcc-13
          path: gcc-13
          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
      if: matrix.libgccjit_version.gcc != 'libgccjit12.so'
      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: Cache rust repository
      #uses: actions/cache@v3
      #id: cache-rust-repository
      #with:
        #path: rust
        #key: ${{ runner.os }}-packages-${{ hashFiles('rust/.git/HEAD') }}

    - name: Git config
      run: |
        git config --global user.email "user@example.com"
        git config --global user.name "User"

    - name: Prepare dependencies
      if: matrix.libgccjit_version.gcc == 'libgccjit12.so'
      run: ./y.sh prepare --libgccjit12-patches

    - name: Prepare dependencies
      if: matrix.libgccjit_version.gcc != 'libgccjit12.so'
      run: ./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
        args: --release

    - name: Add more failing tests because the sysroot is not compiled with LTO
      run: cat failing-non-lto-tests.txt >> failing-ui-tests.txt

    - name: Run tests
      id: tests
      run: |
        ${{ matrix.libgccjit_version.env_extra }} ./test.sh --release --clean --build-sysroot --test-failing-rustc ${{ matrix.libgccjit_version.extra }} | tee output_log
        rg --text "test result" output_log >> $GITHUB_STEP_SUMMARY