1
0
mirror of https://github.com/irssi/irssi.git synced 2024-09-01 04:14:16 -04:00
irssi/.github/workflows/abicheck.yml

72 lines
2.6 KiB
YAML
Raw Normal View History

2020-04-21 12:58:30 -04:00
on: [pull_request]
name: abicheck
jobs:
check-abi-diff:
runs-on: ubuntu-latest
env:
2020-05-15 05:18:43 -04:00
build_options: -Dbuildtype=debug -Denable-true-color=yes -Dwith-proxy=yes -Dc_args=-DPERL_EUPXS_ALWAYS_EXPORT
2020-04-21 12:58:30 -04:00
prefix: /usr/local
steps:
- name: set PATH
run: |
2020-10-26 18:24:30 -04:00
echo "$HOME/.local/bin" >> $GITHUB_PATH
2020-04-21 12:58:30 -04:00
- name: prepare required software
run: |
sudo apt install abigail-tools ninja-build libutf8proc-dev libperl-dev libotr5-dev
pip3 install setuptools
pip3 install wheel
pip3 install meson
- name: checkout merge ref
uses: actions/checkout@main
2020-04-21 12:58:30 -04:00
with:
path: merge.src
- name: checkout base ref
uses: actions/checkout@main
2020-04-21 12:58:30 -04:00
with:
path: base.src
ref: ${{ github.base_ref }}
- name: build base ref
run: |
meson Build.base base.src $build_options
ninja -C Build.base
DESTDIR=$PWD/base ninja -C Build.base install
- name: build merge ref
run: |
meson Build.merge merge.src $build_options
ninja -C Build.merge
DESTDIR=$PWD/merge ninja -C Build.merge install
- run: |
# print versions and abi versions
getabidef() { awk '$1=="#define" && $2=="IRSSI_ABI_VERSION" { print $3 }' "$1"/include/irssi/src/common.h; }
base_abi=$(getabidef base$prefix)
echo base abi : $base_abi
./base$prefix/bin/irssi --version
2020-10-26 18:24:30 -04:00
echo "base_abi=$base_abi" >> $GITHUB_ENV
2020-04-21 12:58:30 -04:00
merge_abi=$(getabidef merge$prefix)
echo merge abi : $merge_abi
./merge$prefix/bin/irssi --version
2020-10-26 18:24:30 -04:00
echo "merge_abi=$merge_abi" >> $GITHUB_ENV
2020-04-21 12:58:30 -04:00
- run: |
# abipkgdiff
abipkgdiff -l base merge && diff_ret=0 || diff_ret=$?
2020-10-26 18:24:30 -04:00
echo "diff_ret=$diff_ret" >> $GITHUB_ENV
2020-04-21 12:58:30 -04:00
- run: |
# Check if no changes are needed
if [ "$diff_ret" -ne 0 ]; then
if [ "$base_abi" -lt "$merge_abi" ]; then
echo "::warning ::abigail found changes and ABI changed from $base_abi to $merge_abi"
exit 0
else
echo "::error ::Looks like the ABI changed but the IRSSI_ABI_VERSION did not"
exit $diff_ret
fi
else
if [ "$base_abi" -ne "$merge_abi" ]; then
echo "::error ::abigail found no changes yet the IRSSI_ABI_VERSION changed. Is this correct?"
exit 1
else
: "No changes detected and IRSSI_ABI_VERSION untouched"
exit 0
fi
fi