Re: [PATCH] initramfs: Fix spurious rebuilds

From: Florian Fainelli
Date: Wed Jan 04 2017 - 09:40:56 EST




On 01/04/2017 05:34 AM, klondike wrote:
> El 04/01/17 a las 02:37, Florian Fainelli escribió:
>> Commit 35e669e1a254 ("initramfs: select builtin initram
>> compression algorithm on KConfig instead of Makefile") makes suffix_y be
>> a quote variable, which can be illustrated looking at the build output:
>>
>> GEN usr/initramfs_data.cpio".gz"
>>
>> Make sure that we do strip off double quotes from
>> CONFIG_INITRAMFS_COMPRESSION, since the Makefile tracks targets with
>> unquoted suffixes.
>>
>> Fixes: 35e669e1a254 ("initramfs: select builtin initram compression algorithm on KConfig instead of Makefile")
>> Signed-off-by: Florian Fainelli <f.fainelli@xxxxxxxxx>
>> ---
>> This is against v4.10-rc2, thanks!
>>
>> usr/Makefile | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/usr/Makefile b/usr/Makefile
>> index 17a513268325..a9ae8b493e2b 100644
>> --- a/usr/Makefile
>> +++ b/usr/Makefile
>> @@ -5,7 +5,7 @@
>> klibcdirs:;
>> PHONY += klibcdirs
>>
>> -suffix_y = $(CONFIG_INITRAMFS_COMPRESSION)
>> +suffix_y = $(subst ",,$(CONFIG_INITRAMFS_COMPRESSION))
>> AFLAGS_initramfs_data.o += -DINITRAMFS_IMAGE="usr/initramfs_data.cpio$(suffix_y)"
>>
>> # Generate builtin.o based on initramfs_data.o
>
> Hello,
>
> Thanks for the fix, when I tested the patch I checked that the correct
> file was created and embedded but didn't check for spurious rebuilds.
>
> I'm CCing Nicholas Piggin as he sent another (larger version) of the
> patch which also addresses a few other hacks in the Makefile, see
> "[PATCH] kbuild: Fix dependency checking for initramfs build". I haven't
> had time to check that second patch.

Nick's patch [1] is a more elegant way to solve this, although it
introduces more changes, so may be less suitable for a -rc fix? There
are also some potential things that may or may not be relevant:

+AFLAGS_initramfs_data.o += -DINITRAMFS_IMAGE=usr/$(datafile_y)

INITRAMFS_IMAGE now gets defined without quotes, which may not be a
problem, but does not seem necessary.

-targets := initramfs_data.cpio.gz initramfs_data.cpio.bz2 \
- initramfs_data.cpio.lzma initramfs_data.cpio.xz \
- initramfs_data.cpio.lzo initramfs_data.cpio.lz4 \
- initramfs_data.cpio
+targets := $(datafile_y)

Humm that could actually cause some additional rebuild if you kept your
initramfs image unchanged, but you are switching between compression
algorithms selection, but that may fall under the premature optimization
case.

[1]: https://www.spinics.net/lists/linux-kbuild/msg14078.html
--
Florian