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>
This commit is contained in:
parent
48229662ce
commit
41f0688d91
@ -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")
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
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
|
||||
ifeq ($(BR2_TARGET_GRUB_SPLASH),)
|
||||
$(SED) '/^splashimage/d' $(ISO9660_TARGET_DIR)/boot/grub/menu.lst
|
||||
else
|
||||
$(INSTALL) -D -m 0644 boot/grub/splash.xpm.gz \
|
||||
$(ISO9660_TARGET_DIR)/splash.xpm.gz
|
||||
endif
|
||||
$(INSTALL) -D -m 0644 $(LINUX_IMAGE_PATH) $(ISO9660_TARGET_DIR)/kernel
|
||||
ifeq ($(BR2_TARGET_ROOTFS_INITRAMFS),y)
|
||||
$(SED) '/initrd/d' $(ISO9660_TARGET_DIR)/boot/grub/menu.lst
|
||||
else
|
||||
$(INSTALL) -D -m 0644 $(BINARIES_DIR)/rootfs.cpio$(ROOTFS_CPIO_COMPRESS_EXT) \
|
||||
$(ISO9660_TARGET_DIR)/initrd
|
||||
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_SPLASHSCREEN)
|
||||
$(ROOTFS_ISO9660_INITRD)
|
||||
endef
|
||||
|
||||
rootfs-iso9660: $(BINARIES_DIR)/rootfs.iso9660
|
||||
ROOTFS_ISO9660_PRE_GEN_HOOKS += ROOTFS_ISO9660_PREPARATION
|
||||
|
||||
rootfs-iso9660-show-depends:
|
||||
@echo $(ROOTFS_ISO9660_DEPENDENCIES)
|
||||
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
|
||||
|
||||
.PHONY: rootfs-iso9660 rootfs-iso9660-show-depends
|
||||
|
||||
################################################################################
|
||||
#
|
||||
# Toplevel Makefile options
|
||||
#
|
||||
################################################################################
|
||||
ifeq ($(BR2_TARGET_ROOTFS_ISO9660),y)
|
||||
TARGETS_ROOTFS += rootfs-iso9660
|
||||
endif
|
||||
$(eval $(call ROOTFS_TARGET,iso9660))
|
||||
|
Loading…
Reference in New Issue
Block a user