summaryrefslogtreecommitdiffstats
path: root/ipc/chromium/src/third_party/libevent/extra/abi-check
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 17:32:43 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 17:32:43 +0000
commit6bf0a5cb5034a7e684dcc3500e841785237ce2dd (patch)
treea68f146d7fa01f0134297619fbe7e33db084e0aa /ipc/chromium/src/third_party/libevent/extra/abi-check
parentInitial commit. (diff)
downloadthunderbird-upstream.tar.xz
thunderbird-upstream.zip
Adding upstream version 1:115.7.0.upstream/1%115.7.0upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'ipc/chromium/src/third_party/libevent/extra/abi-check')
-rw-r--r--ipc/chromium/src/third_party/libevent/extra/abi-check/README.md35
-rwxr-xr-xipc/chromium/src/third_party/libevent/extra/abi-check/abi_check.sh53
-rw-r--r--ipc/chromium/src/third_party/libevent/extra/abi-check/libevent.json12
3 files changed, 100 insertions, 0 deletions
diff --git a/ipc/chromium/src/third_party/libevent/extra/abi-check/README.md b/ipc/chromium/src/third_party/libevent/extra/abi-check/README.md
new file mode 100644
index 0000000000..77fdd94128
--- /dev/null
+++ b/ipc/chromium/src/third_party/libevent/extra/abi-check/README.md
@@ -0,0 +1,35 @@
+## libevent ABI/API changes
+
+
+This script is used to generate information about changes in libevent ABI/API
+between various versions using [LVC tools](https://github.com/lvc). Such an
+overview can help developers migrate from one version to another.
+
+Here is the `abi_check.sh`, which is used to generate ABI/API timeline for
+libevent.
+
+You can limit the number of included libevent versions via a number given
+as a parameter to the script. For example
+
+```shell
+$ ./abi_check.sh 3
+```
+
+generates overview for the last 3 versions and the current version.
+If no parameter given, it will generate overview for the last 2 versions and
+the current version by default.
+
+But this script requires some tools that are available in the following docker image:
+
+```
+docker.pkg.github.com/azat/docker-images/lvc-debian
+```
+
+And the full command looks like:
+
+```shell
+ docker run --rm -it -v $PWD:/src:ro -w /src -v tmp/le-abi-check-root:/abi-root -e ABI_CHECK_ROOT=/abi-root docker.pkg.github.com/azat/docker-images/lvc-debian /src/extra/abi-check/abi_check.sh
+```
+
+'timeline/libevent/index.html' is the final result and can be viewed
+[here](https://libevent.org/abi)
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
diff --git a/ipc/chromium/src/third_party/libevent/extra/abi-check/libevent.json b/ipc/chromium/src/third_party/libevent/extra/abi-check/libevent.json
new file mode 100644
index 0000000000..42930e933c
--- /dev/null
+++ b/ipc/chromium/src/third_party/libevent/extra/abi-check/libevent.json
@@ -0,0 +1,12 @@
+{
+ "Name": "libevent",
+ "Title": "Libevent",
+ "SourceUrl": "https://github.com/libevent/libevent/tags",
+ "Git": "https://github.com/libevent/libevent.git",
+ "Maintainer": "Nick Mathewson, Azat Khuzhin and Niels Provos",
+ "MaintainerUrl": "https://libevent.org",
+ "BuildSystem": "Autotools",
+ "HeadersDiff": "On",
+ "Package": "release-",
+ "ReleasePattern": "\A([\d\-\.\_]+)(|\-beta|\-rc|\-stable)\Z",
+}