[PATCH] .gitignore: ignore temporary files from 'bear'

Subsystems: the rest

STALE419d

4 messages, 3 authors, 2025-09-01 · open the first message on its own page

[PATCH] .gitignore: ignore temporary files from 'bear'

From: Brendan Jackman <hidden>
Date: 2025-08-27 08:59:49

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 <redacted>
---
 .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 [off-list ref]

Re: [PATCH] .gitignore: ignore temporary files from 'bear'

From: Nathan Chancellor <nathan@kernel.org>
Date: 2025-08-29 23:38:29

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 <redacted>
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.
quoted hunk
---
 .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.
quoted hunk
 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 [off-list ref]

Re: [PATCH] .gitignore: ignore temporary files from 'bear'

From: Nicolas Schier <nsc@kernel.org>
Date: 2025-08-30 19:26:33

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:
quoted
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 <redacted>
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

Re: [PATCH] .gitignore: ignore temporary files from 'bear'

From: Brendan Jackman <hidden>
Date: 2025-09-01 11:29:46

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:
quoted
Hi Brendan,

On Wed, Aug 27, 2025 at 08:59:43AM +0000, Brendan Jackman wrote:
quoted
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 <redacted>
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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help