Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: use cache kernel build output #694

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

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]>
cp -v /pkg/certs/* certs/
build:
- |
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

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.

3 participants