Hey,

Jon Ringle wrote:
> The patch adds support for creating a squashfs image.

good work, patch looks clean, however some comments inline.

> Add support for creating a squashfs image
> 
> Signed-off-by: Jon Ringle <[email protected]>
> 
> Index: rules/post/images.make
> ===================================================================
> --- rules/post/images.make    (revision 9989)
> +++ rules/post/images.make    (working copy)
> @@ -78,6 +78,7 @@
>  SEL_ROOTFS-$(PTXCONF_IMAGE_EXT2_GZIP)        += $(IMAGEDIR)/root.ext2.gz
>  SEL_ROOTFS-$(PTXCONF_IMAGE_UIMAGE)   += $(IMAGEDIR)/uRamdisk
>  SEL_ROOTFS-$(PTXCONF_IMAGE_CPIO)     += $(IMAGEDIR)/initrd.gz
> +SEL_ROOTFS-$(PTXCONF_IMAGE_SQUASHFS) += $(IMAGEDIR)/root.squashfs
>  
>  #
>  # extract all current ipkgs into the working directory
> @@ -118,6 +119,24 @@
>       @echo "done."
>  
>  #
> +# create the squashfs image
> +#
> +$(IMAGEDIR)/root.squashfs: $(STATEDIR)/image_working_dir 
> $(STATEDIR)/host-squashfs-tools.install
> +     @echo -n "Creating root.squashfs from working dir..."
> +     @cd $(WORKDIR);                                                 \
> +     (awk -F: $(DOPERMISSIONS) $(IMAGEDIR)/permissions &&            \
> +     (                                                               \
> +             echo -n "$(PTXCONF_SYSROOT_HOST)/sbin/mksquashfs ";     \
> +             echo -n "$(WORKDIR) ";                                  \
> +             echo -n "$@ ";                                          \
> +             echo -n "-noappend ";                                   \
> +             echo -n "-b $(PTXCONF_IMAGE_SQUASHFS_BLOCK_SIZE) ";     \
> +             echo -n "$(if $(subst "y",,$(PTXCONF_ENDIAN_BIG)),-be,-le) "; \

does this work properly for be and le? better use this one instead:

#
# $(call ptx/ifdef, PTXCONF_SYMBOL, yes, no) is equivalent to the C
# construct:
#
# PTXCONF_SYMBOL ? "yes" : "no"
#
# $(call ptx/ifdef, SYMBOL, yes, no)
#                     $1,    $2, $3
#
define ptx/ifdef
$(strip $(firstword $(subst y,$(2),$(filter y,$($(strip $(1))))) $(3)))
endef

it's defined in rules/pre/option-disabled.make and included automatically.

> +             echo -n $(PTXCONF_IMAGE_SQUASHFS_EXTRA_ARGS) )  \
> +     ) | $(FAKEROOT) --
> +     @echo "done."
> +
> +#
>  # create the ext2 image
>  #
>  $(IMAGEDIR)/root.ext2: $(STATEDIR)/image_working_dir
> Index: rules/host-squashfs-tools.make
> ===================================================================
> --- rules/host-squashfs-tools.make    (revision 0)
> +++ rules/host-squashfs-tools.make    (revision 0)
> @@ -0,0 +1,71 @@
> +# -*-makefile-*-
> +
> +#
> +# We provide this package
> +#
> +HOST_PACKAGES-$(PTXCONF_HOST_SQUASHFS_TOOLS) += host-squashfs-tools
> +
> +#
> +# Paths and names
> +#
> +HOST_SQUASHFS_TOOLS_VERSION  := 3.4
> +HOST_SQUASHFS_TOOLS          := squashfs$(HOST_SQUASHFS_TOOLS_VERSION)
> +HOST_SQUASHFS_TOOLS_SUFFIX   := tar.gz
> +HOST_SQUASHFS_TOOLS_URL              := 
> http://downloads.sourceforge.net/squashfs/$(HOST_SQUASHFS_TOOLS).$(HOST_SQUASHFS_TOOLS_SUFFIX)

please use $(PTXCONF_SETUP_SFMIRROR)

> +HOST_SQUASHFS_TOOLS_SOURCE   := 
> $(SRCDIR)/$(HOST_SQUASHFS_TOOLS).$(HOST_SQUASHFS_TOOLS_SUFFIX)
> +HOST_SQUASHFS_TOOLS_DIR              := 
> $(HOST_BUILDDIR)/$(HOST_SQUASHFS_TOOLS)/squashfs-tools
> +
> +# 
> ----------------------------------------------------------------------------
> +# Get
> +# 
> ----------------------------------------------------------------------------
> +
> +$(HOST_SQUASHFS_TOOLS_SOURCE):
> +     @$(call targetinfo)
> +     @$(call get, HOST_SQUASHFS_TOOLS)
> +
> +# 
> ----------------------------------------------------------------------------
> +# Extract
> +# 
> ----------------------------------------------------------------------------
> +
> +$(STATEDIR)/host-squashfs-tools.extract:
> +     @$(call targetinfo)
> +     @$(call clean, $(HOST_SQUASHFS_TOOLS_DIR))
> +     @$(call extract, HOST_SQUASHFS_TOOLS, $(HOST_BUILDDIR))
> +     @$(call patchin, HOST_SQUASHFS_TOOLS, $(HOST_SQUASHFS_TOOLS_DIR))
> +     @$(call touch)

