1e01aa904Sopenharmony_ciname: Libabigail ABI Checks
2e01aa904Sopenharmony_cion:
3e01aa904Sopenharmony_ci  pull_request: []
4e01aa904Sopenharmony_ci
5e01aa904Sopenharmony_cijobs:
6e01aa904Sopenharmony_ci
7e01aa904Sopenharmony_ci#  get-release:
8e01aa904Sopenharmony_ci#    container: ghcr.io/woodard/libabigail-ubuntu-22.04:latest
9e01aa904Sopenharmony_ci#    runs-on: ubuntu-latest
10e01aa904Sopenharmony_ci#    steps:
11e01aa904Sopenharmony_ci#    - name: Organize Files
12e01aa904Sopenharmony_ci#      run: |
13e01aa904Sopenharmony_ci#        mkdir -p /abi
14e01aa904Sopenharmony_ci#        cp /opt/abigail-env/.spack-env/view/lib/libabigail.so /abi/
15e01aa904Sopenharmony_ci#        cp /lib/x86_64-linux-gnu/libc.so.6 /abi/
16e01aa904Sopenharmony_ci#        cp /lib/x86_64-linux-gnu/libstdc++.so.6 /abi/
17e01aa904Sopenharmony_ci#        cp /lib/x86_64-linux-gnu/libsystemd.so.0 /abi/
18e01aa904Sopenharmony_ci
19e01aa904Sopenharmony_ci#    - name: Upload Libs
20e01aa904Sopenharmony_ci#      uses: actions/upload-artifact@v3
21e01aa904Sopenharmony_ci#      with:
22e01aa904Sopenharmony_ci#        name: release-libs
23e01aa904Sopenharmony_ci#        path: |
24e01aa904Sopenharmony_ci#          /abi/libabigail.so
25e01aa904Sopenharmony_ci#          /abi/libc.so.6
26e01aa904Sopenharmony_ci#          /abi/libstdc++.so.6
27e01aa904Sopenharmony_ci#          /abi/libsystemd.so.0
28e01aa904Sopenharmony_ci
29e01aa904Sopenharmony_ci
30e01aa904Sopenharmony_ci  get-latest:
31e01aa904Sopenharmony_ci    container: ghcr.io/woodard/libabigail-ubuntu-22.04:latest
32e01aa904Sopenharmony_ci    runs-on: ubuntu-latest
33e01aa904Sopenharmony_ci    steps:
34e01aa904Sopenharmony_ci    - name: Organize Files
35e01aa904Sopenharmony_ci      run: |
36e01aa904Sopenharmony_ci        mkdir -p /abi
37e01aa904Sopenharmony_ci        cp /opt/abigail-env/.spack-env/view/lib/libabigail.so /abi/
38e01aa904Sopenharmony_ci        cp /lib/x86_64-linux-gnu/libc.so.6 /abi/
39e01aa904Sopenharmony_ci        cp /lib/x86_64-linux-gnu/libstdc++.so.6 /abi/
40e01aa904Sopenharmony_ci        cp /lib/x86_64-linux-gnu/libsystemd.so.0 /abi/
41e01aa904Sopenharmony_ci
42e01aa904Sopenharmony_ci    - name: Upload Libs
43e01aa904Sopenharmony_ci      uses: actions/upload-artifact@v3
44e01aa904Sopenharmony_ci      with:
45e01aa904Sopenharmony_ci        name: latest-libs
46e01aa904Sopenharmony_ci        path: |
47e01aa904Sopenharmony_ci          /abi/libabigail.so
48e01aa904Sopenharmony_ci          /abi/libc.so.6
49e01aa904Sopenharmony_ci          /abi/libstdc++.so.6
50e01aa904Sopenharmony_ci          /abi/libsystemd.so.0
51e01aa904Sopenharmony_ci
52e01aa904Sopenharmony_ci  get-pr:
53e01aa904Sopenharmony_ci    container: ghcr.io/woodard/libabigail-ubuntu-22.04:latest
54e01aa904Sopenharmony_ci    runs-on: ubuntu-latest
55e01aa904Sopenharmony_ci    steps:
56e01aa904Sopenharmony_ci    - name: Build Pull Request
57e01aa904Sopenharmony_ci      uses: actions/checkout@v3
58e01aa904Sopenharmony_ci    - name: Build
59e01aa904Sopenharmony_ci      run: |
60e01aa904Sopenharmony_ci         rm -rf /src
61e01aa904Sopenharmony_ci         cp -R $PWD /src
62e01aa904Sopenharmony_ci         ls /src
63e01aa904Sopenharmony_ci         . /opt/spack/share/spack/setup-env.sh
64e01aa904Sopenharmony_ci         cd /opt/abigail-env
65e01aa904Sopenharmony_ci         spack install
66e01aa904Sopenharmony_ci
67e01aa904Sopenharmony_ci    - name: Organize Files
68e01aa904Sopenharmony_ci      run: |
69e01aa904Sopenharmony_ci        mkdir -p /abi
70e01aa904Sopenharmony_ci        cp /opt/abigail-env/.spack-env/view/lib/libabigail.so /abi/
71e01aa904Sopenharmony_ci        cp /lib/x86_64-linux-gnu/libc.so.6 /abi/
72e01aa904Sopenharmony_ci        cp /lib/x86_64-linux-gnu/libstdc++.so.6 /abi/
73e01aa904Sopenharmony_ci        cp /lib/x86_64-linux-gnu/libsystemd.so.0 /abi/
74e01aa904Sopenharmony_ci
75e01aa904Sopenharmony_ci    - name: Upload Libs
76e01aa904Sopenharmony_ci      uses: actions/upload-artifact@v3
77e01aa904Sopenharmony_ci      with:
78e01aa904Sopenharmony_ci        name: pr-libs
79e01aa904Sopenharmony_ci        path: |
80e01aa904Sopenharmony_ci          /abi/libabigail.so
81e01aa904Sopenharmony_ci          /abi/libc.so.6
82e01aa904Sopenharmony_ci          /abi/libstdc++.so.6
83e01aa904Sopenharmony_ci          /abi/libsystemd.so.0
84e01aa904Sopenharmony_ci
85e01aa904Sopenharmony_ci  abi:
86e01aa904Sopenharmony_ci    runs-on: ubuntu-latest
87e01aa904Sopenharmony_ci    needs: [get-latest, get-pr] # get-release
88e01aa904Sopenharmony_ci    strategy:
89e01aa904Sopenharmony_ci      fail-fast: false
90e01aa904Sopenharmony_ci      matrix:
91e01aa904Sopenharmony_ci
92e01aa904Sopenharmony_ci        # Testing every paired library for release vs pr and main vs. pr
93e01aa904Sopenharmony_ci        libs: ["libabigail.so",
94e01aa904Sopenharmony_ci               "libc.so.6",
95e01aa904Sopenharmony_ci               "libstdc++.so.6",
96e01aa904Sopenharmony_ci               "libsystemd.so.0"]
97e01aa904Sopenharmony_ci
98e01aa904Sopenharmony_ci        # Artifact pairs (named) for comparison)
99e01aa904Sopenharmony_ci        artifacts: [["pr-libs", "latest-libs"]]
100e01aa904Sopenharmony_ci                    #["pr-libs", "release-libs"]]
101e01aa904Sopenharmony_ci
102e01aa904Sopenharmony_ci    steps:
103e01aa904Sopenharmony_ci    - name: Download Previous Version
104e01aa904Sopenharmony_ci      uses: actions/download-artifact@v2
105e01aa904Sopenharmony_ci      with:
106e01aa904Sopenharmony_ci        name: ${{ matrix.artifacts[1] }}
107e01aa904Sopenharmony_ci        path: previous/
108e01aa904Sopenharmony_ci
109e01aa904Sopenharmony_ci    - name: Download Pull Request Version
110e01aa904Sopenharmony_ci      uses: actions/download-artifact@v2
111e01aa904Sopenharmony_ci      with:
112e01aa904Sopenharmony_ci        name: ${{ matrix.artifacts[0] }}
113e01aa904Sopenharmony_ci        path: current/
114e01aa904Sopenharmony_ci
115e01aa904Sopenharmony_ci    - name: Show Files
116e01aa904Sopenharmony_ci      run: |
117e01aa904Sopenharmony_ci        ls current/
118e01aa904Sopenharmony_ci        ls previous/
119e01aa904Sopenharmony_ci
120e01aa904Sopenharmony_ci    - name: Run Libabigail
121e01aa904Sopenharmony_ci      uses: buildsi/libabigail-action@0.0.11
122e01aa904Sopenharmony_ci      env:
123e01aa904Sopenharmony_ci        lib: ${{ matrix.libs }}
124e01aa904Sopenharmony_ci      with:
125e01aa904Sopenharmony_ci        abidiff: previous/${{ env.lib }} current/${{ env.lib }}
126e01aa904Sopenharmony_ci        abidw: "--abidiff current/${{ env.lib }}"
127