xref: /openbmc/libpldm/scripts/pre-submit (revision aa0aeda7c38dda911c81e9bcd9fae5f8210d303b)
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