you can delete the extract stage, because this is all standard here.

> +
> +# 
> ----------------------------------------------------------------------------
> +# Prepare
> +# 
> ----------------------------------------------------------------------------
> +
> +HOST_SQUASHFS_TOOLS_COMPILE_ENV := \
> +     $(HOST_ENV)
> +
> +HOST_SQUASHFS_TOOLS_MAKEVARS := \
> +     INSTALL_DIR="$(PTXCONF_SYSROOT_HOST)/sbin"
> +
> +$(STATEDIR)/host-squashfs-tools.prepare:
> +     @$(call targetinfo)
> +     @$(call touch)
> +
> +# 
> ----------------------------------------------------------------------------
> +# Compile
> +# 
> ----------------------------------------------------------------------------
> +
> +$(STATEDIR)/host-squashfs-tools.compile:
> +     @$(call targetinfo)
> +     cd $(HOST_SQUASHFS_TOOLS_DIR) && \
> +             $(HOST_SQUASHFS_TOOLS_PATH) \
> +             $(HOST_SQUASHFS_TOOLS_COMPILE_ENV) \
> +             $(MAKE) $(HOST_SQUASHFS_TOOLS_MAKEVARS) $(PARALLELMFLAGS_BROKEN)
> +     @$(call touch)
> +
> +# 
> ----------------------------------------------------------------------------
> +# Clean
> +# 
> ----------------------------------------------------------------------------
> +
> +host-squashfs-tools_clean:
> +     rm -rf $(STATEDIR)/host-squashfs-tools.*
> +     rm -rf $(HOST_SQUASHFS_TOOLS_DIR)
> +
> +# vim: syntax=make
> Index: rules/host-squashfs-tools.in
> ===================================================================
> --- rules/host-squashfs-tools.in      (revision 0)
> +++ rules/host-squashfs-tools.in      (revision 0)
> @@ -0,0 +1,5 @@
> +## SECTION=hosttools_noprompt
> +
> +config HOST_SQUASHFS_TOOLS
> +     tristate
> +     prompt "squashfs tools"
> Index: platforms/Kconfig
> ===================================================================
> --- platforms/Kconfig (revision 9989)
> +++ platforms/Kconfig (working copy)
> @@ -53,6 +53,7 @@
>  source "platforms/image_uimage.in"
>  source "platforms/image_cpio.in"
>  source "platforms/image_ext2.in"
> +source "platforms/image_squashfs.in"
>  endmenu
>  
>  source "platforms/flash.in"
> Index: platforms/image_squashfs.in
> ===================================================================
> --- platforms/image_squashfs.in       (revision 0)
> +++ platforms/image_squashfs.in       (revision 0)
> @@ -0,0 +1,29 @@

please add a section like "images" here, too. However it is not used,
yet.

> +menuconfig IMAGE_SQUASHFS
> +     bool
> +     select HOST_SQUASHFS_TOOLS
> +     prompt "Generate images/root.squashfs    "
> +     help
> +       Build a squashfs image of the root filesystem. This image can be 
> stored
> +       linearly into target's flash device at the start of the desired
> +       partition. You should erase the whole partition first if the image
> +       is smaller than partition's size. If not, garbage data in the 
> remaining
> +       space could confuse the filesystem driver.
> +
> +if IMAGE_SQUASHFS
> +
> +config IMAGE_SQUASHFS_BLOCK_SIZE
> +     string
> +     default "128K"
> +     prompt "Block size"
> +     help
> +       This allows the block size to be selected, both "K" and "M" postfixes 
> are
> +       supported, this can be either 4K, 8K, 16K, 32K, 64K, 128K, 256K, 512K 
> or 1M bytes.

Is this blocksize related to the size of the flash sectors? Perheps we
want to use "FLASH_BLOCKSIZE" from platforms/flash.in

> +
> +config IMAGE_SQUASHFS_EXTRA_ARGS
> +     string
> +     default ""
> +     prompt "extra arguments passed to mksquashfs"
> +     help
> +       You can add extra arguments for mksquashfs here
> +
> +endif
> 
> 

Marc

-- 
Pengutronix e.K.                         | Marc Kleine-Budde           |
Linux Solutions for Science and Industry | Phone: +49-231-2826-924     |
Vertretung West/Dortmund                 | Fax:   +49-5121-206917-5555 |
Amtsgericht Hildesheim, HRA 2686         | http://www.pengutronix.de   |

Attachment: signature.asc
Description: OpenPGP digital signature

--
ptxdist mailing list
[email protected]

Reply via email to