Skip to content

ADBDEV-6655: Fix -Wunused-but-set-variable errors #2368

ADBDEV-6655: Fix -Wunused-but-set-variable errors

ADBDEV-6655: Fix -Wunused-but-set-variable errors #2368

name: Greenplum ABI Tests
on:
workflow_dispatch:
pull_request:
paths:
- 'concourse/scripts/**'
- 'src/**'
- '.github/workflows/**'
- '.github/scripts/**'
- '.abi-check/**'
push:
branches:
- main
paths:
- 'concourse/scripts/**'
- 'src/**'
- '.github/workflows/**'
- '.github/scripts/**'
- '.abi-check/**'
jobs:
abi-dump-setup:
runs-on: ubuntu-22.04
outputs:
BASELINE_REF: ${{ steps.vars.outputs.BASELINE_REF }}
BASELINE_VERSION: ${{ steps.vars.outputs.BASELINE_VERSION }}
ABI_LIBS: ${{ steps.vars.outputs.ABI_LIBS }}
ABI_HEADERS: ${{ steps.vars.outputs.ABI_HEADERS }}
EXCEPTION_LISTS_COUNT: ${{ steps.check_exception_lists.outputs.EXCEPTION_LISTS_COUNT }}
steps:
- name: Fetch source
uses: actions/checkout@v3
- name: Get Greenplum version variables
id: vars
run: |
remote_repo='https://github.com/arenadata/gpdb.git'
git ls-remote --tags --refs --sort='v:refname' $remote_repo '7.*' | grep -v '-' | tail -n 1 > baseline_version_ref
baseline_ref=$(cat baseline_version_ref | awk '{print $1}')
baseline_version=$(cat baseline_version_ref | awk '{print $2}')
echo "BASELINE_REF=${baseline_ref}" | tee -a $GITHUB_OUTPUT
echo "BASELINE_VERSION=${baseline_version#'refs/tags/'}" | tee -a $GITHUB_OUTPUT
echo "ABI_LIBS=postgres" | tee -a $GITHUB_OUTPUT
echo "ABI_HEADERS=." | tee -a $GITHUB_OUTPUT
- name: Check if exception list exists
id: check_exception_lists
run: |
exception_lists_count=$(ls .abi-check/${{ steps.vars.outputs.BASELINE_VERSION }}/ 2> /dev/null | wc -l)
echo "EXCEPTION_LISTS_COUNT=${exception_lists_count}" | tee -a $GITHUB_OUTPUT
- name: Upload symbol/type checking exception list
if: steps.check_exception_lists.outputs.EXCEPTION_LISTS_COUNT != '0'
uses: actions/upload-artifact@v3
with:
name: exception_lists
path: '.abi-check/${{ steps.vars.outputs.BASELINE_VERSION }}/'
abi-dump:
needs: abi-dump-setup
runs-on: ubuntu-22.04
strategy:
matrix:
name:
- build-baseline
- build-latest
include:
- name: build-baseline
repo: arenadata/gpdb
ref: ${{ needs.abi-dump-setup.outputs.BASELINE_VERSION }}
- name: build-latest
repo: ${{ github.repository }}
ref: ${{ github.sha }}
steps:
- name: Download Greenplum source code
uses: actions/checkout@v3
with:
repository: ${{ matrix.repo }}
ref: ${{ matrix.ref }}
submodules: recursive
fetch-depth: 1
path: gpdb_src
- name: Install dependencies and abi-dumper
run: |
sudo gpdb_src/README.Ubuntu.bash
sudo apt install -y libuv1-dev libpam0g-dev libldap-dev libipc-run-perl universal-ctags abi-dumper
sudo ln -fs python2 /usr/bin/python
- name: Build Greenplum
run: |
pushd gpdb_src
CC='gcc -m64' \
CXXFLAGS='-O0' \
CFLAGS='-gdwarf-4 -Og -g3 -Wno-maybe-uninitialized' \
LDFLAGS='-Wl,--enable-new-dtags -Wl,--export-dynamic' \
./configure --with-gssapi --enable-orafce --enable-ic-proxy --enable-orca --with-libxml \
--with-uuid=e2fs --with-pgport=5432 --enable-tap-tests --enable-debug-extensions \
--with-perl --with-python --with-openssl --with-pam --with-ldap --disable-rpath \
--with-includes="" --with-libraries="" \
--prefix=/usr/local/greenplum-db-devel \
--mandir=/usr/local/greenplum-db-devel/man
sudo make -j`nproc` install
- name: Dump ABI
run: |
abi-dumper -lver ${{ matrix.ref }} -skip-cxx \
-public-headers /usr/local/greenplum-db-devel/include/${{ needs.abi-dump-setup.outputs.ABI_HEADERS }} \
-o postgres-${{ matrix.ref }}.abi \
/usr/local/greenplum-db-devel/bin/postgres
- name: Upload ABI files
uses: actions/upload-artifact@v3
with:
name: ${{ matrix.name }}
path: '*${{ matrix.ref }}.abi'
abi-compare:
needs:
- abi-dump-setup
- abi-dump
runs-on: ubuntu-22.04
steps:
- name: Download baseline
uses: actions/download-artifact@v3
with:
name: build-baseline
path: build-baseline/
- name: Download latest
uses: actions/download-artifact@v3
with:
name: build-latest
path: build-latest/
- name: Download exception lists
if: needs.abi-dump-setup.outputs.EXCEPTION_LISTS_COUNT != '0'
uses: actions/download-artifact@v3
with:
name: exception_lists
path: exception_lists/
- name: Install abi-compliance-checker and report viewer (lynx)
run: |
sudo apt install -y abi-compliance-checker lynx
- name: Compare ABI
run: |
SKIP_POSTGRES_SYMBOLS_LIST="exception_lists/postgres.symbols.ignore"
SKIP_POSTGRES_SYMBOLS_OPTION=""
if [[ -f "$SKIP_POSTGRES_SYMBOLS_LIST" ]]; then
SKIP_POSTGRES_SYMBOLS_OPTION="-skip-symbols ${SKIP_POSTGRES_SYMBOLS_LIST}"
fi
SKIP_POSTGRES_TYPES_LIST="exception_lists/postgres.types.ignore"
SKIP_POSTGRES_TYPES_OPTION=""
if [[ -f "$SKIP_POSTGRES_TYPES_LIST" ]]; then
SKIP_POSTGRES_TYPES_OPTION="-skip-types ${SKIP_POSTGRES_TYPES_LIST}"
fi
abi-compliance-checker ${SKIP_POSTGRES_SYMBOLS_OPTION} \
${SKIP_POSTGRES_TYPES_OPTION} \
-lib postgres \
-old build-baseline/postgres*.abi \
-new build-latest/postgres*.abi
- name: Print out ABI report
if: always()
run: |
lynx -dump $(find compat_reports/ | grep html)
- name: Upload ABI Comparison
if: always()
uses: actions/upload-artifact@v3
with:
name: compat-report-${{ github.sha }}
path: compat_reports/