diff options
author | Thibault Saunier <thibault.saunier@osg.samsung.com> | 2016-09-30 11:35:39 -0300 |
---|---|---|
committer | Thibault Saunier <thibault.saunier@osg.samsung.com> | 2016-09-30 12:57:51 -0300 |
commit | b910ecca68f8a54fa2bf9485f096fc2b796418e4 (patch) | |
tree | d84b417a5f54770dd03e0afb9423c4416a36ceb6 | |
parent | 00d20b044ce7b9340401c25a4b7d06e67ecf2bc0 (diff) |
meson: Setup pre commit hook and fix getpluginsdir for standalone case
-rwxr-xr-x | hooks/pre-commit.hook | 83 | ||||
-rw-r--r-- | meson.build | 3 | ||||
-rw-r--r-- | tests/check/getpluginsdir | 12 |
3 files changed, 93 insertions, 5 deletions
diff --git a/hooks/pre-commit.hook b/hooks/pre-commit.hook new file mode 100755 index 000000000..3c1062b9e --- /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 7778598cc..eee13a3dd 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 102e3c823..aa41ca83a 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(":")) |