On Tue, 07 Feb 2023 17:19:37 +0900 (JST) Tatsuo Ishii <is...@sraoss.co.jp> wrote:
> >> Since this commit, make_etags has started failing to generate > >> tags files with the following error messages, on my MacOS. > >> > >> $ src/tools/make_etags > >> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ctags: > >> illegal option -- e > >> usage: ctags [-BFadtuwvx] [-f tagsfile] file ... > >> sort: No such file or directory > >> > >> > >> In my MacOS, non-Exuberant ctags is installed and doesn't support > >> -e option. But the commit changed make_etags so that it always > >> calls ctags with -e option via make_ctags. This seems the cause of > >> the above failure. > >> > >> IS_EXUBERANT="" > >> ctags --version 2>&1 | grep Exuberant && IS_EXUBERANT="Y" > >> > >> make_ctags has the above code and seems to support non-Exuberant > >> ctags. > >> If so, we should revert the changes of make_etags by the commit and > >> make make_etags work with that ctags? Or, we should support > >> only Exuberant-type ctags (btw, I'm ok with this) and get rid of > >> something like the above code? > > > > Thanks for the report. I will look into this. > > Previous make_etags relied on etags command: > > #!/bin/sh > > # src/tools/make_etags > > command -v etags >/dev/null || \ > { echo "'etags' program not found" 1>&2; exit 1; } > : > : > > My Mac (M1 Mac running macOS 12.6) does not have etags. Thus before > the commit make_etags on Mac failed anyway. Do we want make_etags to > restore the previous behavior? i.e. 'etags' program not found > > >> If so, we should revert the changes of make_etags by the commit and > >> make make_etags work with that ctags? > > I think ctags on Mac cannot produce tags file for emacs. Does is make sense to change make_etags as the attached patch does? This allows make_etags to use etags if Exuberant-type ctags is not available. This allows users to use make_etags if hey has either Exuberant-type ctags or etags. Regards, Yugo Nagata > > Best reagards, > -- > Tatsuo Ishii > SRA OSS LLC > English: http://www.sraoss.co.jp/index_en/ > Japanese:http://www.sraoss.co.jp -- Yugo NAGATA <nag...@sraoss.co.jp>
diff --git a/src/tools/make_etags b/src/tools/make_etags index afc57e3e89..d0cfdb23d8 100755 --- a/src/tools/make_etags +++ b/src/tools/make_etags @@ -1,6 +1,25 @@ #!/bin/sh # src/tools/make_etags -cdir=`dirname $0` -dir=`(cd $cdir && pwd)` -exec $dir/make_ctags -e $* +IS_EXUBERANT="" +command -v ctags >/dev/null && \ +ctags --version 2>&1 | grep Exuberant && IS_EXUBERANT="Y" + +if [ "$IS_EXUBERANT" ]; then + cdir=`dirname $0` + dir=`(cd $cdir && pwd)` + exec $dir/make_ctags -e $* +else + command -v etags >/dev/null || \ + { echo "'etags' program not found" 1>&2; exit 1; } + + rm -f ./TAGS + + find `pwd`/ -type f -name '*.[chyl]' -print | + xargs etags --append -o TAGS + + find . \( -name CVS -prune \) -o \( -name .git -prune \) -o -type d -print | + while read DIR + do [ "$DIR" != "." ] && ln -f -s `pwd`/TAGS "$DIR" + done +fi