Message ID | 1461516120-5600-1-git-send-email-eugeniu.m.rosca@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 2016-04-24 18:42, Eugeniu Rosca wrote: > If the needed host utility is not found, current behavior is: > > $> make cscope > GEN cscope > ./scripts/tags.sh: line 140: cscope: command not found > $> make gtags > GEN gtags > ./scripts/tags.sh: line 145: gtags: command not found > $> make tags > GEN tags > xargs: ctags: No such file or directory > sed: can't read tags: No such file or directory > Makefile:1509: recipe for target 'tags' failed > make: *** [tags] Error 2 > $> make TAGS > GEN TAGS > xargs: etags: No such file or directory > sed: can't read TAGS: No such file or directory > Makefile:1509: recipe for target 'TAGS' failed > make: *** [TAGS] Error 2 > > This patch allows to exit gracefully in such a situation: > > $> make cscope > GEN cscope > cscope - not installed? > $> make gtags > GEN gtags > gtags - not installed? > $> make tags > GEN tags > ctags - not installed? > $> make TAGS > GEN TAGS > etags - not installed? It should fail if it's unable to create the requested file, though. Appending '|| exit' to the docscope/dogtags/xtags calls should suffice. Michal -- To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Mon, Apr 25, 2016 at 02:35:43PM +0200, Michal Marek wrote: > On 2016-04-24 18:42, Eugeniu Rosca wrote: > > If the needed host utility is not found, current behavior is: > > > > $> make cscope > > GEN cscope > > ./scripts/tags.sh: line 140: cscope: command not found > > $> make gtags > > GEN gtags > > ./scripts/tags.sh: line 145: gtags: command not found > > $> make tags > > GEN tags > > xargs: ctags: No such file or directory > > sed: can't read tags: No such file or directory > > Makefile:1509: recipe for target 'tags' failed > > make: *** [tags] Error 2 > > $> make TAGS > > GEN TAGS > > xargs: etags: No such file or directory > > sed: can't read TAGS: No such file or directory > > Makefile:1509: recipe for target 'TAGS' failed > > make: *** [TAGS] Error 2 > > > > This patch allows to exit gracefully in such a situation: > > > > $> make cscope > > GEN cscope > > cscope - not installed? > > $> make gtags > > GEN gtags > > gtags - not installed? > > $> make tags > > GEN tags > > ctags - not installed? > > $> make TAGS > > GEN TAGS > > etags - not installed? > > It should fail if it's unable to create the requested file, though. > Appending '|| exit' to the docscope/dogtags/xtags calls should suffice. > > Michal Hi Michal, Late feedback from my end... I would kindly ask you to select one of the options provided below: OPTION 1: Append '|| exit' to the docscope/dogtags/xtags calls. RESULT: This produces more error messages than with the original script: $> make cscope GEN cscope ./scripts/tags.sh: line 140: cscope: command not found Makefile:1517: recipe for target 'cscope' failed make: *** [cscope] Error 127 $> make gtags GEN gtags ./scripts/tags.sh: line 145: gtags: command not found Makefile:1517: recipe for target 'gtags' failed make: *** [gtags] Error 127 $> make tags GEN tags xargs: ctags: No such file or directory Makefile:1517: recipe for target 'tags' failed make: *** [tags] Error 127 $> make TAGS GEN TAGS xargs: etags: No such file or directory Makefile:1517: recipe for target 'TAGS' failed make: *** [TAGS] Error 127 $> OPTION 2: Append '|| exit 0' to the docscope/dogtags/xtags calls. RESULT: Cleaner output, but still without suggesting the root-cause: $> make cscope GEN cscope ./scripts/tags.sh: line 140: cscope: command not found $> make gtags GEN gtags ./scripts/tags.sh: line 145: gtags: command not found $> make tags GEN tags xargs: ctags: No such file or directory $> make TAGS GEN TAGS xargs: etags: No such file or directory $> OPTION 3: Initial patch. RESULT: Cleaner output, but maybe putting too much infrastructure for checking against missing utilities? $> make cscope GEN cscope cscope - not installed? $> make gtags GEN gtags gtags - not installed? $> make tags GEN tags ctags - not installed? $> make TAGS GEN TAGS etags - not installed? OPTION 4: Something else? RESULT: ? Best regards, Eugeniu. -- To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 2016-05-15 15:44, Eugeniu Rosca wrote: > I would kindly ask you to select one of the options provided below: > > OPTION 1: Append '|| exit' to the docscope/dogtags/xtags calls. > RESULT: This produces more error messages than with the original script: > > $> make cscope > GEN cscope > ./scripts/tags.sh: line 140: cscope: command not found > Makefile:1517: recipe for target 'cscope' failed > make: *** [cscope] Error 127 > [...] This is the correct behavior because a missing tool is an error. Michal -- To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/scripts/tags.sh b/scripts/tags.sh index f72f48f..e7f6125 100755 --- a/scripts/tags.sh +++ b/scripts/tags.sh @@ -289,6 +289,13 @@ xtags() fi } +# Check if a specific utility is accessible on the host +tool_exists() { + [ -x "$(which $1 2> /dev/null)" ] || \ + { echo "$1 - not installed?" && return 1; } + return 0 +} + # Support um (which uses SUBARCH) if [ "${ARCH}" = "um" ]; then if [ "$SUBARCH" = "i386" ]; then @@ -318,20 +325,24 @@ fi remove_structs= case "$1" in "cscope") + tool_exists cscope || exit 0 docscope ;; "gtags") + tool_exists gtags || exit 0 dogtags ;; "tags") + tool_exists ctags || exit 0 rm -f tags xtags ctags remove_structs=y ;; "TAGS") + tool_exists etags || exit 0 rm -f TAGS xtags etags remove_structs=y
If the needed host utility is not found, current behavior is: $> make cscope GEN cscope ./scripts/tags.sh: line 140: cscope: command not found $> make gtags GEN gtags ./scripts/tags.sh: line 145: gtags: command not found $> make tags GEN tags xargs: ctags: No such file or directory sed: can't read tags: No such file or directory Makefile:1509: recipe for target 'tags' failed make: *** [tags] Error 2 $> make TAGS GEN TAGS xargs: etags: No such file or directory sed: can't read TAGS: No such file or directory Makefile:1509: recipe for target 'TAGS' failed make: *** [TAGS] Error 2 This patch allows to exit gracefully in such a situation: $> make cscope GEN cscope cscope - not installed? $> make gtags GEN gtags gtags - not installed? $> make tags GEN tags ctags - not installed? $> make TAGS GEN TAGS etags - not installed? Signed-off-by: Eugeniu Rosca <eugeniu.m.rosca@gmail.com> --- scripts/tags.sh | 11 +++++++++++ 1 file changed, 11 insertions(+)