[klibc] [PATCH] kbuild: fix usr/Kbuild to use new usr/gen_initramfs.sh

Sam Ravnborg sam at ravnborg.org
Sun Apr 9 14:06:30 PDT 2006


Fix usr/Kbuild so it utilise the new gen_initramfs.sh script
which will rebuild initramfs when the content has changed.

Signed-off-by: Sam Ravnborg <sam at ravnborg.org>
---

 usr/Kbuild |   74 +++++++++++++++++++----------------------------------------------
 1 file changed, 22 insertions(+), 52 deletions(-)


This patch shall not be applied until my kbuild.git tree is merged
upstream. Or it is merged into the klibc-kernel tree.

	Sam

diff --git a/usr/Kbuild b/usr/Kbuild
index daf5e3f..55218ef 100644
--- a/usr/Kbuild
+++ b/usr/Kbuild
@@ -26,67 +26,37 @@ subdir- := klibc kinit utils dash gzip
 
 
 # Generate builtin.o based on initramfs_data.o
-obj-y        := initramfs_data.o
+obj-y := initramfs_data.o
 
 # initramfs_data.o contains the initramfs_data.cpio.gz image.
 # The image is included using .incbin, a dependency which is not
 # tracked automatically.
 $(obj)/initramfs_data.o: $(obj)/initramfs_data.cpio.gz FORCE
 
-ifdef CONFIG_INITRAMFS_ROOT_UID
-gen_initramfs_args += -u $(CONFIG_INITRAMFS_ROOT_UID)
-endif
-
-ifdef CONFIG_INITRAMFS_ROOT_GID
-gen_initramfs_args += -g $(CONFIG_INITRAMFS_ROOT_GID)
-endif
-
-# The $(shell echo $(CONFIG_INITRAMFS_SOURCE)) is to remove the
-# gratuitous begin and end quotes from the Kconfig string type.
-# Internal, escaped quotes in the Kconfig string will loose the
-# escape and become active quotes.
-quotefixed_initramfs_source := $(shell echo $(CONFIG_INITRAMFS_SOURCE))
-
-filechk_initramfs_list = $(CONFIG_SHELL) \
-  $(srctree)/scripts/gen_initramfs_list.sh $(gen_initramfs_args) \
-                                           $(quotefixed_initramfs_source)
-
-$(obj)/initramfs_list: $(src)/Kbuild FORCE
-	$(call filechk,initramfs_list)
-
-quiet_cmd_cpio = CPIO    $@
-      cmd_cpio = ./$< $(obj)/initramfs_list > $@
-
+#####
+# Generate the initramfs cpio archive
+# Following steps are executed:
+# Create list of files to be included in archive (ramfs-filelist)
+# If any of the files are newer than target generate new cpio archive
 
-# Check if the INITRAMFS_SOURCE is a cpio archive
-ifneq (,$(findstring .cpio,$(quotefixed_initramfs_source)))
-
-# INITRAMFS_SOURCE has a cpio archive - verify that it's a single file
-ifneq (1,$(words $(quotefixed_initramfs_source)))
-$(error Only a single file may be specified in CONFIG_INITRAMFS_SOURCE (="$(quotefixed_initramfs_source)") when a cpio archive is directly specified.)
-endif
-# Now use the cpio archive directly
-initramfs_data_cpio = $(quotefixed_initramfs_source)
-targets += $(quotefixed_initramfs_source)
-
-else
-
-# INITRAMFS_SOURCE is not a cpio archive - create one
+# Create cpio archive from filelist
 hostprogs-y  := gen_init_cpio
 
-$(obj)/initramfs_data.cpio: $(obj)/gen_init_cpio \
-                            $(obj)/initramfs_list FORCE
-	$(call if_changed,cpio)
-
-targets += initramfs_data.cpio
-initramfs_data_cpio = $(obj)/initramfs_data.cpio
-
-endif
+# Files included in cpio archive (cpio archive is updated if
+# any included files are newer than the cpio archive)
+initramfs     := $(CONFIG_SHELL) $(srctree)/$(src)/gen_initramfs.sh
+ramfs-input    = $(if $(filter-out "",$(CONFIG_INITRAMFS_SOURCE)), \
+                      $(CONFIG_INITRAMFS_SOURCE),-d)
+ramfs-filelist = $(shell $(initramfs) -l $(ramfs-input))
 
-$(obj)/initramfs_data.cpio.gz: $(initramfs_data_cpio) FORCE
-	$(call if_changed,gzip)
+quiet_cmd_initfs = GEN     $@
+      cmd_initfs = \
+	$(initramfs) -o $@ \
+	$(if $(CONFIG_INITRAMFS_ROOT_UID), -u $(CONFIG_INITRAMFS_ROOT_UID)) \
+	$(if $(CONFIG_INITRAMFS_ROOT_GID), -g $(CONFIG_INITRAMFS_ROOT_GID)) \
+	$(ramfs-input)
 
-targets += initramfs_data.cpio.gz
+targets := initramfs_data.cpio.gz
+$(obj)/initramfs_data.cpio.gz: $(ramfs-filelist) $(obj)/gen_init_cpio FORCE
+	$(call if_changed,initfs)
 
-# Cleaning time
-clean-files  := initramfs_data.cpio.gz initramfs_list



More information about the klibc mailing list