Commit e08b1877452a0055c65f6394163ce5a0fbd720a3

Authored by Florian Fainelli
Committed by Linus Torvalds
1 parent ab615a5b87

initramfs: fix initramfs rebuilds w/ compression after disabling

This is a follow-up to commit 57ddfdaa9a72 ("initramfs: fix disabling of
initramfs (and its compression)").  This particular commit fixed the use
case where we build the kernel with an initramfs with no compression,
and then we build the kernel with no initramfs.

Now this still left us with the same case as described here:

  http://lkml.kernel.org/r/20170521033337.6197-1-f.fainelli@gmail.com

not working with initramfs compression.  This can be seen by the
following steps/timestamps:

  https://www.spinics.net/lists/kernel/msg2598153.html

.initramfs_data.cpio.gz.cmd is correct:

  cmd_usr/initramfs_data.cpio.gz := /bin/bash
  ./scripts/gen_initramfs_list.sh -o usr/initramfs_data.cpio.gz  -u 1000 -g 1000  /home/fainelli/work/uclinux-rootfs/romfs /home/fainelli/work/uclinux-rootfs/misc/initramfs.dev

and was generated the first time we did generate the gzip initramfs, so
the command has not changed, nor its arguments, so we just don't call
it, no initramfs cpio is re-generated as a consequence.

The fix for this problem is just to properly keep track of the
.initramfs_cpio_data.d file by suffixing it with the compression
extension.  This takes care of properly tracking dependencies such that
the initramfs get (re)generated any time files are added/deleted etc.

Link: http://lkml.kernel.org/r/20170930033936.6722-1-f.fainelli@gmail.com
Fixes: db2aa7fd15e8 ("initramfs: allow again choice of the embedded initramfs compression algorithm")
Fixes: 9e3596b0c653 ("kbuild: initramfs cleanup, set target from Kconfig")
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
Cc: "Francisco Blas Izquierdo Riera (klondike)" <klondike@xiscosoft.net>
Cc: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

Showing 1 changed file with 5 additions and 4 deletions Side-by-side Diff

... ... @@ -8,6 +8,7 @@
8 8  
9 9 suffix_y = $(subst $\",,$(CONFIG_INITRAMFS_COMPRESSION))
10 10 datafile_y = initramfs_data.cpio$(suffix_y)
  11 +datafile_d_y = .$(datafile_y).d
11 12 AFLAGS_initramfs_data.o += -DINITRAMFS_IMAGE="usr/$(datafile_y)"
12 13  
13 14  
14 15  
... ... @@ -30,12 +31,12 @@
30 31 $(if $(CONFIG_INITRAMFS_ROOT_UID), -u $(CONFIG_INITRAMFS_ROOT_UID)) \
31 32 $(if $(CONFIG_INITRAMFS_ROOT_GID), -g $(CONFIG_INITRAMFS_ROOT_GID))
32 33  
33   -# .initramfs_data.cpio.d is used to identify all files included
  34 +# $(datafile_d_y) is used to identify all files included
34 35 # in initramfs and to detect if any files are added/removed.
35 36 # Removed files are identified by directory timestamp being updated
36 37 # The dependency list is generated by gen_initramfs.sh -l
37   -ifneq ($(wildcard $(obj)/.initramfs_data.cpio.d),)
38   - include $(obj)/.initramfs_data.cpio.d
  38 +ifneq ($(wildcard $(obj)/$(datafile_d_y)),)
  39 + include $(obj)/$(datafile_d_y)
39 40 endif
40 41  
41 42 quiet_cmd_initfs = GEN $@
... ... @@ -53,6 +54,6 @@
53 54 # 3) If gen_init_cpio are newer than initramfs_data.cpio
54 55 # 4) arguments to gen_initramfs.sh changes
55 56 $(obj)/$(datafile_y): $(obj)/gen_init_cpio $(deps_initramfs) klibcdirs
56   - $(Q)$(initramfs) -l $(ramfs-input) > $(obj)/.initramfs_data.cpio.d
  57 + $(Q)$(initramfs) -l $(ramfs-input) > $(obj)/$(datafile_d_y)
57 58 $(call if_changed,initfs)