2022-11-20 06:46:02

by Mirsad Todorovac

[permalink] [raw]
Subject: Question re: building with cp -l (hard linked sources)

Hi, Mr. Bagas,

I am in process of bisecting another bug. Right now I take about 1h30m to build both
the good and bad version of a kernel in bisection.

It helped a great deal to do the following:

# time rm -rf linux_stable_build
# time cp -rp -l linux_stable linux_stable_build
# time diff -ur linux_stable linux_stable_build
# cd linux_stable_build
# rm .config
# cp /boot/config-EXAMPLE .config
# time nice make CC="ccache gcc" KBUILD_BUILD_TIMESTAMP="" -j20 bindeb-pkg |& tee ../error-${VER}.log

I've been doing the good and bad bisect build in the same directory, but is seems to me that
ccache then doesn't realise it compiles the same source twice?

I am not certai of the reliability of a build in a directory with hard links to the original local git
repo copy? How does it handle git checkouts and git bisect resets? Is it supported?

I am asking because I haven't found an answer in any available man pages, and the build and git checkout
process is rather obscure.

It seems to me that build in directory with hard link instead of copying is much faster, and I could
do simultaneous bad and good bisect build, for only one source file has to be fetched and loaded from
the disk into the cache and memory.

However, I cannot test that while bisecting, for it might interfere with some other fault in the tested
kernel.

Is it supported to bisection build in the same directory where the source is? And then do a make mrproper?

I don't know how git and ccache interoperate?

Any advice?

The current procedure works, but it is not time efficient (15 steps might take 30 hours).

Thank you,
Mirsad

--
Mirsad Goran Todorovac
Sistem inženjer
Grafički fakultet | Akademija likovnih umjetnosti
Sveučilište u Zagrebu
--
System engineer
Faculty of Graphic Arts | Academy of Fine Arts
University of Zagreb, Republic of Croatia
The European Union


2022-11-20 13:04:20

by Bagas Sanjaya

[permalink] [raw]
Subject: Re: Question re: building with cp -l (hard linked sources)

On 11/20/22 12:58, Mirsad Goran Todorovac wrote:
> Hi, Mr. Bagas,
>
> I am in process of bisecting another bug. Right now I take about 1h30m to build both
> the good and bad version of a kernel in bisection.
>
> It helped a great deal to do the following:
>
> # time rm -rf linux_stable_build
> # time cp -rp -l linux_stable linux_stable_build
> # time diff -ur linux_stable linux_stable_build
> # cd linux_stable_build
> # rm .config
> # cp /boot/config-EXAMPLE .config
> # time nice make CC="ccache gcc" KBUILD_BUILD_TIMESTAMP="" -j20 bindeb-pkg |& tee ../error-${VER}.log
>
> I've been doing the good and bad bisect build in the same directory, but is seems to me that
> ccache then doesn't realise it compiles the same source twice?
>
> I am not certai of the reliability of a build in a directory with hard links to the original local git
> repo copy? How does it handle git checkouts and git bisect resets? Is it supported?
>
> I am asking because I haven't found an answer in any available man pages, and the build and git checkout
> process is rather obscure.
>
> It seems to me that build in directory with hard link instead of copying is much faster, and I could
> do simultaneous bad and good bisect build, for only one source file has to be fetched and loaded from
> the disk into the cache and memory.
>
> However, I cannot test that while bisecting, for it might interfere with some other fault in the tested
> kernel.
>
> Is it supported to bisection build in the same directory where the source is? And then do a make mrproper?
>
> I don't know how git and ccache interoperate?
>
> Any advice?
>
> The current procedure works, but it is not time efficient (15 steps might take 30 hours).
>

You may want to see ccache(1), especially "COMPILING IN DIFFERENT DIRECTORIES"
section.

--
An old man doll... just what I always wanted! - Clara