From be91802c1a57c0d37247a15153958cd9bb2155d1 Mon Sep 17 00:00:00 2001 From: ng0 Date: Sat, 16 Nov 2019 13:43:33 +0000 Subject: [PATCH] addition to previous commit, properly implement make lint. --- Makefile.am | 52 +++++++++++++++++++++++++++++++++++++++++++++++++--- configure.ac | 30 +++++++++++++++++++++--------- 2 files changed, 70 insertions(+), 12 deletions(-) diff --git a/Makefile.am b/Makefile.am index e30ea1099..360a2e4c3 100644 --- a/Makefile.am +++ b/Makefile.am @@ -12,9 +12,6 @@ endif if DOCUMENTATION SUBDIRS += doc endif -if HAVE_EXPERIMENTAL - SUBDIRS += lint -endif # only manpages, needs "doc" subdir if INCLUDE_MANPAGES @@ -41,12 +38,61 @@ ACLOCAL_AMFLAGS = -I m4 if HAVE_UNCRUSTIFY_BINARY MCRUSTIFY = find $(top_srcdir) -type f -name '*.c' -or -name '*.h' -print0 | xargs -0 uncrustify -c $(top_srcdir)/contrib/uncrustify.cfg -q --replace --no-backup 2>&1 || true +else +MCRUSTIFY = echo "crustify: skipped" endif if HAVE_YAPF_BINARY MYAPF = find $(top_srcdir) -type f -name '*.py' -or -name '*.py.in' -print0 | xargs -0 $(YAPF_BINARY) -i 2>&1 || true +else +MYAPF = echo "yapf: skipped" endif pretty: $(MCRUSTIFY) $(MYAPF) + +lint: check-bashisms check-texinfo check-man check-python + +check-bashisms: +if HAVE_CHECKBASHISMS + printf "If checkbashisms.pl is in PATH, run checkbashism on all .sh files.\n" + find '.' -type f ! -path '*/.*' ! -path '*/_*' -name '*.sh' -print0 | xargs -0 checkbashisms.pl -f 2>&1 | tee $(srcdir)/bashism.log || true +else + printf "No checkbashisms in PATH, skipped" +endif + +check-man: + printf "Running lint-man.sh in doc/man.\n" + @cd $(top_srcdir)/doc/man ; ../../contrib/scripts/lint/lint-man.sh || true + +check-python: + printf "Running flake8 and 2to3 if detected.\n" + $(top_srcdir)/contrib/scripts/lint/lint-python.sh || true + +# exception to add: ignore license files. +# exception to add: uref's can go above 79 chars. +check-texinfo: + printf "Running basic texinfo linters\n" + printf "...lines containing tabstops?\n" 2>&1 | tee $(top_srcdir)/doc/handbook/texinfo_handbook.log || true + printf "...lines containing tabstops?\n" 2>&1 | tee $(top_srcdir)/doc/tutorial/texinfo_tutorial.log || true + @cd $(top_srcdir)/doc/handbook ; find . -type f ! -path '*/.*' -name '*.texi' -print0 | xargs -0 awk '/\t/ {print FILENAME":"NR":"$$0}' > $(srcdir)/texinfo_handbook.log || true + @cd $(top_srcdir)/doc/tutorial ; find . -type f ! -path '*/.*' -name '*.texi' -print0 | xargs -0 awk '/\t/ {print FILENAME":"NR":"$$0}' > $(srcdir)/texinfo_tutorial.log || true + printf "...line length over 79 chars?\n" 2>&1 | tee $(top_srcdir)/doc/handbook/texinfo_handbook.log || true + @cd $(top_srcdir)/doc/handbook ; find . -type f ! -path '*/.*' -name '*.texi' -print0 | xargs -0 awk 'length>79 {print FILENAME":"NR":"$$0}' > $(srcdir)/texinfo_handbook.log || true + printf "...line length over 79 chars?\n" 2>&1 | tee $(top_srcdir)/doc/tutorial/texinfo_tutorial.log || true + @cd $(top_srcdir)/doc/tutorial ; find . -type f ! -path '*/.*' -name '*.texi' -print0 | xargs -0 awk 'length>79 {print FILENAME":"NR":"$$0}' > $(srcdir)/texinfo_tutorial.log || true + printf "...lines containing macros incompatible with old makeinfo?\n" 2>&1 | tee -a $(top_srcdir)/doc/handbook/texinfo_handbook.log || true + @cd $(top_srcdir)/doc/handbook ; find . -type f ! -path '*/.*' -name '*.texi' -print0 | xargs -0 awk '/@geq\{\}/ {print FILENAME":"NR":"$$0}' >> $(srcdir)/texinfo_handbook.log || true + printf "...lines containing macros incompatible with old makeinfo?\n" 2>&1 | tee -a $(top_srcdir)/doc/tutorial/texinfo_tutorial.log || true + @cd $(top_srcdir)/doc/tutorial ; find . -type f ! -path '*/.*' -name '*.texi' -print0 | xargs -0 awk '/@geq\{\}/ {print FILENAME":"NR":"$$0}' >> $(srcdir)/texinfo_tutorial.log || true + printf "...lines containing macros incompatible with texi2mdoc?\n" 2>&1 | tee -a $(top_srcdir)/doc/handbook/texinfo_handbook.log || true + @cd $(top_srcdir)/doc/handbook ; find . -type f ! -path '*/.*' -name '*.texi' -print0 | xargs -0 awk '/@footnote\{/ {print FILENAME":"NR":"$$0}' >> $(srcdir)/texinfo_handbook.log || true + printf "...lines containing macros incompatible with texi2mdoc?\n" 2>&1 | tee -a $(top_srcdir)/doc/tutorial/texinfo_tutorial.log || true + @cd $(top_srcdir)/doc/tutorial ; find . -type f ! -path '*/.*' -name '*.texi' -print0 | xargs -0 awk '/@footnote\{/ {print FILENAME":"NR":"$$0}' >> $(srcdir)/texinfo_tutorial.log || true + printf "...lines telling us what is left TODO or to fix?\n" 2>&1 | tee -a $(top_srcdir)/doc/handbook/texinfo_handbook.log || true + @cd $(top_srcdir)/doc/handbook ; find . -type f ! -path '*/.*' -name '*.texi' -print0 | xargs -0 awk '/TODO/ {print FILENAME":"NR":"$$0}' >> $(srcdir)/texinfo_handbook.log || true + @cd $(top_srcdir)/doc/handbook ; find . -type f ! -path '*/.*' -name '*.texi' -print0 | xargs -0 awk '/XXX/ {print FILENAME":"NR":"$$0}' >> $(srcdir)/texinfo_handbook.log || true + printf "...lines telling us what is left TODO or to fix?\n" 2>&1 | tee -a $(top_srcdir)/doc/tutorial/texinfo_tutorial.log || true + @cd $(top_srcdir)/doc/tutorial ; find . -type f ! -path '*/.*' -name '*.texi' -print0 | xargs -0 awk '/TODO/ {print FILENAME":"NR":"$$0}' >> $(srcdir)/texinfo_tutorial.log || true + @cd $(top_srcdir)/doc/tutorial ; find . -type f ! -path '*/.*' -name '*.texi' -print0 | xargs -0 awk '/XXX/ {print FILENAME":"NR":"$$0}' >> $(srcdir)/texinfo_tutorial.log || true diff --git a/configure.ac b/configure.ac index 14c2786ef..6f3b5f1bc 100644 --- a/configure.ac +++ b/configure.ac @@ -222,10 +222,17 @@ AC_CHECK_LIB(c, getloadavg, AC_DEFINE(HAVE_GETLOADAVG,1,[getloadavg supported])) AC_CHECK_PROG(VAR_GETOPT_BINARY, getopt, true, false) AM_CONDITIONAL(HAVE_GETOPT_BINARY, $VAR_GETOPT_BINARY) +AC_CHECK_PROGS(PKG_CONFIG, [pkgconf, pkg-config], false) +AM_CONDITIONAL(HAVE_PKG_CONFIG, test x$PKG_CONFIG != xfalse) + AC_CHECK_PROG(VAR_SSH_BINARY, ssh, true, false) AM_CONDITIONAL(HAVE_SSH_BINARY, $VAR_SSH_BINARY) -AM_CONDITIONAL(HAVE_SSH_KEY, ssh -D 12345 -o "BatchMode yes" -o "UserKnownHostsFile /tmp/gnunet_test_cosks_ssh_garbage" -o "StrictHostKeyChecking no" 127.0.0.1 echo -n) -rm -f /tmp/gnunet_test_cosks_ssh_garbage +AC_MSG_CHECKING(for SSH key) + AM_CONDITIONAL(HAVE_SSH_KEY, ssh -D 12345 -o "BatchMode yes" -o "UserKnownHostsFile /tmp/gnunet_test_cosks_ssh_garbage" -o "StrictHostKeyChecking no" 127.0.0.1 echo -n) + if test -f /tmp/gnunet_test_cosks_ssh_garbage; then + rm -f /tmp/gnunet_test_cosks_ssh_garbage + fi + # autotools' m4 for python has no maximum version! # python3.4 - python3.8 for tests (3.8 unchecked) @@ -316,6 +323,10 @@ AS_IF([test x"$VAR_UPNPC_BINARY" != x"false"], [AC_MSG_WARN([warning: 'upnpc' binary not found.])]) +# checkbashisms +AC_CHECK_PROGS(CHECKBASHISMS_BINARY, [checkbashisms checkbashisms.pl], false) +AM_CONDITIONAL(HAVE_CHECKBASHISMS, test x$CHECKBASHISMS_BINARY != xfalse) + # uncrustify # TODO: maybe add flag to pass location AC_CHECK_PROG(UNCRUSTIFY_BINARY, uncrustify, true) @@ -1035,7 +1046,7 @@ AS_IF([test x$ltdl = x1], [ AC_MSG_RESULT([libltdl found]) ],[ - AC_MSG_ERROR([GNUnet requires libltdl (from GNU libtool), try installing libltdl-dev]) + AC_MSG_ERROR([GNUnet requires libltdl (from GNU libtool).]) ]) # restore LIBS LIBS=$SAVE_LIBS @@ -1106,8 +1117,7 @@ AS_IF([test x$my_with_libidn2 = x1], [Define to 1 if you have 'libidn2' (-lidn2).])], [MISSING_DEPS="${MISSING_DEPS}${MISSING_SEP}libidn2" MISSING_SEP=", "])]) -AM_CONDITIONAL(HAVE_LIBIDN2, - test x$working_libidn2 = x1) +AM_CONDITIONAL(HAVE_LIBIDN2, test x$working_libidn2 = x1) AS_IF([test x$working_libidn2 = x0], [AS_IF([test x$my_with_libidn = x1], [AC_MSG_NOTICE([Checking for libidn]) @@ -1261,9 +1271,9 @@ AC_SUBST(SQLITE_LDFLAGS) LDFLAGS=$SAVE_LDFLAGS CPPFLAGS=$SAVE_CPPFLAGS -# test for postgres +# test for postgres: postgres=false -# even running the check for postgres breaks emscripten ... +# even running the check for postgres breaks emscripten AS_IF([test "$taler_only" != yes], [AX_LIB_POSTGRESQL([9.5], [CPPFLAGS="$CPPFLAGS $POSTGRESQL_CPPFLAGS" @@ -1271,8 +1281,11 @@ AS_IF([test "$taler_only" != yes], postgres=true) ], [AC_MSG_RESULT([no postgres])])]) -AM_CONDITIONAL(HAVE_POSTGRESQL, test x$postgres = xtrue) +AM_CONDITIONAL(HAVE_POSTGRESQL, test x$postgres = xtrue) +AS_IF([test "x$postgres" = xtrue], + [AC_DEFINE([HAVE_POSTGRESQL],[1],[Have PostgreSQL])], + [AC_DEFINE([HAVE_POSTGRESQL],[0],[Lacking PostgreSQL])]) LDFLAGS=$SAVE_LDFLAGS CPPFLAGS=$SAVE_CPPFLAGS @@ -1781,7 +1794,6 @@ doc/man/Makefile doc/doxygen/Makefile doc/handbook/Makefile doc/tutorial/Makefile -lint/Makefile m4/Makefile po/Makefile.in src/Makefile -- 2.25.1