xref: /openbmc/libpldm/scripts/pre-submit (revision eba162065498d92b98155df896bd1536b17ac240)
11b1b728bSAndrew Jeffery#!/usr/bin/sh
21b1b728bSAndrew Jefferyset -eu
31b1b728bSAndrew Jeffery
41b1b728bSAndrew JefferyBUILD="$(mktemp --directory --tmpdir=.)"
51b1b728bSAndrew Jefferytrap 'rm -rf "$BUILD"' EXIT
61b1b728bSAndrew Jeffery
7e984a461SAndrew Jefferymeson format --recursive --inplace || true
8fa2e2659SMatt Johnstonif ! git diff --exit-code
907159f76SAndrew Jefferythen
1007159f76SAndrew Jeffery  echo Your changes must meet the upstream meson style guide
1107159f76SAndrew Jeffery  echo
1207159f76SAndrew Jeffery  echo https://mesonbuild.com/Style-guide.html
1307159f76SAndrew Jeffery  echo https://mesonbuild.com/Commands.html#format
1407159f76SAndrew Jeffery  exit 1
1507159f76SAndrew Jefferyfi
16e984a461SAndrew Jeffery
175a034730SAndrew Jeffery# Make sure if the change touches the public headers, it also updates the
185a034730SAndrew Jeffery# changelog.
195a034730SAndrew Jefferyif ! git show --format="" --name-only HEAD -- CHANGELOG.md include/libpldm |
205a034730SAndrew Jeffery  awk -f scripts/changelog.awk
215a034730SAndrew Jefferythen
225a034730SAndrew Jeffery  echo You must document your changes under include/libpldm in CHANGELOG.md
235a034730SAndrew Jeffery  exit 1
245a034730SAndrew Jefferyfi
255a034730SAndrew Jeffery
261b1b728bSAndrew Jeffery# Ensure the test suite passes in the default configuration. Note
271b1b728bSAndrew Jeffery# that we don't specify -Dabi=... - the default is equivalent to
281b1b728bSAndrew Jeffery# -Dabi=deprecated,stable,testing.
29*eba16206SAndrew JefferyCC=gcc CXX=g++ CFLAGS=-fanalyzer meson setup -Dabi-compliance-check=false "$BUILD"
301b1b728bSAndrew Jefferymeson compile -C "$BUILD"
311b1b728bSAndrew Jefferymeson test -C "$BUILD"
321b1b728bSAndrew Jeffery
331b1b728bSAndrew Jeffery# Ensure the test suite passes in release mode. libpldm specifies
341b1b728bSAndrew Jeffery# -Db_ndebug=if-release by default, so building with --buildtype=release passes
351b1b728bSAndrew Jeffery# -DNDEBUG to the compiler for the library implementation. This build
361b1b728bSAndrew Jeffery# configuration will catch any unexpected changes in the library implementation
371b1b728bSAndrew Jeffery# and incorrect test case implementations.
381b1b728bSAndrew Jefferymeson configure --buildtype=release "$BUILD"
391b1b728bSAndrew Jefferymeson compile -C "$BUILD"
400129c53dSAndrew Jefferymeson test -C "$BUILD" --timeout-multiplier 10 --wrapper 'valgrind --error-exitcode=1'
411b1b728bSAndrew Jeffery
421b1b728bSAndrew Jeffery# Ensure the test suite links when testing symbols are removed from the ABI
431b1b728bSAndrew Jefferymeson configure --buildtype=debug "$BUILD"
441b1b728bSAndrew Jefferymeson configure -Dabi=deprecated,stable "$BUILD"
451b1b728bSAndrew Jefferymeson compile -C "$BUILD"
461b1b728bSAndrew Jefferymeson test -C "$BUILD"
47