11b1b728bSAndrew Jeffery#!/usr/bin/sh 21b1b728bSAndrew Jefferyset -eu 31b1b728bSAndrew Jeffery 4a4cfba49SAndrew Jeffery# For valgrind, value is arbitrarily low-ish 5a4cfba49SAndrew Jefferyulimit -n 2048 6a4cfba49SAndrew Jeffery 71b1b728bSAndrew JefferyBUILD="$(mktemp --directory --tmpdir=.)" 81b1b728bSAndrew Jefferytrap 'rm -rf "$BUILD"' EXIT 91b1b728bSAndrew Jeffery 10e984a461SAndrew Jefferymeson format --recursive --inplace || true 11fa2e2659SMatt Johnstonif ! git diff --exit-code 1207159f76SAndrew Jefferythen 1307159f76SAndrew Jeffery echo Your changes must meet the upstream meson style guide 1407159f76SAndrew Jeffery echo 1507159f76SAndrew Jeffery echo https://mesonbuild.com/Style-guide.html 1607159f76SAndrew Jeffery echo https://mesonbuild.com/Commands.html#format 1707159f76SAndrew Jeffery exit 1 1807159f76SAndrew Jefferyfi 19e984a461SAndrew Jeffery 20cd02e9d0SAndrew Jeffery# Make sure if the change touches the public headers or ABI dump, it also 21cd02e9d0SAndrew Jeffery# updates the changelog. 22cd02e9d0SAndrew Jefferyif ! git show --format="" --name-only HEAD -- CHANGELOG.md abi include/libpldm | 235a034730SAndrew Jeffery awk -f scripts/changelog.awk 245a034730SAndrew Jefferythen 25cd02e9d0SAndrew Jeffery echo Add a CHANGELOG entry to document updates under abi/ and include/libpldm/ 265a034730SAndrew Jeffery exit 1 275a034730SAndrew Jefferyfi 285a034730SAndrew Jeffery 291b1b728bSAndrew Jeffery# Ensure the test suite passes in the default configuration. Note 301b1b728bSAndrew Jeffery# that we don't specify -Dabi=... - the default is equivalent to 311b1b728bSAndrew Jeffery# -Dabi=deprecated,stable,testing. 32*aa0aeda7SChau LyCC=gcc CXX=g++ CFLAGS=-fanalyzer meson setup "$BUILD" 331b1b728bSAndrew Jefferymeson compile -C "$BUILD" 341b1b728bSAndrew Jefferymeson test -C "$BUILD" 351b1b728bSAndrew Jeffery 361b1b728bSAndrew Jeffery# Ensure the test suite passes in release mode. libpldm specifies 371b1b728bSAndrew Jeffery# -Db_ndebug=if-release by default, so building with --buildtype=release passes 381b1b728bSAndrew Jeffery# -DNDEBUG to the compiler for the library implementation. This build 391b1b728bSAndrew Jeffery# configuration will catch any unexpected changes in the library implementation 401b1b728bSAndrew Jeffery# and incorrect test case implementations. 411b1b728bSAndrew Jefferymeson configure --buildtype=release "$BUILD" 421b1b728bSAndrew Jefferymeson compile -C "$BUILD" 430129c53dSAndrew Jefferymeson test -C "$BUILD" --timeout-multiplier 10 --wrapper 'valgrind --error-exitcode=1' 441b1b728bSAndrew Jeffery 45*aa0aeda7SChau Ly# Ensure that the test suite doesn't fail to link against the stable ABI, and 46*aa0aeda7SChau Ly# the stable ABI matches what's recorded 471b1b728bSAndrew Jefferymeson configure --buildtype=debug "$BUILD" 481b1b728bSAndrew Jefferymeson configure -Dabi=deprecated,stable "$BUILD" 49*aa0aeda7SChau Ly! command -v abi-compliance-checker > /dev/null || 50*aa0aeda7SChau Ly meson configure -Dabi-compliance-check=true "$BUILD" 511b1b728bSAndrew Jefferymeson compile -C "$BUILD" 521b1b728bSAndrew Jefferymeson test -C "$BUILD" 530f520d1bSAndrew Jeffery 540f520d1bSAndrew Jeffery# Ensure the build completes for maintenance purposes. Note that tests are 550f520d1bSAndrew Jeffery# disabled as we don't yet guard them appropriately. 56*aa0aeda7SChau Lymeson configure -Dabi=stable,testing "$BUILD" 57*aa0aeda7SChau Lymeson configure -Dabi-compliance-check=false "$BUILD" 58*aa0aeda7SChau Lymeson configure -Dtests=false "$BUILD" 590f520d1bSAndrew Jefferymeson compile -C "$BUILD" 60