diff mbox series

[v2] kbuild: shrink .cache.mk when it exceeds 1000 lines

Message ID 1507893929-32573-1-git-send-email-yamada.masahiro@socionext.com
State New
Headers show
Series [v2] kbuild: shrink .cache.mk when it exceeds 1000 lines | expand

Commit Message

Masahiro Yamada Oct. 13, 2017, 11:25 a.m. UTC
The cache files are only cleaned away by "make clean".  If you continue
incremental builds, the cache files will grow up little by little.
It is not a big deal in general use cases because compiler flags do not
change quite often.

However, if you do build-test for various architectures, compilers, and
kernel configurations, you will end up with huge cache files soon.

When the cache file exceeds 1000 lines, shrink it down to 500 by "tail".
The Least Recently Added lines are cut. (not Least Recently Used)
I hope it will work well enough.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

---

Changes in v2:
  - Simplify code per Douglas Anderson

 scripts/Kbuild.include | 6 ++++++
 1 file changed, 6 insertions(+)

-- 
2.7.4

Comments

Doug Anderson Oct. 13, 2017, 3:05 p.m. UTC | #1
Hi,

On Fri, Oct 13, 2017 at 4:25 AM, Masahiro Yamada
<yamada.masahiro@socionext.com> wrote:
> The cache files are only cleaned away by "make clean".  If you continue

> incremental builds, the cache files will grow up little by little.

> It is not a big deal in general use cases because compiler flags do not

> change quite often.

>

> However, if you do build-test for various architectures, compilers, and

> kernel configurations, you will end up with huge cache files soon.

>

> When the cache file exceeds 1000 lines, shrink it down to 500 by "tail".

> The Least Recently Added lines are cut. (not Least Recently Used)

> I hope it will work well enough.

>

> Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

> ---

>

> Changes in v2:

>   - Simplify code per Douglas Anderson

>

>  scripts/Kbuild.include | 6 ++++++

>  1 file changed, 6 insertions(+)


Thanks for doing this!

Reviewed-by: Douglas Anderson <dianders@chromium.org>
Masahiro Yamada Oct. 18, 2017, 4:54 p.m. UTC | #2
2017-10-13 20:25 GMT+09:00 Masahiro Yamada <yamada.masahiro@socionext.com>:
> The cache files are only cleaned away by "make clean".  If you continue

> incremental builds, the cache files will grow up little by little.

> It is not a big deal in general use cases because compiler flags do not

> change quite often.

>

> However, if you do build-test for various architectures, compilers, and

> kernel configurations, you will end up with huge cache files soon.

>

> When the cache file exceeds 1000 lines, shrink it down to 500 by "tail".

> The Least Recently Added lines are cut. (not Least Recently Used)

> I hope it will work well enough.

>

> Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

> ---

>


Applied to linux-kbuild/kbuild.

-- 
Best Regards
Masahiro Yamada
diff mbox series

Patch

diff --git a/scripts/Kbuild.include b/scripts/Kbuild.include
index 4203fff..d939490 100644
--- a/scripts/Kbuild.include
+++ b/scripts/Kbuild.include
@@ -102,6 +102,12 @@  make-cache := $(if $(KBUILD_EXTMOD),$(KBUILD_EXTMOD)/,$(if $(obj),$(obj)/)).cach
 $(make-cache): ;
 -include $(make-cache)
 
+# If cache exceeds 1000 lines, shrink it down to 500.
+ifneq ($(word 1000,$(filter __cached_%, $(.VARIABLES))),)
+$(shell tail -n 500 $(make-cache) > $(make-cache).tmp; \
+	mv $(make-cache).tmp $(make-cache))
+endif
+
 # Usage: $(call __sanitize-opt,Hello=Hola$(comma)Goodbye Adios)
 #
 # Convert all '$', ')', '(', '\', '=', ' ', ',', ':' to '_'