selftests, bpftool: Add bpftool (and eBPF helpers) documentation build
authorQuentin Monnet <quentin@isovalent.com>
Wed, 9 Sep 2020 16:22:51 +0000 (17:22 +0100)
committerAlexei Starovoitov <ast@kernel.org>
Thu, 10 Sep 2020 18:02:45 +0000 (11:02 -0700)
eBPF selftests include a script to check that bpftool builds correctly
with different command lines. Let's add one build for bpftool's
documentation so as to detect errors or warning reported by rst2man when
compiling the man pages. Also add a build to the selftests Makefile to
make sure we build bpftool documentation along with bpftool when
building the selftests.

This also builds and checks warnings for the man page for eBPF helpers,
which is built along bpftool's documentation.

This change adds rst2man as a dependency for selftests (it comes with
Python's "docutils").

v2:
- Use "--exit-status=1" option for rst2man instead of counting lines
  from stderr.
- Also build bpftool as part as the selftests build (and not only when
  the tests are actually run).

Signed-off-by: Quentin Monnet <quentin@isovalent.com>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Acked-by: Andrii Nakryiko <andriin@fb.com>
Link: https://lore.kernel.org/bpf/20200909162251.15498-3-quentin@isovalent.com
tools/testing/selftests/bpf/Makefile
tools/testing/selftests/bpf/test_bpftool_build.sh

index 65d3d9a..05798c2 100644 (file)
@@ -176,6 +176,11 @@ $(DEFAULT_BPFTOOL): $(wildcard $(BPFTOOLDIR)/*.[ch] $(BPFTOOLDIR)/Makefile)    \
        $(Q)$(MAKE) $(submake_extras)  -C $(BPFTOOLDIR)                        \
                    OUTPUT=$(BUILD_DIR)/bpftool/                               \
                    prefix= DESTDIR=$(SCRATCH_DIR)/ install
+       $(Q)mkdir -p $(BUILD_DIR)/bpftool/Documentation
+       $(Q)RST2MAN_OPTS="--exit-status=1" $(MAKE) $(submake_extras)           \
+                   -C $(BPFTOOLDIR)/Documentation                             \
+                   OUTPUT=$(BUILD_DIR)/bpftool/Documentation/                 \
+                   prefix= DESTDIR=$(SCRATCH_DIR)/ install
 
 $(BPFOBJ): $(wildcard $(BPFDIR)/*.[ch] $(BPFDIR)/Makefile)                    \
           ../../../include/uapi/linux/bpf.h                                   \
index ac349a5..2db3c60 100755 (executable)
@@ -85,6 +85,23 @@ make_with_tmpdir() {
        echo
 }
 
+make_doc_and_clean() {
+       echo -e "\$PWD:    $PWD"
+       echo -e "command: make -s $* doc >/dev/null"
+       RST2MAN_OPTS="--exit-status=1" make $J -s $* doc
+       if [ $? -ne 0 ] ; then
+               ERROR=1
+               printf "FAILURE: Errors or warnings when building documentation\n"
+       fi
+       (
+               if [ $# -ge 1 ] ; then
+                       cd ${@: -1}
+               fi
+               make -s doc-clean
+       )
+       echo
+}
+
 echo "Trying to build bpftool"
 echo -e "... through kbuild\n"
 
@@ -145,3 +162,7 @@ make_and_clean
 make_with_tmpdir OUTPUT
 
 make_with_tmpdir O
+
+echo -e "Checking documentation build\n"
+# From tools/bpf/bpftool
+make_doc_and_clean