qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: "Alex Bennée" <alex.bennee@linaro.org>
To: Ben Widawsky <ben@bwidawsk.net>
Cc: qemu-devel@nongnu.org
Subject: Re: [RFC PATCH] Makefile: add GNU global tags support
Date: Tue, 12 Jan 2021 16:58:40 +0000	[thread overview]
Message-ID: <87k0sim4xv.fsf@linaro.org> (raw)
In-Reply-To: <20210112150031.rvdsatlcqa22k4a6@mail.bwidawsk.net>


Ben Widawsky <ben@bwidawsk.net> writes:

> On 21-01-12 09:27:39, Alex Bennée wrote:
>> 
>> Ben Widawsky <ben@bwidawsk.net> writes:
>> 
>> > On 21-01-08 22:30:59, Alex Bennée wrote:
>> >> 
>> >> Ben Widawsky <ben@bwidawsk.net> writes:
>> >> 
>> >> > On 21-01-08 12:19:35, Alex Bennée wrote:
>> >> >> GNU Global is another tags engine which is more like cscope in being
>> >> >> able to support finding both references and definitions. You will be
>> >> >> un-surprised to know it also integrates well with Emacs.
>> >> >> 
>> >> >> The main benefit of integrating it into find-src-path is it takes less
>> >> >> time to rebuild the database from scratch when you have a lot of build
>> >> >> directories under your source tree.
>> >> >> 
>> >> >> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
>> >> >
>> >> > It might be worth mentioning that the Linux kernel has supported this for a long
>> >> > time now (10+ years).
>> >> >
>> >> > Having switched to gtags about 3 years ago, I think it's summarily better and
>> >> > would really like this to get merged.
>> >> 
>> >> So I take it that's a reviewed-by and a tested-by tag from you?
>> >> 
>> >
>> > It doesn't actually work correctly for me, I just like the idea :-)
>> >
>> > make gtags 2>&1  | grep ignored | wc -l
>> > 6266
>> >
>> > Warning: '/home/bwidawsk/work/clk/qemu/accel/qtest/qtest.c' is out of
>> > source tree. ignored.
>> 
>> Did you run this in the build directory by any chance? I tested in the
>> source directory because that's generally where you want the tags.
>> 
>> I wonder what the best solution is to this? Always force ourselves to be
>> in the source dir? Or error out when we are not in the source tree?
>
> I was in the build directory. With ctags, that works for me in both source and
> build directory.
>
> It does indeed work from the source directory.
>
> I'm wondering how gtags can't seem to do this (I wasn't able to figure it out,
> at least).

The start of the manual states:

  Gtags recursively collects source files under the current directory,
  picks up symbols and writes the cross-reference data into the tag files
  (´GTAGS´, ´GRTAGS´ and ´GPATH´).

so I guess when it finds files outside of CWD it gets confused. While
all of my build trees are inside the source tree ("builds/foo|bar|baz")
they don't have to be. 

> I'd be in favor of error.

The other tags targets always generate to source root so I'm going to go
for:

  .PHONY: gtags
  gtags:
          $(call quiet-command, \
                  rm -f "$(SRC_PATH)/"GTAGS \
                  rm -f "$(SRC_PATH)/"GRTAGS \
                  rm -f "$(SRC_PATH)/"GPATH, \
                  "GTAGS", "Remove old")
          $(call quiet-command, \
            (cd $(SRC_PATH) && $(find-src-path) | gtags -f -), \
            "GTAGS", "Re-index $(SRC_PATH)")

which also makes the output a bit nicer.
>
>
>> 
>> 
>> >
>> >> >
>> >> >> ---
>> >> >>  Makefile   | 9 ++++++++-
>> >> >>  .gitignore | 3 +++
>> >> >>  2 files changed, 11 insertions(+), 1 deletion(-)
>> >> >> 
>> >> >> diff --git a/Makefile b/Makefile
>> >> >> index fb9923ff22..66eec99685 100644
>> >> >> --- a/Makefile
>> >> >> +++ b/Makefile
>> >> >> @@ -253,6 +253,13 @@ ctags:
>> >> >>  	rm -f "$(SRC_PATH)/"tags
>> >> >>  	$(find-src-path) -exec ctags -f "$(SRC_PATH)/"tags --append {} +
>> >> >>  
>> >> >> +.PHONY: gtags
>> >> >> +gtags:
>> >> >> +	rm -f "$(SRC_PATH)/"GTAGS
>> >> >> +	rm -f "$(SRC_PATH)/"GRTAGS
>> >> >> +	rm -f "$(SRC_PATH)/"GPATH
>> >> >> +	$(find-src-path) | gtags -f -
>> >> >> +
>> >> >>  .PHONY: TAGS
>> >> >>  TAGS:
>> >> >>  	rm -f "$(SRC_PATH)/"TAGS
>> >> >> @@ -279,7 +286,7 @@ help:
>> >> >>  	$(call print-help,all,Build all)
>> >> >>  	$(call print-help,dir/file.o,Build specified target only)
>> >> >>  	$(call print-help,install,Install QEMU, documentation and tools)
>> >> >> -	$(call print-help,ctags/TAGS,Generate tags file for editors)
>> >> >> +	$(call print-help,ctags/gtags/TAGS,Generate tags file for editors)
>> >> >>  	$(call print-help,cscope,Generate cscope index)
>> >> >>  	$(call print-help,sparse,Run sparse on the QEMU source)
>> >> >>  	@echo  ''
>> >> >> diff --git a/.gitignore b/.gitignore
>> >> >> index b32bca1315..75a4be0724 100644
>> >> >> --- a/.gitignore
>> >> >> +++ b/.gitignore
>> >> >> @@ -7,6 +7,9 @@
>> >> >>  cscope.*
>> >> >>  tags
>> >> >>  TAGS
>> >> >> +GPATH
>> >> >> +GRTAGS
>> >> >> +GTAGS
>> >> >>  *~
>> >> >>  *.ast_raw
>> >> >>  *.depend_raw
>> >> >> -- 
>> >> >> 2.20.1
>> >> >> 
>> >> >> 
>> >> 
>> >> 
>> >> -- 
>> >> Alex Bennée
>> 
>> 
>> -- 
>> Alex Bennée


-- 
Alex Bennée


      reply	other threads:[~2021-01-12 17:45 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-01-08 12:19 [RFC PATCH] Makefile: add GNU global tags support Alex Bennée
2021-01-08 17:54 ` Ben Widawsky
2021-01-08 22:30   ` Alex Bennée
2021-01-08 22:42     ` Ben Widawsky
2021-01-12  9:27       ` Alex Bennée
2021-01-12 15:00         ` Ben Widawsky
2021-01-12 16:58           ` Alex Bennée [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87k0sim4xv.fsf@linaro.org \
    --to=alex.bennee@linaro.org \
    --cc=ben@bwidawsk.net \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).