mirror of
https://github.com/samba-team/samba.git
synced 2024-12-23 17:34:34 +03:00
tevent: add script/abi_checks.sh. check for abi changes without gcc magic.
USAGE: abi_checks.sh LIBRARY_NAME header1 [header2 ...] This creates symbol signature lists using the mksyms and mksigs scripts and compares them with the checked in lists. Michael
This commit is contained in:
parent
ffc72b9207
commit
31ee072934
91
lib/tevent/script/abi_checks.sh
Executable file
91
lib/tevent/script/abi_checks.sh
Executable file
@ -0,0 +1,91 @@
|
||||
#!/bin/sh
|
||||
|
||||
#
|
||||
# abi_checks.sh - check for possible abi changes
|
||||
#
|
||||
# Copyright (C) 2009 Micheal Adam <obnox@samba.org>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License as published by the Free
|
||||
# Software Foundation; either version 3 of the License, or (at your option)
|
||||
# any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||
# more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License along with
|
||||
# this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
#
|
||||
# USAGE: abi_checks.sh LIBNAME header1 [header2 ...]
|
||||
#
|
||||
# This script creates symbol and signature lists from the provided header
|
||||
# files with the aid of the mksyms.sh and mksigs.pl scripts (saved as
|
||||
# $LIBNAME.exports.check and $LIBNAME.sigatures.check). It then compares
|
||||
# the resulting files with the files $LIBNAME.exports and $LIBNME.signatures
|
||||
# which it expects to find in the current directory.
|
||||
#
|
||||
|
||||
LANG=C; export LANG
|
||||
LC_ALL=C; export LC_ALL
|
||||
LC_COLLATE=C; export LC_COLLATE
|
||||
|
||||
script=$0
|
||||
dir_name=$(dirname ${script})
|
||||
|
||||
if test x"$1" = "x" ; then
|
||||
echo "USAGE: ${script} libname header [header ...]"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
libname="$1"
|
||||
shift
|
||||
|
||||
if test x"$1" = "x" ; then
|
||||
echo "USAGE: ${script} libname header [header ...]"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
headers="$*"
|
||||
|
||||
exports_file=${libname}.exports
|
||||
exports_file_check=${exports_file}.check
|
||||
signatures_file=${libname}.signatures
|
||||
signatures_file_check=${signatures_file}.check
|
||||
|
||||
|
||||
${dir_name}/mksyms.sh awk ${exports_file_check} ${headers} 2>&1 > /dev/null
|
||||
|
||||
cat ${headers} | ${dir_name}/mksigs.pl > ${signatures_file_check} 2> /dev/null
|
||||
|
||||
normalize_exports_file() {
|
||||
filename=$1
|
||||
cat ${filename} \
|
||||
| sed -e 's/^[ \t]*//g' \
|
||||
| sed -e 's/^$//g' \
|
||||
| sed -e 's/^#.*$//g' \
|
||||
| sort | uniq > ${filename}.sort
|
||||
}
|
||||
|
||||
normalize_exports_file ${exports_file}
|
||||
normalize_exports_file ${exports_file_check}
|
||||
|
||||
normalize_exports_file ${signatures_file}
|
||||
normalize_exports_file ${signatures_file_check}
|
||||
|
||||
diff -u ${exports_file}.sort ${exports_file_check}.sort
|
||||
if test "x$?" != "x0" ; then
|
||||
echo "WARNING: possible ABI change detected in exports!"
|
||||
else
|
||||
echo "exports check: OK"
|
||||
fi
|
||||
|
||||
diff -u ${signatures_file}.sort ${signatures_file_check}.sort
|
||||
if test "x$?" != "x0" ; then
|
||||
echo "WARNING: possible ABI change detected in signatures!"
|
||||
else
|
||||
echo "signatures check: OK"
|
||||
fi
|
Loading…
Reference in New Issue
Block a user