.gitignore | 4 ++++ 1 file changed, 4 insertions(+)
Bear [0] is a tool for generating compile_commands.json. For Kbuild,
Bear is not useful, since Kbuild already generates the necessary info
and that can be converted to compile_commands.json by
gen_compile_commads.py.
However, for code in tools/, it's handy. For example, this command
updates compile_commands.json so that clangd code navigation will also
work for the VMA unit tests:
bear --append -- make -C tools/testing/vma -j
Bear generates some temporary files. These are usually deleted again
but having them show up ephemerally confuses tools that trigger
recompilation on source code changes. Ignore them in Git so that these
tools can tell they aren't source code.
[0]: https://github.com/rizsotto/Bear
Signed-off-by: Brendan Jackman <jackmanb@google.com>
---
.gitignore | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/.gitignore b/.gitignore
index 929054df5212d68a32a1f5ee2b267389fcd1c8db..b07c8c8383bd791e903ce985c14c231cb6928411 100644
--- a/.gitignore
+++ b/.gitignore
@@ -53,6 +53,7 @@
*.tar
*.xz
*.zst
+*.tmp
Module.symvers
dtbs-list
modules.order
@@ -177,6 +178,9 @@ x509.genkey
# Clang's compilation database file
/compile_commands.json
+# Temporary files created by 'bear', a tool used for generating
+# compile_commands.json for non-Kbuild code.
+*.events.json
# Documentation toolchain
sphinx_*/
---
base-commit: fab1beda7597fac1cecc01707d55eadb6bbe773c
change-id: 20250827-master-23458abb102d
Best regards,
--
Brendan Jackman <jackmanb@google.com>
Hi Brendan, On Wed, Aug 27, 2025 at 08:59:43AM +0000, Brendan Jackman wrote: > Bear [0] is a tool for generating compile_commands.json. For Kbuild, > Bear is not useful, since Kbuild already generates the necessary info > and that can be converted to compile_commands.json by > gen_compile_commads.py. > > However, for code in tools/, it's handy. For example, this command > updates compile_commands.json so that clangd code navigation will also > work for the VMA unit tests: > > bear --append -- make -C tools/testing/vma -j > > Bear generates some temporary files. These are usually deleted again > but having them show up ephemerally confuses tools that trigger > recompilation on source code changes. Ignore them in Git so that these > tools can tell they aren't source code. > > [0]: https://github.com/rizsotto/Bear > > Signed-off-by: Brendan Jackman <jackmanb@google.com> We can likely take this via the Kbuild tree. I do wonder if this would be better in a tools/.gitignore file since bear is really only of use there but I am not sure it matters much. > --- > .gitignore | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/.gitignore b/.gitignore > index 929054df5212d68a32a1f5ee2b267389fcd1c8db..b07c8c8383bd791e903ce985c14c231cb6928411 100644 > --- a/.gitignore > +++ b/.gitignore > @@ -53,6 +53,7 @@ > *.tar > *.xz > *.zst > +*.tmp Please keep the globs alphabetized. > Module.symvers > dtbs-list > modules.order > @@ -177,6 +178,9 @@ x509.genkey > > # Clang's compilation database file > /compile_commands.json > +# Temporary files created by 'bear', a tool used for generating > +# compile_commands.json for non-Kbuild code. > +*.events.json Please rebase this on kbuild-next, as '/' is no longer present in the compile_commands.json line: https://git.kernel.org/kbuild/l/kbuild-next The comment feels a little lengthy compared to the rest of the file but I am not sure it can really be slimmed down... I am guessing the pattern cannot be made more specific, as I do wonder if anyone would introduce files with this pattern but that is why we have the check in scripts/misc-check, so it is probably not that big of a deal. > > # Documentation toolchain > sphinx_*/ > > --- > base-commit: fab1beda7597fac1cecc01707d55eadb6bbe773c > change-id: 20250827-master-23458abb102d > > Best regards, > -- > Brendan Jackman <jackmanb@google.com> > >
On Fri, Aug 29, 2025 at 04:38:24PM -0700, Nathan Chancellor wrote: > Hi Brendan, > > On Wed, Aug 27, 2025 at 08:59:43AM +0000, Brendan Jackman wrote: > > Bear [0] is a tool for generating compile_commands.json. For Kbuild, > > Bear is not useful, since Kbuild already generates the necessary info > > and that can be converted to compile_commands.json by > > gen_compile_commads.py. > > > > However, for code in tools/, it's handy. For example, this command > > updates compile_commands.json so that clangd code navigation will also > > work for the VMA unit tests: > > > > bear --append -- make -C tools/testing/vma -j > > > > Bear generates some temporary files. These are usually deleted again > > but having them show up ephemerally confuses tools that trigger > > recompilation on source code changes. Ignore them in Git so that these > > tools can tell they aren't source code. > > > > [0]: https://github.com/rizsotto/Bear > > > > Signed-off-by: Brendan Jackman <jackmanb@google.com> > > We can likely take this via the Kbuild tree. I do wonder if this would > be better in a tools/.gitignore file since bear is really only of use > there but I am not sure it matters much. yeah, please consider using tools/.gitignore. Please have a look at this thread about ignoring files from "external" tools: https://lore.kernel.org/lkml/CAHk-=wiJHMje8cpiTajqrLrM23wZK0SWetuK1Bd67c0OGM_BzQ@mail.gmail.com/ If using tools/.gitignore is not possible, I think the best way for ignoring files that are not natively related to kernel build tools is to update the local ~/.config/git/ignore, as suggested in https://lore.kernel.org/lkml/CAK7LNAQas0cK7pgi72tYC3yU=ZkQxnr41YYW1mXd-sWiHtG+UA@mail.gmail.com/ compare to: https://docs.github.com/en/get-started/git-basics/ignoring-files#configuring-ignored-files-for-all-repositories-on-your-computer Kind regards, Nicolas
On Sat Aug 30, 2025 at 7:25 PM UTC, Nicolas Schier wrote: > On Fri, Aug 29, 2025 at 04:38:24PM -0700, Nathan Chancellor wrote: >> Hi Brendan, >> >> On Wed, Aug 27, 2025 at 08:59:43AM +0000, Brendan Jackman wrote: >> > Bear [0] is a tool for generating compile_commands.json. For Kbuild, >> > Bear is not useful, since Kbuild already generates the necessary info >> > and that can be converted to compile_commands.json by >> > gen_compile_commads.py. >> > >> > However, for code in tools/, it's handy. For example, this command >> > updates compile_commands.json so that clangd code navigation will also >> > work for the VMA unit tests: >> > >> > bear --append -- make -C tools/testing/vma -j >> > >> > Bear generates some temporary files. These are usually deleted again >> > but having them show up ephemerally confuses tools that trigger >> > recompilation on source code changes. Ignore them in Git so that these >> > tools can tell they aren't source code. >> > >> > [0]: https://github.com/rizsotto/Bear >> > >> > Signed-off-by: Brendan Jackman <jackmanb@google.com> >> >> We can likely take this via the Kbuild tree. I do wonder if this would >> be better in a tools/.gitignore file since bear is really only of use >> there but I am not sure it matters much. > > yeah, please consider using tools/.gitignore. I don't believe that works here, because AFAIK clangd assumes a single compile_commands.json, so while we could git-ignore tools/compile_commands.json that wouldn't really serve the usecase I have here with 'bear --append'. > Please have a look at > this thread about ignoring files from "external" tools: > > https://lore.kernel.org/lkml/CAHk-=wiJHMje8cpiTajqrLrM23wZK0SWetuK1Bd67c0OGM_BzQ@mail.gmail.com/ Hm, I would read the spirit of that thread as not being about things from 'external tools', rather Linus' objection seems to be that the _lifetime_ of the mbox files is unrelated to the kernel build. Well, to be honest the only coherent principle I can get from it is "don't break Linus' workflow". Which... yeah, is still a pretty valid concern. > If using tools/.gitignore is not possible, I think the best way for > ignoring files that are not natively related to kernel build tools is to > update the local ~/.config/git/ignore, as suggested in > > https://lore.kernel.org/lkml/CAK7LNAQas0cK7pgi72tYC3yU=ZkQxnr41YYW1mXd-sWiHtG+UA@mail.gmail.com/ Given this alternative, and given the fact that I'm ignoring a very generic suffix in *.tmp (if it was just *.events.json I'd say the practical risk has gotta be close to nil), I think we could just drop this unless anyone else pops up with evidence that 'bear' is important to lots of people or something. Cheers, Brendan
© 2016 - 2025 Red Hat, Inc.