summaryrefslogtreecommitdiff
path: root/lib/talloc/script
diff options
context:
space:
mode:
authorSimo Sorce <idra@samba.org>2009-10-14 10:20:28 -0400
committerSimo Sorce <idra@samba.org>2009-10-14 11:05:51 -0400
commit2d6d6bcb5de87ce0dbce13ff6bc775b953438b75 (patch)
tree83efa7e5d70e13b98dd0a917eb79888171ce4936 /lib/talloc/script
parent075303560f545e59128a1bb16d6128a165830288 (diff)
downloadsamba-2d6d6bcb5de87ce0dbce13ff6bc775b953438b75.tar.gz
samba-2d6d6bcb5de87ce0dbce13ff6bc775b953438b75.tar.bz2
samba-2d6d6bcb5de87ce0dbce13ff6bc775b953438b75.zip
talloc: Change the way mksysms work
Make sure we always have a sorted (per file) export file. This way we can directly compare the real export and the check file w/o having to further sort things. Also return error code from abi_checks.sh if warnings were reported
Diffstat (limited to 'lib/talloc/script')
-rwxr-xr-xlib/talloc/script/abi_checks.sh27
-rw-r--r--lib/talloc/script/mksyms.awk19
-rwxr-xr-xlib/talloc/script/mksyms.sh19
3 files changed, 29 insertions, 36 deletions
diff --git a/lib/talloc/script/abi_checks.sh b/lib/talloc/script/abi_checks.sh
index ba60ed003a..66c4e60e45 100755
--- a/lib/talloc/script/abi_checks.sh
+++ b/lib/talloc/script/abi_checks.sh
@@ -33,6 +33,7 @@ LANG=C; export LANG
LC_ALL=C; export LC_ALL
LC_COLLATE=C; export LC_COLLATE
+exit_status=0
script=$0
dir_name=$(dirname ${script})
@@ -58,34 +59,22 @@ 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 | sort| uniq > ${signatures_file_check} 2> /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
+diff -u ${exports_file} ${exports_file_check}
if test "x$?" != "x0" ; then
echo "WARNING: possible ABI change detected in exports!"
+ let exit_status++
else
echo "exports check: OK"
fi
-diff -u ${signatures_file}.sort ${signatures_file_check}.sort
+diff -u ${signatures_file} ${signatures_file_check}
if test "x$?" != "x0" ; then
echo "WARNING: possible ABI change detected in signatures!"
+ let exit_status++
else
echo "signatures check: OK"
fi
+
+exit $exit_status
diff --git a/lib/talloc/script/mksyms.awk b/lib/talloc/script/mksyms.awk
index ca14da0f21..8775faff3f 100644
--- a/lib/talloc/script/mksyms.awk
+++ b/lib/talloc/script/mksyms.awk
@@ -8,25 +8,12 @@
#
BEGIN {
inheader=0;
- current_file="";
- print "#"
- print "# This file is automatically generated with \"make symbols\". DO NOT EDIT "
- print "#"
- print "{"
- print "\tglobal:"
}
END {
- print""
- print "\tlocal: *;"
- print "};"
}
{
- if (FILENAME!=current_file) {
- print "\t\t# The following definitions come from",FILENAME
- current_file=FILENAME
- }
if (inheader) {
if (match($0,"[)][^()]*[;][ \t]*$")) {
inheader = 0;
@@ -42,7 +29,7 @@ END {
/^extern[ \t]+[^()]+[;][ \t]*$/ {
gsub(/[^ \t]+[ \t]+/, "");
sub(/[;][ \t]*$/, "");
- printf "\t\t%s;\n", $0;
+ printf " %s;\n", $0;
next;
}
@@ -61,7 +48,7 @@ END {
sub(/[(].*$/, "");
gsub(/[^ \t]+[ \t]+/, "");
gsub(/^[*]+/, "");
- printf "\t\t%s;\n",$0;
+ printf " %s;\n",$0;
next;
}
@@ -70,7 +57,7 @@ END {
sub(/[(].*$/, "");
gsub(/[^ \t]+[ \t]+/, "");
gsub(/^[*]/, "");
- printf "\t\t%s;\n",$0;
+ printf " %s;\n",$0;
next;
}
diff --git a/lib/talloc/script/mksyms.sh b/lib/talloc/script/mksyms.sh
index 714d55abae..089344f8f0 100755
--- a/lib/talloc/script/mksyms.sh
+++ b/lib/talloc/script/mksyms.sh
@@ -34,7 +34,24 @@ echo creating $symsfile
mkdir -p `dirname $symsfile`
-${awk} -f `dirname $0`/mksyms.awk $proto_src > $symsfile_tmp
+#Write header
+cat > $symsfile_tmp << EOF
+# This file is autogenerated, please DO NOT EDIT
+{
+ global:
+EOF
+
+#loop on each header
+for i in $proto_src; do
+${awk} -f `dirname $0`/mksyms.awk $i | sort >> $symsfile_tmp
+done;
+
+#Write tail
+cat >> $symsfile_tmp << EOF
+
+ local: *;
+};
+EOF
if cmp -s $symsfile $symsfile_tmp 2>/dev/null
then