From 2d6d6bcb5de87ce0dbce13ff6bc775b953438b75 Mon Sep 17 00:00:00 2001 From: Simo Sorce Date: Wed, 14 Oct 2009 10:20:28 -0400 Subject: 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 --- lib/talloc/script/abi_checks.sh | 27 ++++++++------------------- lib/talloc/script/mksyms.awk | 19 +++---------------- lib/talloc/script/mksyms.sh | 19 ++++++++++++++++++- 3 files changed, 29 insertions(+), 36 deletions(-) (limited to 'lib/talloc/script') 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 -- cgit From 8e6df560b74d7e9b94dd47625de56bc1dc0bc6d7 Mon Sep 17 00:00:00 2001 From: Simo Sorce Date: Wed, 14 Oct 2009 10:55:11 -0400 Subject: talloc: Move release script under /script too --- lib/talloc/script/release-script.sh | 48 +++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100755 lib/talloc/script/release-script.sh (limited to 'lib/talloc/script') diff --git a/lib/talloc/script/release-script.sh b/lib/talloc/script/release-script.sh new file mode 100755 index 0000000000..6b6c0e7aad --- /dev/null +++ b/lib/talloc/script/release-script.sh @@ -0,0 +1,48 @@ +#!/bin/bash + +if [ "$1" = "" ]; then + echo "Please provide version string, eg: 1.2.0" + exit 1 +fi + +if [ ! -d "lib/talloc" ]; then + echo "Run this script from the samba base directory." + exit 1 +fi + +git clean -f -x -d lib/talloc +git clean -f -x -d lib/replace + +curbranch=`git-branch |grep "^*" | tr -d "* "` + +version=$1 +strver=`echo ${version} | tr "." "-"` + +# Checkout the release tag +git branch -f talloc-release-script-${strver} talloc-${strver} +if [ ! "$?" = "0" ]; then + echo "Unable to checkout talloc-${strver} release" + exit 1 +fi + +git checkout talloc-release-script-${strver} + +# Test configure agrees with us +confver=`grep "^AC_INIT" lib/talloc/configure.ac | tr -d "AC_INIT(talloc, " | tr -d ")"` +if [ ! "$confver" = "$version" ]; then + echo "Wrong version, requested release for ${version}, found ${confver}" + exit 1 +fi + +# Now build tarball +cp -a lib/talloc talloc-${version} +cp -a lib/replace talloc-${version}/libreplace +pushd talloc-${version} +./autogen.sh +popd +tar cvzf talloc-${version}.tar.gz talloc-${version} +rm -fr talloc-${version} + +#Clean up +git checkout $curbranch +git branch -d talloc-release-script-${strver} -- cgit From 8fb483b2964f1222c013df42ba8be544269da612 Mon Sep 17 00:00:00 2001 From: Simo Sorce Date: Wed, 14 Oct 2009 10:57:17 -0400 Subject: talloc: Make abi checks in release script Make always sure the exports and signature files are up to date before shipping a release. --- lib/talloc/script/release-script.sh | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'lib/talloc/script') diff --git a/lib/talloc/script/release-script.sh b/lib/talloc/script/release-script.sh index 6b6c0e7aad..4804f6ff58 100755 --- a/lib/talloc/script/release-script.sh +++ b/lib/talloc/script/release-script.sh @@ -10,6 +10,16 @@ if [ ! -d "lib/talloc" ]; then exit 1 fi +# Check exports and signatures are up to date +pushd lib/talloc +./script/abi_checks.sh talloc talloc.h +abicheck=$? +popd +if [ ! "$abicheck" = "0" ]; then + echo "ERROR: ABI Checks produced warnings!" + exit 1 +fi + git clean -f -x -d lib/talloc git clean -f -x -d lib/replace -- cgit