Skip to content

Conversation

@frezbo
Copy link
Member

@frezbo frezbo commented Mar 31, 2023

Use cache for kernel build output and re-use in downstream steps.

Use cache for kernel build output and re-use in downstream steps.

Signed-off-by: Noel Georgi <[email protected]>
- |
cd /src
python3 /toolchain/kconfig-hardened-check/bin/kconfig-hardened-check -c .config -m json | python3 /pkg/scripts/filter-hardened-check.py
python3 /toolchain/kconfig-hardened-check/bin/kconfig-hardened-check -c ${KBUILD_OUTPUT}/.config -m json | python3 /pkg/scripts/filter-hardened-check.py
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

my concern is how can we be sure that the cache gets properly invalidated? I guess in default make, it's all timestamp-based, so if we have two kernel builds from different branches, it may very well poison the cache?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The src folder gets changed, but the kernel build objects can still be re-used. I don;t want this going in release-1.4 anyways, targetting for 1.5

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yes, I understand that, but my point is the following, the Makefile is something like:

/src/build/foo.o: /src/foo.c
  cc -o /src/build/foo.o /src/foo.c

So what make does is that it compares the timestamps of .c and .o files: if .o is newer, it skips the build

But this is not reliable enough given that we have multiple branches/versions of the kernel, and timestamp for Linux 5.15.x and 6.1.x might be inverted.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think the kernel build is intelligent enough to detect that, based on the source. At least when building locally, but I'ven't tried changing versions 😅 . I'll test locally later

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

if there's some smartness, let's find some proof on that :) it's definitely not in make itself

@pl4nty
Copy link

pl4nty commented Jun 9, 2025

I've been using this for a few months on RISC-V, haven't tested invalidation across kernel versions yet but I've run into corruption issues. A misconfigured dependent pkg can write to the cache and corrupt it for other pkgs. This doesn't invalidate the cache, and I've had to delete it manually.

Would a cachePaths[].readOnly property make sense? Happy to send a bldr PR if so

edit: cache does invalidate forwards (6.15.1 -> 6.16-rc1), not sure about backwards though

@github-actions
Copy link

This PR is stale because it has been open 45 days with no activity.

@github-actions github-actions bot added the Stale label Jul 26, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants