summaryrefslogtreecommitdiffstats
path: root/.github/workflows/abi-checker.yml
blob: 5506f44e2e7b461e0df1575856e77f5bc8b461ef (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
name: abi-checker
on:
  workflow_dispatch:
    branches: [ master, stable* ]
    inputs:
      API_BASE_REF:
        description: 'Base revision for ABI compatibility check'
        required: true
        default: '3.0.0'
  pull_request_target:
    branches: [ master, stable* ]
  schedule:
    - cron: '30 4 * * SUN'

jobs:
  build:
    runs-on: ubuntu-latest
    name: "Run ABI checker on ubuntu-latest"
    steps:
      - name: "Check out pull request"
        if: ${{ github.event_name == 'pull_request' && github.event.pull_request.base.sha || github.event_name == 'pull_request_target'  }}
        uses: suzuki-shunsuke/get-pr-action@v0.1.0
        id: pr

      - name: "Check out source"
        uses: actions/checkout@v4
        with:
          fetch-depth: 0
          ref: ${{steps.pr.outputs.merge_commit_sha}}

      - name: "Prepare environment"
        run: |
          sudo apt-get update -q -y
          sudo apt-get install -q -y \
            libxrandr-dev \
            libxinerama-dev \
            libusb-1.0-0-dev \
            xserver-xorg-dev \
            libswscale-dev \
            libswresample-dev \
            libavutil-dev \
            libavcodec-dev \
            libcups2-dev \
            libpulse-dev \
            libasound2-dev \
            libpcsclite-dev \
            xsltproc \
            libxcb-cursor-dev \
            libxcursor-dev \
            libcairo2-dev \
            libfaad-dev \
            libjpeg-dev \
            libgsm1-dev \
            ninja-build \
            libxfixes-dev \
            libxkbcommon-dev \
            libwayland-dev \
            libpam0g-dev \
            libxdamage-dev \
            libxcb-damage0-dev \
            libxtst-dev \
            libfuse3-dev \
            libsystemd-dev \
            libcairo2-dev \
            libsoxr-dev \
            libsdl2-dev \
            docbook-xsl \
            libkrb5-dev \
            libcjson-dev \
            libpkcs11-helper1-dev \
            libsdl2-ttf-dev \
            libwebkit2gtk-4.0-dev \
            libopus-dev \
            libwebp-dev \
            libpng-dev \
            libjpeg-dev \
            liburiparser-dev \
            cmake \
            clang \
            abigail-tools \
            pylint \
            curl

      - name: "Prepare configuration"
        run: |
          mkdir -p checker
          cp ci/cmake-preloads/config-abi.txt checker/
          cp scripts/abi-suppr.txt checker/
          curl https://gist.githubusercontent.com/akallabeth/aa35caed0d39241fa17c3dc8a0539ea3/raw/ef12f8c720ac6be51aa1878710e2502b1b39cf4c/check-abi -o checker/check-abi
          chmod +x checker/check-abi
          echo "GITHUB_BASE_REF=$GITHUB_BASE_REF"
          echo "GITHUB_HEAD_REF=$GITHUB_HEAD_REF"
          echo "API_BASE_REF=${{ inputs.API_BASE_REF || '3.0.0' }}"
          echo "HEAD=$(git rev-parse HEAD)"
          echo "remotes=$(git remote -v)"

      - name: "Run ABI check..."
        env:
          BASE_REF: ${{ github.event_name == 'pull_request' && github.event.pull_request.base.sha || github.event_name == 'pull_request_target' && github.event.pull_request.base.sha || github.event_name == 'workflow_dispatch' && inputs.API_BASE_REF || '3.0.0' }}
        run: |
          echo "BASE_REF=$BASE_REF"
          ./checker/check-abi -s checker/abi-suppr.txt --parameters="-Cchecker/config-abi.txt" $BASE_REF $(git rev-parse HEAD)