<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Feb 2, 2015 at 11:48 PM, Peter Hutterer <span dir="ltr"><<a href="mailto:peter.hutterer@who-t.net" target="_blank">peter.hutterer@who-t.net</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5">On Mon, Feb 02, 2015 at 01:16:23PM +0100, Marek Chalupa wrote:<br>
> This patch adds simple script that compares libinput.sym file to the<br>
> functions that are marked by LIBINPUT_EXPORT. This script is added<br>
> to make check target.<br>
><br>
> v2. use noinst_SCRIPTS instead of dummy target<br>
>     drop .sh suffix<br>
>     generate the script from .in file<br>
>     use -u swich when running diff<br>
><br>
> Signed-off-by: Marek Chalupa <<a href="mailto:mchqwerty@gmail.com">mchqwerty@gmail.com</a>><br>
> ---<br>
>  test/Makefile.am          |  8 +++++++-<br>
>  test/<a href="http://symbols-leak-test.in" target="_blank">symbols-leak-test.in</a> | 20 ++++++++++++++++++++<br>
>  2 files changed, 27 insertions(+), 1 deletion(-)<br>
>  create mode 100755 test/<a href="http://symbols-leak-test.in" target="_blank">symbols-leak-test.in</a><br>
><br>
> diff --git a/test/Makefile.am b/test/Makefile.am<br>
> index 5b9c7ab..51a0798 100644<br>
> --- a/test/Makefile.am<br>
> +++ b/test/Makefile.am<br>
> @@ -50,7 +50,13 @@ build_tests = \<br>
>       test-build-std-gnuc90<br>
><br>
>  noinst_PROGRAMS = $(build_tests) $(run_tests)<br>
> -TESTS = $(run_tests)<br>
> +noinst_SCRIPTS = symbols-leak-test<br>
> +TESTS = $(run_tests) symbols-leak-test<br>
> +<br>
> +symbols-leak-test: <a href="http://symbols-leak-test.in" target="_blank">symbols-leak-test.in</a><br>
> +     $(AM_V_GEN)$(SED) \<br>
> +             -e 's|@top_srcdir[@]|$(top_srcdir)|g' $< > $@<br>
> +     chmod +x $@<br>
<br>
</div></div>this shouldn't be needed, if you add test/symbols-leak-test to the<br>
AC_CONFIG_FILE automake will do the sed for you (see <a href="http://libinput.doxygen.in" target="_blank">libinput.doxygen.in</a> for<br>
example).  you can add the chmod +x there too.<br>
<a href="http://www.gnu.org/software/automake/manual/html_node/Scripts.html" target="_blank">http://www.gnu.org/software/automake/manual/html_node/Scripts.html</a></blockquote><div><br></div><div>Thanks, didn't know about this option. I inspired myself by Weston, where the sed is used.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
<div><div class="h5"><br>
>  .NOTPARALLEL:<br>
><br>
> diff --git a/test/<a href="http://symbols-leak-test.in" target="_blank">symbols-leak-test.in</a> b/test/<a href="http://symbols-leak-test.in" target="_blank">symbols-leak-test.in</a><br>
> new file mode 100755<br>
> index 0000000..98f3fd9<br>
> --- /dev/null<br>
> +++ b/test/<a href="http://symbols-leak-test.in" target="_blank">symbols-leak-test.in</a><br>
> @@ -0,0 +1,20 @@<br>
> +#!/bin/sh<br>
> +<br>
> +### simple check for exported symbols<br>
> +<br>
> +# make sure the paths are alright<br>
> +cd `dirname $0`<br>
> +<br>
> +cat @top_srcdir@/src/libinput.sym | \<br>
> +     grep '^\s\+libinput_.*' | \<br>
> +     sed -e 's/^\s\+\(.*\);/\1/' |  sort > libinput.sym.symbols<br>
> +cat @top_srcdir@/src/*.c | \<br>
> +     grep LIBINPUT_EXPORT -A 1 | grep '^libinput_.*' | \<br>
> +     sed -e 's/(.*//' | sort > exported.symbols<br>
> +<br>
> +diff -a -u libinput.sym.symbols exported.symbols<br>
> +CODE=$?<br>
> +<br>
> +rm libinput.sym.symbols exported.symbols<br>
> +<br>
> +exit $CODE<br>
> --<br>
> 2.2.2<br>
<br>
</div></div>have you thought about using anonymous pipes/process substitution for this?<br>
that would make this a simpler and remove the need for temp files though it<br>
does add a requirement on bash over sh. we can live with that, I reckon.<br></blockquote><div><br></div><div>Nope, I haven't. Will do it this way. </div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
basically the approach is<br>
  diff <(echo foo) <(echo bar)<br>
<a href="http://en.wikipedia.org/wiki/Process_substitution" target="_blank">http://en.wikipedia.org/wiki/Process_substitution</a><br>
<br>
so the script after substitution becomes:<br>
<br>
diff -a -u \<br>
        <(cat ../src/libinput.sym | \<br>
            grep '^\s\+libinput_.*' | \<br>
            sed -e 's/^\s\+\(.*\);/\1/' |  sort) \<br>
        <(cat ../src/*.c | \<br>
<span class="">            grep LIBINPUT_EXPORT -A 1 | grep '^libinput_.*' | \<br>
</span>            sed -e 's/(.*//' | sort)<br>
<br>
Cheers,<br>
   Peter<br></blockquote><div><br></div><div>Thanks,</div><div>Marek </div></div><br></div></div>