On Mon, 09 Oct 2017, Tom Saeger <[email protected]> wrote:
> On Mon, Oct 09, 2017 at 03:26:15PM +0000, Jani Nikula wrote:
>> Add a simple script and build target to do a treewide grep for
>> references to files under Documentation, and report the non-existing
>> file in stderr. It tries to take into account punctuation not part of
>> the filename, and wildcards, but there are bound to be false positives
>> too. Mostly seems accurate though.
>> 
>> We've moved files around enough to make having this worthwhile.
>> 
>> Signed-off-by: Jani Nikula <[email protected]>
>> ---
>>  Documentation/Makefile               |  4 ++++
>>  Makefile                             |  2 +-
>>  scripts/documentation-file-ref-check | 15 +++++++++++++++
>>  3 files changed, 20 insertions(+), 1 deletion(-)
>>  create mode 100755 scripts/documentation-file-ref-check
>> 
>> diff --git a/Documentation/Makefile b/Documentation/Makefile
>> index 85f7856f0092..f4f5aecb81d1 100644
>> --- a/Documentation/Makefile
>> +++ b/Documentation/Makefile
>> @@ -97,6 +97,9 @@ endif # HAVE_SPHINX
>>  # The following targets are independent of HAVE_SPHINX, and the rules should
>>  # work or silently pass without Sphinx.
>>  
>> +refcheckdocs:
>> +    $(Q)cd $(srctree);scripts/documentation-file-ref-check
>> +
>>  cleandocs:
>>      $(Q)rm -rf $(BUILDDIR)
>>      $(Q)$(MAKE) BUILDDIR=$(abspath $(BUILDDIR)) 
>> $(build)=Documentation/media clean
>> @@ -109,6 +112,7 @@ dochelp:
>>      @echo  '  epubdocs        - EPUB'
>>      @echo  '  xmldocs         - XML'
>>      @echo  '  linkcheckdocs   - check for broken external links (will 
>> connect to external hosts)'
>> +    @echo  '  refcheckdocs    - check for references to non-existing files 
>> under Documentation'
>>      @echo  '  cleandocs       - clean all generated files'
>>      @echo
>>      @echo  '  make SPHINXDIRS="s1 s2" [target] Generate only docs of folder 
>> s1, s2'
>> diff --git a/Makefile b/Makefile
>> index cf007a31d575..a97e70a9a39c 100644
>> --- a/Makefile
>> +++ b/Makefile
>> @@ -1454,7 +1454,7 @@ $(help-board-dirs): help-%:
>>  
>>  # Documentation targets
>>  # 
>> ---------------------------------------------------------------------------
>> -DOC_TARGETS := xmldocs latexdocs pdfdocs htmldocs epubdocs cleandocs 
>> linkcheckdocs
>> +DOC_TARGETS := xmldocs latexdocs pdfdocs htmldocs epubdocs cleandocs 
>> linkcheckdocs refcheckdocs
>>  PHONY += $(DOC_TARGETS)
>>  $(DOC_TARGETS): scripts_basic FORCE
>>      $(Q)$(MAKE) $(build)=Documentation $@
>> diff --git a/scripts/documentation-file-ref-check 
>> b/scripts/documentation-file-ref-check
>> new file mode 100755
>> index 000000000000..bc1659900e89
>> --- /dev/null
>> +++ b/scripts/documentation-file-ref-check
>> @@ -0,0 +1,15 @@
>> +#!/bin/sh
>> +# Treewide grep for references to files under Documentation, and report
>> +# non-existing files in stderr.
>> +
>> +for f in $(git ls-files); do
>> +    for ref in $(grep -ho "Documentation/[A-Za-z0-9_.,~/*+-]*" "$f"); do
>> +            # presume trailing . and , are not part of the name
>> +            ref=${ref%%[.,]}
>> +
>> +            # use ls to handle wildcards
>> +            if ! ls $ref >/dev/null 2>&1; then
>> +                    echo "$f: $ref" >&2
>> +            fi
>> +    done
>> +done
>> -- 
>> 2.11.0
>> 
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-doc" in
>> the body of a message to [email protected]
>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>> 
>
> I just did something similar, but in python (parallel even).  I like
> your version for its elegant simplicity.

Thanks. I didn't see yours. I'm fine either way although I do like
simplicity.

> I do however have a series of doc ref fixes ready to send out.  They are
> fairly fine-grained but could easily be squashed down.
>
> Given that you added this check - do you also have a patch for fixes?

None. I checked that my corner of the kernel is fine, and sent this as a
carrot for others to bite. Please go ahead with your fixes!

Thanks,
Jani.


>
> Regards,
>
> --Tom
>
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-doc" in
> the body of a message to [email protected]
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

-- 
Jani Nikula, Intel Open Source Technology Center
--
To unsubscribe from this list: send the line "unsubscribe linux-doc" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to