From 4e005c47e535fcde9bff04699774bde36f358b38 Mon Sep 17 00:00:00 2001 From: Thomas Petazzoni Date: Wed, 2 Mar 2011 14:52:54 +0100 Subject: Allow several device tables and split in two parts our device table This allows to have a device table for all directories/files and another device table for the device files themselves. Both are needed for static /dev, but only the first one is needed when devtmpfs/mdev/udev are used. We take this opportunity to move the documentation of the device table format in a common location, package/makedevs/README. [Peter: simplify code slightly, fix indentation] Signed-off-by: Thomas Petazzoni Signed-off-by: Peter Korsgaard --- fs/Config.in | 20 ++++++++++++++------ fs/common.mk | 10 ++++++---- 2 files changed, 20 insertions(+), 10 deletions(-) (limited to 'fs') diff --git a/fs/Config.in b/fs/Config.in index 9ac3accd8..6f0f82ba2 100644 --- a/fs/Config.in +++ b/fs/Config.in @@ -36,13 +36,21 @@ config BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_UDEV endchoice config BR2_ROOTFS_DEVICE_TABLE - string "Path to the device table" - depends on BR2_ROOTFS_DEVICE_CREATION_STATIC - default "target/generic/device_table.txt" + string "Path to the device tables" + default "target/generic/device_table.txt target/generic/device_table_dev.txt" \ + if BR2_ROOTFS_DEVICE_CREATION_STATIC + default "target/generic/device_table.txt" \ + if (BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV || \ + BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_UDEV || \ + BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_DEVTMPFS) help - Specify the location of a device table, that will be passed - to the makedevs utility to create all the special device - files in the target filesystem. + Specify a space-separated list of device table locations, + that will be passed to the makedevs utility to create all + the special device files and assign correct owners and + permissions on various files in the target filesystem. + + See package/makedevs/README for details on the usage and + syntax of these files. choice prompt "Root FS skeleton" diff --git a/fs/common.mk b/fs/common.mk index 92be00cc0..4d5051460 100644 --- a/fs/common.mk +++ b/fs/common.mk @@ -32,7 +32,8 @@ # macro will automatically generate a compressed filesystem image. FAKEROOT_SCRIPT = $(BUILD_DIR)/_fakeroot.fs -ROOTFS_DEVICE_TABLE = $(call qstrip,$(BR2_ROOTFS_DEVICE_TABLE)) +FULL_DEVICE_TABLE = $(BUILD_DIR)/_device_table.txt +ROOTFS_DEVICE_TABLES = $(call qstrip,$(BR2_ROOTFS_DEVICE_TABLE)) define ROOTFS_TARGET_INTERNAL @@ -46,13 +47,14 @@ $(BINARIES_DIR)/rootfs.$(1): $(ROOTFS_$(2)_DEPENDENCIES) touch $(BUILD_DIR)/.fakeroot.00000 cat $(BUILD_DIR)/.fakeroot* > $(FAKEROOT_SCRIPT) echo "chown -R 0:0 $(TARGET_DIR)" >> $(FAKEROOT_SCRIPT) -ifneq ($(ROOTFS_DEVICE_TABLE),) - echo "$(HOST_DIR)/usr/bin/makedevs -d $(ROOTFS_DEVICE_TABLE) $(TARGET_DIR)" >> $(FAKEROOT_SCRIPT) +ifneq ($(ROOTFS_DEVICE_TABLES),) + cat $(ROOTFS_DEVICE_TABLES) > $(FULL_DEVICE_TABLE) + echo "$(HOST_DIR)/usr/bin/makedevs -d $(FULL_DEVICE_TABLE) $(TARGET_DIR)" >> $(FAKEROOT_SCRIPT) endif echo "$(ROOTFS_$(2)_CMD)" >> $(FAKEROOT_SCRIPT) chmod a+x $(FAKEROOT_SCRIPT) $(HOST_DIR)/usr/bin/fakeroot -- $(FAKEROOT_SCRIPT) - -@rm -f $(FAKEROOT_SCRIPT) + -@rm -f $(FAKEROOT_SCRIPT) $(FULL_DEVICE_TABLE) $(foreach hook,$(ROOTFS_$(2)_POST_GEN_HOOKS),$(call $(hook))$(sep)) ifeq ($$(BR2_TARGET_ROOTFS_$(2)_GZIP),y) gzip -9 -c $$@ > $$@.gz -- cgit v1.2.3