summaryrefslogtreecommitdiffstats
path: root/compiler/rustc_codegen_gcc/.github/workflows/ci.yml
blob: 8ebdabe82610ec65cf17e62fdd709281e327b6ae (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
name: CI

on:
  - push
  - pull_request

jobs:
  build:
    runs-on: ubuntu-latest

    strategy:
      fail-fast: false
      matrix:
        libgccjit_version: ["libgccjit.so", "libgccjit_without_int128.so", "libgccjit12.so"]

    steps:
    - uses: actions/checkout@v2

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

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

    - name: Download artifact
      uses: dawidd6/action-download-artifact@v2
      with:
          workflow: main.yml
          name: ${{ matrix.libgccjit_version }}
          path: gcc-build
          repo: antoyo/gcc
          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

    # https://github.com/actions/cache/issues/133
    - name: Fixup owner of ~/.cargo/
      # Don't remove the trailing /. It is necessary to follow the symlink.
      run: sudo chown -R $(whoami):$(id -ng) ~/.cargo/

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

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

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

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

    - name: Build
      if: matrix.libgccjit_version != 'libgccjit12.so'
      run: |
        ./prepare_build.sh
        ./build.sh
        cargo test
        ./clean_all.sh

    - name: Build
      if: matrix.libgccjit_version == 'libgccjit12.so'
      run: |
        ./prepare_build.sh
        ./build.sh --no-default-features
        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"
        ./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: Test
      if: matrix.libgccjit_version != 'libgccjit12.so'
      run: |
        # Enable backtraces for easier debugging
        export RUST_BACKTRACE=1

        # Reduce amount of benchmark runs as they are slow
        export COMPILE_RUNS=2
        export RUN_RUNS=2

        ./test.sh --release

    - name: Test
      if: matrix.libgccjit_version == 'libgccjit12.so'
      run: |
        # Enable backtraces for easier debugging
        export RUST_BACKTRACE=1

        # Reduce amount of benchmark runs as they are slow
        export COMPILE_RUNS=2
        export RUN_RUNS=2

        ./test.sh --release --no-default-features