Skip to content
Snippets Groups Projects
Commit d7ca213f authored by Thomas Jahns's avatar Thomas Jahns :cartwheel:
Browse files

git hooks: Rely on git-internal mechanism.

parent 5f5c2015
No related branches found
No related tags found
No related merge requests found
......@@ -37,19 +37,10 @@
#
#
all: checklicense.exclusions.pcre shellcheck
all: shellcheck
shellcheck:
for f in * ; do \
if { head -n 1 "$$f" | grep -E -q '^#! *(/bin/bash|/bin/sh|/usr/bin/env bash)$$' ; } ; then \
shellcheck -x "$$f" ; \
fi ; done
CC = gcc
CFLAGS = -O2 -march=native -Wall -Wextra
bre2pcre: bre2pcre.c
$(CC) $(CFLAGS) -o $@ $^ $$(pcre2-config --cflags --libs8)
checklicense.exclusions.pcre: checklicense.exclusions bre2pcre.c
$(MAKE) bre2pcre && ./bre2pcre <$^ >$@
/**
* @copyright Copyright(C) 2023
* @file bre2pcre.c
* Original program by https://stackoverflow.com/users/9952196/shawn Shawn
* provided under CC BY-SA 4.0
* https://creativecommons.org/licenses/by-sa/4.0/
* Adapted from:
* https://stackoverflow.com/questions/76587209/how-to-convert-bre-to-perl-re/76589961#76589961
*
* Compile with:
* gcc -o bre2perl -O2 -march=native -Wall -Wextra bre2perl.c \
* $(pcre2-config --cflags --libs8)
*/
#define _POSIX_C_SOURCE 200809L
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define PCRE2_CODE_UNIT_WIDTH 8
#include <pcre2.h>
int main(void) {
char *line = NULL;
size_t linelength = 0;
ssize_t len;
while ((len = getline(&line, &linelength, stdin)) > 1) {
if (line[len - 1] == '\n') { len -= 1; }
PCRE2_UCHAR *perl_re = NULL;
PCRE2_SIZE re_len = 0;
int rc = pcre2_pattern_convert((PCRE2_SPTR)line, len,
PCRE2_CONVERT_POSIX_BASIC,
&perl_re, &re_len, NULL);
if (rc == 0) {
// There's a PCRE2-specific prefix to patterns that should be removed
printf("%s\n", (const char *)perl_re
+ (strncmp((const char *)perl_re, "(*NUL)", 6) == 0 ? 6 : 0));
pcre2_converted_pattern_free(perl_re);
} else {
PCRE2_UCHAR errmsg[1024];
pcre2_get_error_message(rc, errmsg, sizeof errmsg);
fprintf(stderr, "error converting pattern '%s': %s\n",
line, (char *)errmsg);
return EXIT_FAILURE;
}
}
free(line);
return 0;
}
/*
* Local Variables:
* c-basic-offset: 2
* coding: utf-8
* indent-tabs-mode: nil
* show-trailing-whitespace: t
* require-trailing-newline: t
* End:
*/
......@@ -45,35 +45,10 @@
#
#
REPOTOP=$(git rev-parse --show-toplevel)
if echo '0' | grep -q -z '' 2>/dev/null ; then
# grep accepts -z option, no need to do anything
:
elif echo '0' | ggrep -q -z '' 2>/dev/null ; then
# rely on GNU grep if available by another name,
# e.g. on macOS with brew or ports
alias grep=ggrep
elif command -v perl >/dev/null \
&& { [[ "${REPOTOP}/scripts/git-hooks/checklicense.exclusions" \
-ot "${REPOTOP}/scripts/git-hooks/checklicense.exclusions.pcre" \
]] || ${MAKE-make} -C "${REPOTOP}/scripts/git-hooks" \
checklicense.exclusions.pcre ; }; then
# BREs could be translated to Perl, use that
grep()
{
perl -w -e 'use strict;
my ($excl, $exclfh) = substr($ARGV[2], 7) . '"'"'.pcre'"'"';
open($exclfh, '"'<'"', $excl) or die;
my @exclpat = map { chomp ; qr{$_} } <$exclfh>;
$/ = "\0";
while (my $line = <STDIN>) {
next if (grep { substr($line, 0, -1) =~ $_ } @exclpat);
print($line);
}' -- "$@"
}
fi
license_missing=$( \
git ls-files -z \
| grep -z -v --file="${REPOTOP}/scripts/git-hooks/checklicense.exclusions" \
sed -e '/^[^/]/s/^/:!:/;/^\//s/^\//:!\/:/' \
"${REPOTOP}/scripts/git-hooks/checklicense.exclusions" \
| xargs git ls-files -z . \
| xargs -0 "$(command -v grep)" -L 'Copyright\|@copyright')
if [ -n "$license_missing" ]; then
echo "Files missing a license statement: $license_missing"
......
^README$
^\.gitlab-ci\.yml$
^\.gitignore$
/\.gitignore$
^include/config\.h\.in$
^src/m4\.deps$
^src/mpi-workarounds/.*_wrap\.c$
^src/pkgconfig/yaxt\.pc\.in$
^src/pkgconfig/yaxt_c\.pc\.in$
^src/xt_slice_c_loc\.inc$
^include/cfortran\.h$
^AUTHORS$
^config/checkdoc/.*\.txt$
^config/checkpatch/mpich_3\.4_yaksa_hindexed\.patch$
^config/checkpatch/mpich_3\.x_unweighted\.patch$
^config/checkpatch/mpich_neighbor_alltoallw\.patch$
^config/checkpatch/mpich_zero_size_contiguous\.patch$
^config/checkpatch/openmpi_datatype\.opal_datatype_add\.c\.patch$
^config/checkpatch/openmpi_datatype\.opal_datatype_optimize\.c\.patch$
^config/checksrc/mpich_3\.4_yaksa_hindexed\.c$
^config/checksrc/pe5228_iv32584\.c$
^contrib/00nagfor-libtool-patch/nagfor-libtool.*\.patch$
^contrib/01aix-deplib-rpath-patch/aix-deplib-libtool\.patch$
^contrib/02nagfor53-shared-patch/nagfor53-shared\.patch$
^contrib/03ltmain-ld-groups-patch/.*\.patch$
^contrib/04ltmain-xlinker-patch/.*\.patch$
^contrib/05macos-nagfor-patch/.*\.patch$
^contrib/06ltmain_nag_pthread-patch/.*\.patch$
^contrib/07ltmain-early-xcompile-patch/.*\.patch$
^contrib/08ltmain-parallel-printf-patch/.*\.patch$
^contrib/09debian-no-overlink-patch/.*\.patch$
^contrib/10ltmain-ld-positional-wl-patch/.*\.patch$
^contrib/libtool-patch-gen\.sh$
^contrib/.*/README\.txt$
^contrib/.*/README$
^doc/Doxyfile\.in$
^doc/README\.codingconventions$
^doc/README\.build$
^doc/src/.*\.dox$
^doc/styleguide\.txt$
.*\.png$
^doc/images/.*\.svg$
^doc/unitdoc/doxygen_extra\.css$
^doc/unitdoc/footer\.htmli$
^include/xpfpa\.h$
^include/xpfpa_func\.h$
^include/f77/fc_feature_defs\.inc\.in$
^include/fc_feature_defs\.inc\.in$
^m4/acx_prog_fc_v_output\.m4$
^m4/acx_sl_fortran_form_and_fpp\.m4$
^m4/float_precision\.m4$
^m4/forloop\.m4$
^m4/forloop2\.m4$
^perf/core$
^src/main_doc\.dox$
^src/solver/howto\.dox$
^scripts/checklicense\.exclusions$
^scripts/git-hooks/checklicense\.exclusions$
^scripts/git-hooks/checklicense\.exclusions\.pcre$
^scripts/git-hooks/non-problems\.txt$
^scripts/build-makef90depends-dist\.sh$
^tests/core$
^tests/xt_slice_c_loc\.inc$
^ppm\.settings\.in$
/README
/.gitlab-ci.yml
.gitignore
/include/config.h.in
/src/m4.deps
/src/mpi-workarounds/*_wrap.c
/src/pkgconfig/yaxt.pc.in
/src/pkgconfig/yaxt_c.pc.in
/src/xt_slice_c_loc.inc
/include/cfortran.h
/AUTHORS
/config/checkdoc/*.txt
/config/checkpatch/mpich_3.4_yaksa_hindexed.patch
/config/checkpatch/mpich_3.x_unweighted.patch
/config/checkpatch/mpich_neighbor_alltoallw.patch
/config/checkpatch/mpich_zero_size_contiguous.patch
/config/checkpatch/openmpi_datatype.opal_datatype_add.c.patch$
/config/checkpatch/openmpi_datatype.opal_datatype_optimize.c.patch
/config/checksrc/mpich_3.4_yaksa_hindexed.c
/config/checksrc/pe5228_iv32584.c
/contrib/00nagfor-libtool-patch/nagfor-libtool*.patch
/contrib/01aix-deplib-rpath-patch/aix-deplib-libtool.patch
/contrib/02nagfor53-shared-patch/nagfor53-shared.patch
/contrib/03ltmain-ld-groups-patch/*.patch
/contrib/04ltmain-xlinker-patch/*.patch
/contrib/05macos-nagfor-patch/*.patch
/contrib/06ltmain_nag_pthread-patch/*.patch
/contrib/07ltmain-early-xcompile-patch/*.patch
/contrib/08ltmain-parallel-printf-patch/*.patch
/contrib/09debian-no-overlink-patch/*.patch
/contrib/10ltmain-ld-positional-wl-patch/*.patch
/contrib/libtool-patch-gen.sh
/contrib/*/README.txt
/contrib/*/README
/doc/Doxyfile.in
/doc/README.codingconventions
/doc/README.build
/doc/src/*.dox
/doc/styleguide.txt
*.png
/doc/images/*.svg
/doc/unitdoc/doxygen_extra.css
/doc/unitdoc/footer.htmli
/include/xpfpa.h
/include/xpfpa_func.h
/include/f77/fc_feature_defs.inc.in
/include/fc_feature_defs.inc.in
/m4/acx_prog_fc_v_output.m4
/m4/acx_sl_fortran_form_and_fpp.m4
/m4/float_precision.m4
/m4/forloop.m4
/m4/forloop2.m4
/perf/core
/src/main_doc.dox
/src/solver/howto.dox
/scripts/git-hooks/checklicense.exclusions
/scripts/git-hooks/checklicense.exclusions.glob
/scripts/git-hooks/non-problems.txt
/scripts/build-makef90depends-dist.sh
/tests/core
/tests/xt_slice_c_loc.inc
/ppm.settings.in
/perf/core
/tests/core
^README$
^\.gitlab-ci\.yml$
^\.gitignore$
/\.gitignore$
^include/config\.h\.in$
^src/m4\.deps$
^src/mpi-workarounds/.*_wrap\.c$
^src/pkgconfig/yaxt\.pc\.in$
^src/pkgconfig/yaxt_c\.pc\.in$
^src/xt_slice_c_loc\.inc$
^include/cfortran\.h$
^AUTHORS$
^config/checkdoc/.*\.txt$
^config/checkpatch/mpich_3\.4_yaksa_hindexed\.patch$
^config/checkpatch/mpich_3\.x_unweighted\.patch$
^config/checkpatch/mpich_neighbor_alltoallw\.patch$
^config/checkpatch/mpich_zero_size_contiguous\.patch$
^config/checkpatch/openmpi_datatype\.opal_datatype_add\.c\.patch$
^config/checkpatch/openmpi_datatype\.opal_datatype_optimize\.c\.patch$
^config/checksrc/mpich_3\.4_yaksa_hindexed\.c$
^config/checksrc/pe5228_iv32584\.c$
^contrib/00nagfor-libtool-patch/nagfor-libtool.*\.patch$
^contrib/01aix-deplib-rpath-patch/aix-deplib-libtool\.patch$
^contrib/02nagfor53-shared-patch/nagfor53-shared\.patch$
^contrib/03ltmain-ld-groups-patch/.*\.patch$
^contrib/04ltmain-xlinker-patch/.*\.patch$
^contrib/05macos-nagfor-patch/.*\.patch$
^contrib/06ltmain_nag_pthread-patch/.*\.patch$
^contrib/07ltmain-early-xcompile-patch/.*\.patch$
^contrib/08ltmain-parallel-printf-patch/.*\.patch$
^contrib/09debian-no-overlink-patch/.*\.patch$
^contrib/10ltmain-ld-positional-wl-patch/.*\.patch$
^contrib/libtool-patch-gen\.sh$
^contrib/.*/README\.txt$
^contrib/.*/README$
^doc/Doxyfile\.in$
^doc/README\.codingconventions$
^doc/README\.build$
^doc/src/.*\.dox$
^doc/styleguide\.txt$
.*\.png$
^doc/images/.*\.svg$
^doc/unitdoc/doxygen_extra\.css$
^doc/unitdoc/footer\.htmli$
^include/xpfpa\.h$
^include/xpfpa_func\.h$
^include/f77/fc_feature_defs\.inc\.in$
^include/fc_feature_defs\.inc\.in$
^m4/acx_prog_fc_v_output\.m4$
^m4/acx_sl_fortran_form_and_fpp\.m4$
^m4/float_precision\.m4$
^m4/forloop\.m4$
^m4/forloop2\.m4$
^perf/core$
^src/main_doc\.dox$
^src/solver/howto\.dox$
^scripts/checklicense\.exclusions$
^scripts/git-hooks/checklicense\.exclusions$
^scripts/git-hooks/checklicense\.exclusions\.pcre$
^scripts/git-hooks/non-problems\.txt$
^scripts/build-makef90depends-dist\.sh$
^tests/core$
^tests/xt_slice_c_loc\.inc$
^ppm\.settings\.in$
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment