mirror of
https://github.com/cuberite/libevent.git
synced 2025-08-04 01:36:23 -04:00
Add API/ABI checker (using LVC)
v2 (by azat): - drop package installations - use local .abi-check over $HOME/abi-check for build dir - drop regex check, simply use default values (too complex otherwise) - use sub-shell to avoid cd back - add missing quotes - make the style uniq across the whole file (no tabs for indent, copy-paste?) - drop `set -x`, use `bash -x abi-check.sh` over - drop EVENT_ABI_CHECK - use /usr/bin/env bash as shebang - use `find | xargs` over `cp $(grep -v)` - adjust markdown syntax in abi-check/README.md - adjust link to the publicly available documentation v3 (by azat): - docker image - git check-ignore - make -j8 - allow to change defaults Refs: #887 (cherry picked from commit 735c891e71dc7de737dc09cdef26683eea394e66)
This commit is contained in:
parent
2016f017b3
commit
709210d457
35
extra/abi-check/README.md
Normal file
35
extra/abi-check/README.md
Normal file
@ -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)
|
51
extra/abi-check/abi_check.sh
Executable file
51
extra/abi-check/abi_check.sh
Executable file
@ -0,0 +1,51 @@
|
||||
#!/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
|
||||
abi-monitor -make -j8 -v current -build libevent.json
|
||||
abi-monitor -make -j8 -build libevent.json
|
||||
abi-tracker -build libevent.json
|
||||
|
||||
# remove useless files
|
||||
rm -rf src installed build_logs libevent.json
|
12
extra/abi-check/libevent.json
Normal file
12
extra/abi-check/libevent.json
Normal file
@ -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",
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user