From: Thibault Saunier Date: Fri, 30 Sep 2016 14:35:39 +0000 (-0300) Subject: meson: Setup pre commit hook and fix getpluginsdir for standalone case X-Git-Tag: 1.19.3~509^2~2505 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b910ecca68f8a54fa2bf9485f096fc2b796418e4;p=platform%2Fupstream%2Fgstreamer.git meson: Setup pre commit hook and fix getpluginsdir for standalone case --- diff --git a/hooks/pre-commit.hook b/hooks/pre-commit.hook new file mode 100755 index 0000000..3c1062b --- /dev/null +++ b/hooks/pre-commit.hook @@ -0,0 +1,83 @@ +#!/bin/sh +# +# Check that the code follows a consistant code style +# + +# Check for existence of indent, and error out if not present. +# On some *bsd systems the binary seems to be called gnunindent, +# so check for that first. + +version=`gnuindent --version 2>/dev/null` +if test "x$version" = "x"; then + version=`gindent --version 2>/dev/null` + if test "x$version" = "x"; then + version=`indent --version 2>/dev/null` + if test "x$version" = "x"; then + echo "GStreamer git pre-commit hook:" + echo "Did not find GNU indent, please install it before continuing." + exit 1 + else + INDENT=indent + fi + else + INDENT=gindent + fi +else + INDENT=gnuindent +fi + +case `$INDENT --version` in + GNU*) + ;; + default) + echo "GStreamer git pre-commit hook:" + echo "Did not find GNU indent, please install it before continuing." + echo "(Found $INDENT, but it doesn't seem to be GNU indent)" + exit 1 + ;; +esac + +INDENT_PARAMETERS="--braces-on-if-line \ + --case-brace-indentation0 \ + --case-indentation2 \ + --braces-after-struct-decl-line \ + --line-length80 \ + --no-tabs \ + --cuddle-else \ + --dont-line-up-parentheses \ + --continuation-indentation4 \ + --honour-newlines \ + --tab-size8 \ + --indent-level2 \ + --leave-preprocessor-space" + +echo "--Checking style--" +for file in `git diff-index --cached --name-only HEAD --diff-filter=ACMR| grep "\.c$"` ; do + # nf is the temporary checkout. This makes sure we check against the + # revision in the index (and not the checked out version). + nf=`git checkout-index --temp ${file} | cut -f 1` + newfile=`mktemp /tmp/${nf}.XXXXXX` || exit 1 + $INDENT ${INDENT_PARAMETERS} \ + $nf -o $newfile 2>> /dev/null + # FIXME: Call indent twice as it tends to do line-breaks + # different for every second call. + $INDENT ${INDENT_PARAMETERS} \ + $newfile 2>> /dev/null + diff -u -p "${nf}" "${newfile}" + r=$? + rm "${newfile}" + rm "${nf}" + if [ $r != 0 ] ; then +echo "=================================================================================================" +echo " Code style error in: $file " +echo " " +echo " Please fix before committing. Don't forget to run git add before trying to commit again. " +echo " If the whole file is to be committed, this should work (run from the top-level directory): " +echo " " +echo " gst-indent $file; git add $file; git commit" +echo " " +echo "=================================================================================================" + exit 1 + fi +done +echo "--Checking style pass--" diff --git a/meson.build b/meson.build index 7778598..eee13a3 100644 --- a/meson.build +++ b/meson.build @@ -246,3 +246,6 @@ subdir('po') configure_file(input : 'config.h.meson', output : 'config.h', configuration : cdata) + +python3 = find_program('python3') +run_command(python3, '-c', 'import shutil; shutil.copy("hooks/pre-commit.hook", ".git/hooks/pre-commit")') diff --git a/tests/check/getpluginsdir b/tests/check/getpluginsdir index 102e3c8..aa41ca8 100644 --- a/tests/check/getpluginsdir +++ b/tests/check/getpluginsdir @@ -16,10 +16,12 @@ for i in range(0, len(args), 2): res += ':' + path else: try: - res += ':' + subprocess.check_output(['pkg-config', - '--variable=pluginsdir', - pkg_name]).decode() - except subprocess.CalledProcessError: - exit(1) + res += ':' + subprocess.check_output([ + 'pkg-config', '--variable=pluginsdir', + pkg_name]).decode().replace("\n", "") + except subprocess.CalledProcessError as e: + # Probably means there is no .pc file for the module + # and it should hopefully no be too bad. + pass print(res.strip(":"))