• Yonghong Song's avatar
    bpftool: Fix build failure · 63bea244
    Yonghong Song authored
    When building bpf selftests like
      make -C tools/testing/selftests/bpf -j20
    I hit the following errors:
      ...
      GEN      /net-next/tools/testing/selftests/bpf/tools/build/bpftool/Documentation/bpftool-gen.8
      <stdin>:75: (WARNING/2) Block quote ends without a blank line; unexpected unindent.
      <stdin>:71: (WARNING/2) Literal block ends without a blank line; unexpected unindent.
      <stdin>:85: (WARNING/2) Literal block ends without a blank line; unexpected unindent.
      <stdin>:57: (WARNING/2) Block quote ends without a blank line; unexpected unindent.
      <stdin>:66: (WARNING/2) Literal block ends without a blank line; unexpected unindent.
      <stdin>:109: (WARNING/2) Literal block ends without a blank line; unexpected unindent.
      <stdin>:175: (WARNING/2) Literal block ends without a blank line; unexpected unindent.
      <stdin>:273: (WARNING/2) Literal block ends without a blank line; unexpected unindent.
      make[1]: *** [/net-next/tools/testing/selftests/bpf/tools/build/bpftool/Documentation/bpftool-perf.8] Error 12
      make[1]: *** Waiting for unfinished jobs....
      make[1]: *** [/net-next/tools/testing/selftests/bpf/tools/build/bpftool/Documentation/bpftool-iter.8] Error 12
      make[1]: *** [/net-next/tools/testing/selftests/bpf/tools/build/bpftool/Documentation/bpftool-struct_ops.8] Error 12
      ...
    
    I am using:
      -bash-4.4$ rst2man --version
      rst2man (Docutils 0.11 [repository], Python 2.7.5, on linux2)
      -bash-4.4$
    
    The Makefile generated final .rst file (e.g., bpftool-cgroup.rst) looks like
      ...
          ID       AttachType      AttachFlags     Name
      \n SEE ALSO\n========\n\t**bpf**\ (2),\n\t**bpf-helpers**\
      (7),\n\t**bpftool**\ (8),\n\t**bpftool-btf**\
      (8),\n\t**bpftool-feature**\ (8),\n\t**bpftool-gen**\
      (8),\n\t**bpftool-iter**\ (8),\n\t**bpftool-link**\
      (8),\n\t**bpftool-map**\ (8),\n\t**bpftool-net**\
      (8),\n\t**bpftool-perf**\ (8),\n\t**bpftool-prog**\
      (8),\n\t**bpftool-struct_ops**\ (8)\n
    
    The rst2man generated .8 file looks like
    Literal block ends without a blank line; unexpected unindent.
     .sp
     n SEEALSOn========nt**bpf**(2),nt**bpf\-helpers**(7),nt**bpftool**(8),nt**bpftool\-btf**(8),nt**
     bpftool\-feature**(8),nt**bpftool\-gen**(8),nt**bpftool\-iter**(8),nt**bpftool\-link**(8),nt**
     bpftool\-map**(8),nt**bpftool\-net**(8),nt**bpftool\-perf**(8),nt**bpftool\-prog**(8),nt**
     bpftool\-struct_ops**(8)n
    
    Looks like that particular version of rst2man prefers to have actual new line
    instead of \n.
    
    Since `echo -e` may not be available in some environment, let us use `printf`.
    Format string "%b" is used for `printf` to ensure all escape characters are
    interpretted properly.
    
    Fixes: 18841da9 ("tools: bpftool: Automate generation for "SEE ALSO" sections in man pages")
    Suggested-by: default avatarAndrii Nakryiko <andrii.nakryiko@gmail.com>
    Signed-off-by: default avatarYonghong Song <yhs@fb.com>
    Signed-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
    Acked-by: default avatarSong Liu <songliubraving@fb.com>
    Acked-by: default avatarAndrii Nakryiko <andriin@fb.com>
    Cc: Quentin Monnet <quentin@isovalent.com>
    Link: https://lore.kernel.org/bpf/20200914183110.999906-1-yhs@fb.com
    63bea244
Makefile 1.55 KB