summaryrefslogtreecommitdiffstats
path: root/compiler/rustc_codegen_gcc/.github/workflows/gcc12.yml
blob: a0d363cf1fbdae6d1c92f6ba610fcaab8a773e32 (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
name: CI libgccjit 12

on:
  - push
  - pull_request

permissions:
  contents: read

env:
  # Enable backtraces for easier debugging
  RUST_BACKTRACE: 1
  TEST_FLAGS: "-Cpanic=abort -Zpanic-abort-tests"
  # 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.
  GCC_EXEC_PREFIX: /usr/lib/gcc/

jobs:
  build:
    runs-on: ubuntu-22.04

    strategy:
      fail-fast: false
      matrix:
        commands: [
          "--mini-tests",
          "--std-tests",
          # FIXME: re-enable asm tests when GCC can emit in the right syntax.
          # "--asm-tests",
          "--test-libcore",
          "--extended-rand-tests",
          "--extended-regex-example-tests",
          "--extended-regex-tests",
          "--test-successful-rustc --nb-parts 2 --current-part 0",
          "--test-successful-rustc --nb-parts 2 --current-part 1",
        ]

    steps:
    - uses: actions/checkout@v3

    - name: Install packages
      # `llvm-14-tools` is needed to install the `FileCheck` binary which is used for asm tests.
      run: sudo apt-get install ninja-build ripgrep llvm-14-tools libgccjit-12-dev

    - name: Setup path to libgccjit
      run: echo /usr/lib/gcc/x86_64-linux-gnu/12 > 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
      ## We only clone the rust repository for rustc tests
      #if: ${{ contains(matrix.commands, 'rustc') }}
      #uses: actions/cache@v3
      #id: cache-rust-repository
      #with:
        #path: rust
        #key: ${{ runner.os }}-packages-${{ hashFiles('rust/.git/HEAD') }}

    - name: Build
      run: |
        ./y.sh prepare --only-libcore --libgccjit12-patches
        ./y.sh build --no-default-features --sysroot-panic-abort
        cargo test --no-default-features
        ./clean_all.sh

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

    # 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 for GCC 12
      run: cat failing-ui-tests12.txt >> failing-ui-tests.txt

    - 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
      run: |
        ./test.sh --release --clean --build-sysroot ${{ matrix.commands }} --no-default-features