addition to previous commit, properly implement make lint.
authorng0 <ng0@n0.is>
Sat, 16 Nov 2019 13:43:33 +0000 (13:43 +0000)
committerng0 <ng0@n0.is>
Sat, 16 Nov 2019 13:43:33 +0000 (13:43 +0000)
Makefile.am
configure.ac

index e30ea1099865359d5039d498169921bdfbc867bc..360a2e4c3c4491001d49d11d0fa201b62aec6d0e 100644 (file)
@@ -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
index 14c2786ef7b6a10c1d6cf4a404b48961471bd1d5..6f3b5f1bcd0f296974a9ab07969447ccbe6a1a8b 100644 (file)
@@ -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