[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