aboutsummaryrefslogtreecommitdiff
path: root/lib/mlibc/.github/workflows/abidiff.yml
diff options
context:
space:
mode:
Diffstat (limited to 'lib/mlibc/.github/workflows/abidiff.yml')
-rw-r--r--lib/mlibc/.github/workflows/abidiff.yml158
1 files changed, 0 insertions, 158 deletions
diff --git a/lib/mlibc/.github/workflows/abidiff.yml b/lib/mlibc/.github/workflows/abidiff.yml
deleted file mode 100644
index 036a7ec..0000000
--- a/lib/mlibc/.github/workflows/abidiff.yml
+++ /dev/null
@@ -1,158 +0,0 @@
-name: Check for ABI breaks
-
-on:
- push:
- branches-ignore:
- - abi-break
- pull_request:
- branches-ignore:
- - abi-break
-
-jobs:
- run-abidiff:
- name: Compare ABIs
- runs-on: ubuntu-22.04
- container:
- image: ghcr.io/managarm/mlibc-crossers:latest
- defaults:
- run:
- shell: bash
- steps:
- - name: Install prerequisites
- run: |
- apt-get update
- apt-get install -y ninja-build qemu-user \
- python3-setuptools python3-jsonschema \
- python3-pip abigail-tools
- pip install --break-system-packages -U xbstrap pyexpect meson
-
- - name: Checkout base branch
- if: ${{ github.base_ref }}
- uses: actions/checkout@v2
- with:
- path: mlibc-base
- ref: ${{ github.base_ref }}
- submodules: true
- fetch-depth: 4
-
- - name: Checkout managarm/mlibc#master
- if: ${{ github.base_ref == '' }}
- uses: actions/checkout@v2
- with:
- path: mlibc-base
- repository: managarm/mlibc
- submodules: true
- ref: master
- fetch-depth: 4
-
- - name: Checkout branch
- uses: actions/checkout@v2
- with:
- path: mlibc-branch
- submodules: true
-
- - name: Determine base ref
- run: |
- master_hash="$(git -C mlibc-base rev-parse HEAD)"
- branch_hash="$(git -C mlibc-branch rev-parse HEAD)"
- printf '%s\n' "$master_hash" "$branch_hash"
-
- if [ "$master_hash" = "$branch_hash" ]; then
- git -C mlibc-base reset --hard HEAD^
- fi
-
- - name: Set up linux kernel headers
- run: |
- set -x
- mkdir -p linux-headers-base/{src,build}
- cp mlibc-base/ci/bootstrap.yml linux-headers-base/src/
- (
- cd linux-headers-base/build
- xbstrap init ../src
- xbstrap install linux-headers
- )
- mkdir -p linux-headers-branch/{src,build}
- cp mlibc-branch/ci/bootstrap.yml linux-headers-branch/src/
- (
- cd linux-headers-branch/build
- xbstrap init ../src
- xbstrap install linux-headers
- )
- cat > linux-headers-base/build/bootstrap-site.yml << EOF
- define_options:
- arch: ${{matrix.arch}}
- EOF
- cp linux-headers-base/build/bootstrap-site.yml linux-headers-branch/build/bootstrap-site.yml
-
- - name: Build and install both copies
- run: |
- set -xe
- mkdir root-base root-branch
- cat > linux-x86_64.cross-file <<-EOF
- [binaries]
- c = ['x86_64-linux-mlibc-gcc']
- cpp = ['x86_64-linux-mlibc-g++']
-
- [host_machine]
- system = 'linux'
- cpu_family = 'x86_64'
- cpu = 'x86_64'
- endian = 'little'
- EOF
- (
- cd mlibc-branch
- meson setup \
- --cross-file=../linux-x86_64.cross-file \
- --buildtype=debugoptimized \
- -Dlinux_kernel_headers=$GITHUB_WORKSPACE/linux-headers-branch/build/packages/linux-headers/usr/include \
- build
- ninja -C build
- DESTDIR="$GITHUB_WORKSPACE/root-branch" ninja -C build install
- )
- (
- cd mlibc-base
- meson setup \
- --cross-file=../linux-x86_64.cross-file \
- --buildtype=debugoptimized \
- -Dlinux_kernel_headers=$GITHUB_WORKSPACE/linux-headers-branch/build/packages/linux-headers/usr/include \
- build
- ninja -C build
- DESTDIR="$GITHUB_WORKSPACE/root-base" ninja -C build install
- )
- - name: Compare
- run: |
- # TODO(arsen): does this require handling for version suffixes?
- set -e +x
- exec 2>&1 # work around GHA foolishly decoupling stdout and stderr
-
- exitcode=0
- git -C mlibc-branch show -s --format=%s | grep -q abi-break || \
- exitcode=1
-
- echo ==== RUNNING ABIDIFF... ====
- ( cd root-base; find . -type f -name '*.so'; ) | while read -r file
- do
- if ! file -- root-{base,branch}/"$file"; then
- touch files-differ
- continue
- fi
- abidiff \
- --no-added-syms \
- --suppr mlibc-branch/ci/abidiff_suppress.ini \
- --hd1 root-base/usr/local/include/ \
- --hd2 root-branch/usr/local/include/ \
- root-{base,branch}/"$file" \
- || touch files-differ
- done
-
- echo ==== CHECKING FOR EXTRA FILES... ====
- ( cd root-branch; find . -type f -name '*.so'; ) | while read -r file
- do
- [ -e "root-base/$file" ] || file root-{base,branch}/"$file" \
- || touch files-differ
- done
-
- if [ -e files-differ ]; then
- echo SOME FILES/ABI DIFFER, SEE OUTPUT ABOVE
- exit "$exitcode"
- fi