summaryrefslogtreecommitdiffstats
path: root/ipc/chromium/src/third_party/libevent/extra/abi-check/abi_check.sh
diff options
context:
space:
mode:
Diffstat (limited to 'ipc/chromium/src/third_party/libevent/extra/abi-check/abi_check.sh')
-rwxr-xr-xipc/chromium/src/third_party/libevent/extra/abi-check/abi_check.sh53
1 files changed, 53 insertions, 0 deletions
diff --git a/ipc/chromium/src/third_party/libevent/extra/abi-check/abi_check.sh b/ipc/chromium/src/third_party/libevent/extra/abi-check/abi_check.sh
new file mode 100755
index 0000000000..e860657e9b
--- /dev/null
+++ b/ipc/chromium/src/third_party/libevent/extra/abi-check/abi_check.sh
@@ -0,0 +1,53 @@
+#!/usr/bin/env bash
+
+# Requirements:
+# - wdiff
+# - rfcdiff
+# - universal-ctags
+# - abi-tracker
+# - abi-monitor
+# - git
+#
+# All of this are included in:
+# docker.pkg.github.com/azat/docker-images/lvc-debian:latest
+#
+# TODO:
+# - move image into libevent namespace
+
+# verify backward compatibility of API/ABI changes
+
+set -e
+
+LIMIT=${1:-2}
+EVENT_SOURCE_DIR=${EVENT_SOURCE_DIR:-"$(cd "$(dirname "$0")"/../.. && pwd)"}
+ABI_CHECK_ROOT=${ABI_CHECK_ROOT:-$EVENT_SOURCE_DIR/.abi-check}
+ABI_CHECK_WORKSPACE=${ABI_CHECK_WORKSPACE:-"work/abi-check"}
+
+mkdir -p "$ABI_CHECK_ROOT/$ABI_CHECK_WORKSPACE"
+cd "$ABI_CHECK_ROOT/$ABI_CHECK_WORKSPACE"
+
+# copy current source code and profile into workspace
+mkdir -p src/libevent/current
+mkdir -p installed/libevent/current
+( # to avoid cd back
+ cd "$EVENT_SOURCE_DIR"
+ # XXX: not `git archive` since it will not copy changes that are not in index,
+ # and maybe some issues on CI (since it does not contain full clone)
+ find . -maxdepth 1 -mindepth 1 | {
+ git check-ignore --no-index --verbose --non-matching --stdin
+ } | fgrep :: | cut -f2 | grep -v /.git/ | tee /dev/stderr | {
+ xargs cp -r -t "$ABI_CHECK_ROOT/$ABI_CHECK_WORKSPACE/src/libevent/current/"
+ }
+ cp extra/abi-check/libevent.json "$ABI_CHECK_ROOT/$ABI_CHECK_WORKSPACE/"
+)
+
+# run LVC tools
+abi-monitor -get -limit "$LIMIT" libevent.json
+# XXX: abi-monitor 1.12 supports "-make -j8", but 1.10 does not
+# (we can detect which version we have, and add this options)
+abi-monitor -v current -build libevent.json
+abi-monitor -build libevent.json
+abi-tracker -build libevent.json
+
+# remove useless files
+rm -rf src installed build_logs libevent.json