aboutsummaryrefslogtreecommitdiff
path: root/fs
diff options
context:
space:
mode:
authorGravatar Thomas Petazzoni <thomas.petazzoni@free-electrons.com>2015-06-09 00:21:35 +0200
committerGravatar Thomas Petazzoni <thomas.petazzoni@free-electrons.com>2015-06-14 23:18:20 +0200
commit41f0688d9113dd33a5971c5654c7efd022727ed2 (patch)
tree67ff34c091860b007f9fcf8baa1ba381f2a9aa48 /fs
parent48229662ce5f01e0765823eca5b53db106ace41a (diff)
downloadbuildroot-41f0688d9113dd33a5971c5654c7efd022727ed2.tar.gz
buildroot-41f0688d9113dd33a5971c5654c7efd022727ed2.tar.bz2
fs/iso9660: convert to the filesystem infrastructure
This commit converts the iso9660 logic to the common rootfs infrastructure. What previously prevented it from being converted is that the iso9660 logic needed to remove a temporary folder after the image has been created. However, since Buildroot typically keeps build artefacts around, this commit changes the logic to keep this temporary folder around. Thanks to this change, converting to the common rootfs infrastructure becomes possible. In addition, the temporary folder is renamed from $(BUILD_DIR)/iso9660 to the more descriptive $(BUILD_DIR)/rootfs-iso9660.tmp. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Diffstat (limited to 'fs')
-rw-r--r--fs/iso9660/iso9660.mk68
1 files changed, 31 insertions, 37 deletions
diff --git a/fs/iso9660/iso9660.mk b/fs/iso9660/iso9660.mk
index 4ccfce955c..35b0fe589e 100644
--- a/fs/iso9660/iso9660.mk
+++ b/fs/iso9660/iso9660.mk
@@ -2,59 +2,53 @@
#
# Build the iso96600 root filesystem image
#
-# Cannot be converted to the ROOTFS_TARGET infrastructure, because of
-# the temporary construction in ISO9660_TARGET_DIR.
-#
################################################################################
-ISO9660_TARGET_DIR = $(BUILD_DIR)/iso9660
+ISO9660_TARGET_DIR = $(BUILD_DIR)/rootfs-iso9660.tmp
ISO9660_BOOT_MENU := $(call qstrip,$(BR2_TARGET_ROOTFS_ISO9660_BOOT_MENU))
ROOTFS_ISO9660_DEPENDENCIES = grub host-cdrkit host-fakeroot linux rootfs-cpio
-$(BINARIES_DIR)/rootfs.iso9660: $(ROOTFS_ISO9660_DEPENDENCIES)
- @$(call MESSAGE,"Generating root filesystem image rootfs.iso9660")
- $(INSTALL) -D -m 0644 $(GRUB_DIR)/stage2/stage2_eltorito \
- $(ISO9660_TARGET_DIR)/boot/grub/stage2_eltorito
- $(INSTALL) -D -m 0644 $(ISO9660_BOOT_MENU) \
- $(ISO9660_TARGET_DIR)/boot/grub/menu.lst
-ifeq ($(BR2_TARGET_GRUB_SPLASH),)
- $(SED) '/^splashimage/d' $(ISO9660_TARGET_DIR)/boot/grub/menu.lst
-else
+ifeq ($(BR2_TARGET_GRUB_SPLASH),y)
+define ROOTFS_ISO9660_SPLASHSCREEN
$(INSTALL) -D -m 0644 boot/grub/splash.xpm.gz \
$(ISO9660_TARGET_DIR)/splash.xpm.gz
+endef
+else
+define ROOTFS_ISO9660_SPLASHSCREEN
+ $(SED) '/^splashimage/d' $(ISO9660_TARGET_DIR)/boot/grub/menu.lst
+endef
endif
- $(INSTALL) -D -m 0644 $(LINUX_IMAGE_PATH) $(ISO9660_TARGET_DIR)/kernel
+
ifeq ($(BR2_TARGET_ROOTFS_INITRAMFS),y)
+define ROOTFS_ISO9660_INITRD
$(SED) '/initrd/d' $(ISO9660_TARGET_DIR)/boot/grub/menu.lst
+endef
else
+define ROOTFS_ISO9660_INITRD
$(INSTALL) -D -m 0644 $(BINARIES_DIR)/rootfs.cpio$(ROOTFS_CPIO_COMPRESS_EXT) \
$(ISO9660_TARGET_DIR)/initrd
+endef
endif
- # Use fakeroot to pretend all target binaries are owned by root
- rm -f $(FAKEROOT_SCRIPT)
- echo "chown -h -R 0:0 $(ISO9660_TARGET_DIR)" >> $(FAKEROOT_SCRIPT)
- # Use fakeroot so mkisofs believes the previous fakery
- echo "$(HOST_DIR)/usr/bin/genisoimage -R -b boot/grub/stage2_eltorito -no-emul-boot " \
- "-boot-load-size 4 -boot-info-table -o $@ $(ISO9660_TARGET_DIR)" \
- >> $(FAKEROOT_SCRIPT)
- chmod a+x $(FAKEROOT_SCRIPT)
- $(HOST_DIR)/usr/bin/fakeroot -- $(FAKEROOT_SCRIPT)
- -@rm -f $(FAKEROOT_SCRIPT)
- -@rm -rf $(ISO9660_TARGET_DIR)
-rootfs-iso9660: $(BINARIES_DIR)/rootfs.iso9660
+define ROOTFS_ISO9660_PREPARATION
+ $(RM) -rf $(ISO9660_TARGET_DIR)
+ mkdir -p $(ISO9660_TARGET_DIR)
+ $(INSTALL) -D -m 0644 $(GRUB_DIR)/stage2/stage2_eltorito \
+ $(ISO9660_TARGET_DIR)/boot/grub/stage2_eltorito
+ $(INSTALL) -D -m 0644 $(ISO9660_BOOT_MENU) \
+ $(ISO9660_TARGET_DIR)/boot/grub/menu.lst
+ $(INSTALL) -D -m 0644 $(LINUX_IMAGE_PATH) $(ISO9660_TARGET_DIR)/kernel
+ $(ROOTFS_ISO9660_SPLASHSCREEN)
+ $(ROOTFS_ISO9660_INITRD)
+endef
-rootfs-iso9660-show-depends:
- @echo $(ROOTFS_ISO9660_DEPENDENCIES)
+ROOTFS_ISO9660_PRE_GEN_HOOKS += ROOTFS_ISO9660_PREPARATION
-.PHONY: rootfs-iso9660 rootfs-iso9660-show-depends
+define ROOTFS_ISO9660_CMD
+ $(HOST_DIR)/usr/bin/genisoimage -R -b boot/grub/stage2_eltorito \
+ -no-emul-boot -boot-load-size 4 -boot-info-table \
+ -o $@ $(ISO9660_TARGET_DIR)
+endef
-################################################################################
-#
-# Toplevel Makefile options
-#
-################################################################################
-ifeq ($(BR2_TARGET_ROOTFS_ISO9660),y)
-TARGETS_ROOTFS += rootfs-iso9660
-endif
+$(eval $(call ROOTFS_TARGET,iso9660))