2024-11-29 08:13:19 +00:00
USERFS_DIR = $( BUILD_DIR) /luban-userfs
# Since this function will be called from within an $(eval ...)
# all variable references except the arguments must be $$-quoted.
d e f i n e i n n e r - u s e r f s
USERFS_$(1)_NAME = userfs$( 1)
USERFS_$(1)_TYPE = rootfs
i f e q ( $$ ( B R 2 _ T A R G E T _ U S E R F S $( 1) _ T Y P E _ E X T 4 ) , y )
USERFS_$(1)_IMAGE_NAME ?= $$ ( call qstrip,$$ ( BR2_TARGET_USERFS$( 1) _NAME) ) .ext4
USERFS_$(1)_DEPENDENCIES += host-e2fsprogs
e l s e i f e q ( $$ ( B R 2 _ T A R G E T _ U S E R F S $( 1) _ T Y P E _ U B I F S ) , y )
USERFS_$(1)_IMAGE_NAME ?= $$ ( call qstrip,$$ ( BR2_TARGET_USERFS$( 1) _NAME) ) .ubifs
USERFS_$(1)_DEPENDENCIES = host-mtd
2024-11-29 08:23:11 +00:00
e l s e i f e q ( $$ ( B R 2 _ T A R G E T _ U S E R F S $( 1) _ T Y P E _ J F F S 2 ) , y )
USERFS_$(1)_IMAGE_NAME ?= $$ ( call qstrip,$$ ( BR2_TARGET_USERFS$( 1) _NAME) ) .jffs2
USERFS_$(1)_DEPENDENCIES = host-mtd
e l s e i f e q ( $$ ( B R 2 _ T A R G E T _ U S E R F S $( 1) _ T Y P E _ S Q U A S H F S ) , y )
USERFS_$(1)_IMAGE_NAME ?= $$ ( call qstrip,$$ ( BR2_TARGET_USERFS$( 1) _NAME) ) .squashfs
USERFS_$(1)_DEPENDENCIES = host-squashfs
2024-11-29 08:13:19 +00:00
e l s e
USERFS_$(1)_IMAGE_NAME ?= userfs$( 1) .dummyimage
e n d i f
2024-11-29 08:23:11 +00:00
i f e q ( $$ ( B R 2 _ T A R G E T _ U S E R F S $( 1) _ E X T 4 _ T O _ S P A R S E ) , y )
USERFS_$(1)_SPARSE_IMAGE_NAME ?= $$ ( call qstrip,$$ ( BR2_TARGET_USERFS$( 1) _NAME) ) .sparse
USERFS_$(1)_DEPENDENCIES += host-android-tools
e n d i f
2024-11-29 08:13:19 +00:00
USERFS_$(1)_FINAL_IMAGE_NAME = $$ ( strip $$ ( USERFS_$( 1) _IMAGE_NAME) )
2024-11-29 08:23:11 +00:00
i f e q ( $$ ( B R 2 _ T A R G E T _ U S E R F S $( 1) _ E X T 4 _ T O _ S P A R S E ) , y )
USERFS_$(1)_FINAL_SPARSE_IMAGE_NAME = $$ ( strip $$ ( USERFS_$( 1) _SPARSE_IMAGE_NAME) )
e n d i f
2024-11-29 08:13:19 +00:00
USERFS_$(1)_DIR = $$ ( USERFS_DIR) /fs$( 1) .$$ ( call qstrip,$$ ( BR2_TARGET_USERFS$( 1) _NAME) )
USERFS_$(1)_TARGET_DIR = $$ ( USERFS_$( 1) _DIR) /target
USERFS_$(1)_FINAL_RECURSIVE_DEPENDENCIES = $$ ( sort \
$$ ( if $$ ( filter undefined,$$ ( origin USERFS_$( 1) _FINAL_RECURSIVE_DEPENDENCIES__X) ) , \
$$ ( eval USERFS_$( 1) _FINAL_RECURSIVE_DEPENDENCIES__X := \
$$ ( foreach p, \
$$ ( USERFS_$( 1) _DEPENDENCIES) , \
$$ ( p) \
$$ ( $$ ( call UPPERCASE,$$ ( p) ) _FINAL_RECURSIVE_DEPENDENCIES) \
) \
) \
) \
$$ ( USERFS_$( 1) _FINAL_RECURSIVE_DEPENDENCIES__X) )
i f e q ( $$ ( B R 2 _ T A R G E T _ U S E R F S $( 1) _ G Z I P ) , y )
USERFS_$(1)_COMPRESS_EXT = .gz
USERFS_$(1)_COMPRESS_CMD = gzip -9 -c -n
e n d i f
i f e q ( $$ ( B R 2 _ T A R G E T _ U S E R F S $( 1) _ B Z I P 2 ) , y )
USERFS_$(1)_COMPRESS_EXT = .bz2
USERFS_$(1)_COMPRESS_CMD = bzip2 -9 -c
e n d i f
i f e q ( $$ ( B R 2 _ T A R G E T _ U S E R F S $( 1) _ L Z M A ) , y )
USERFS_$(1)_DEPENDENCIES += host-lzma
USERFS_$(1)_COMPRESS_EXT = .lzma
USERFS_$(1)_COMPRESS_CMD = $$ ( LZMA) -9 -c
e n d i f
i f e q ( $$ ( B R 2 _ T A R G E T _ U S E R F S $( 1) _ L Z 4 ) , y )
USERFS_$(1)_DEPENDENCIES += host-lz4
USERFS_$(1)_COMPRESS_EXT = .lz4
USERFS_$(1)_COMPRESS_CMD = lz4 -l -9 -c
e n d i f
i f e q ( $$ ( B R 2 _ T A R G E T _ U S E R F S $( 1) _ L Z O ) , y )
USERFS_$(1)_DEPENDENCIES += host-lzop
USERFS_$(1)_COMPRESS_EXT = .lzo
USERFS_$(1)_COMPRESS_CMD = $$ ( LZOP) -9 -c
e n d i f
i f e q ( $$ ( B R 2 _ T A R G E T _ U S E R F S $( 1) _ X Z ) , y )
USERFS_$(1)_DEPENDENCIES += host-xz
USERFS_$(1)_COMPRESS_EXT = .xz
USERFS_$(1)_COMPRESS_CMD = xz -9 -C crc32 -c
USERFS_$(1)_COMPRESS_CMD += -T $( PARALLEL_JOBS)
e n d i f
i f e q ( $( BR 2_TARGET_USERFS $ ( 1) _ZSTD ) , y )
USERFS_$(1)_DEPENDENCIES += host-zstd
USERFS_$(1)_COMPRESS_EXT = .zst
USERFS_$(1)_COMPRESS_CMD = zstd -19 -z -f -T$( PARALLEL_JOBS)
e n d i f
######## EXT4 commands ########
USERFS_$(1)_EXT4_SIZE = $$ ( call qstrip,$$ ( BR2_TARGET_USERFS$( 1) _EXT4_SIZE) )
USERFS_$(1)_EXT4_MKFS_OPTS = $$ ( call qstrip,$$ ( BR2_TARGET_USERFS$( 1) _EXT4_MKFS_OPTIONS) )
# qstrip results in stripping consecutive spaces into a single one. So the
# variable is not qstrip-ed to preserve the integrity of the string value.
USERFS_$(1)_EXT4_LABEL = $( subst " ,, $$ (call qstrip, $$ (BR2_TARGET_USERFS $( 1) _NAME)))
#" Syntax highlighting... :-/ )
USERFS_$(1)_EXT4_OPTS = \
-d $$ ( USERFS_$( 1) _TARGET_DIR) \
-r 1 \
-N $$ ( BR2_TARGET_USERFS$( 1) _EXT4_INODES) \
-m $$ ( BR2_TARGET_USERFS$( 1) _EXT4_RESBLKS) \
-L " $$ (USERFS_ $( 1) _EXT4_LABEL) " \
$$ ( USERFS_$( 1) _EXT4_MKFS_OPTS)
USERFS_$(1)_EXT4_CMD = rm -rf $$ ( BINARIES_DIR) /$$ ( USERFS_$( 1) _FINAL_IMAGE_NAME) ; \
MKE2FS_CONFIG = $( HOST_DIR) /etc/mke2fs.conf $( HOST_DIR) /sbin/mkfs.ext4 $$ ( USERFS_$( 1) _EXT4_OPTS) $$ ( BINARIES_DIR) /$$ ( USERFS_$( 1) _FINAL_IMAGE_NAME) \
" $$ (USERFS_ $( 1) _EXT4_SIZE) " \
|| { ret = $$ ?; \
echo " *** Maybe you need to increase the filesystem size (BR2_TARGET_USERFS $( 1) _EXT4_SIZE) " 1>& 2; \
exit $$ ret; \
}
2024-11-29 08:23:11 +00:00
i f e q ( $$ ( B R 2 _ T A R G E T _ U S E R F S $( 1) _ E X T 4 _ T O _ S P A R S E ) , y )
USERFS_$(1)_SPARSE_CMD = rm -rf $$ ( BINARIES_DIR) /$$ ( USERFS_$( 1) _FINAL_SPARSE_IMAGE_NAME) ; \
$( HOST_DIR) /bin/img2simg $$ ( BINARIES_DIR) /$$ ( USERFS_$( 1) _FINAL_IMAGE_NAME) $$ ( BINARIES_DIR) /$$ ( USERFS_$( 1) _FINAL_SPARSE_IMAGE_NAME) \
|| { ret = $$ ?; \
echo "*** ext4 image format to sparse image format failed" ; \
exit $$ ret; \
}
e n d i f
2024-11-29 08:13:19 +00:00
######## UBIFS commands ########
i f e q ( $$ ( B R 2 _ T A R G E T _ U S E R F S $( 1) _ U B I F S _ R T _ Z L I B ) , y )
USERFS_$(1)_UBIFS_OPTS += -x zlib
e n d i f
i f e q ( $$ ( B R 2 _ T A R G E T _ U S E R F S $( 1) _ U B I F S _ R T _ L Z O ) , y )
USERFS_$(1)_UBIFS_OPTS += -x lzo
e n d i f
i f e q ( $$ ( B R 2 _ T A R G E T _ U S E R F S $( 1) _ U B I F S _ R T _ N O N E ) , y )
USERFS_$(1)_UBIFS_OPTS += -x none
e n d i f
USERFS_$(1)_UBIFS_OPTS += $$ ( call qstrip,$$ ( BR2_TARGET_USERFS$( 1) _UBIFS_OPTS) )
i f e q ( $( BR 2_UBI_PARAM_USER_CUSTOM ) , y )
USERFS_$(1)_UBIFS_OPTS_CUSTOM = \
-e $( BR2_TARGET_ROOTFS_UBIFS_LEBSIZE) \
-c $$ ( BR2_TARGET_USERFS$( 1) _UBIFS_MAXLEBCNT) \
-m $( BR2_TARGET_ROOTFS_UBIFS_MINIOSIZE)
MK_UBIFS_$(1)_USER_CUSTOM = $( HOST_DIR) /sbin/mkfs.ubifs \
-d $$ ( USERFS_$( 1) _TARGET_DIR) $$ ( USERFS_$( 1) _UBIFS_OPTS_CUSTOM) $$ ( USERFS_$( 1) _UBIFS_OPTS) \
-o $$ ( BINARIES_DIR) /$$ ( USERFS_$( 1) _FINAL_IMAGE_NAME)
MK_UBIFS_$(1)_CMD += MK_UBIFS_$( 1) _USER_CUSTOM
e n d i f
i f e q ( $( BR 2_UBI_DEVICE_SPI_NAND_ 2K_ 128K ) , y )
UBIFS_LEBCNT_$(1)_2K_128K = $( shell echo " $( shell printf '%d' $( BR2_TARGET_USERFS$( 1) _UBIFS_MAX_SIZE) ) / 131072 " | bc)
USERFS_$(1)_UBIFS_OPTS_2K_128K = \
-e 0x1f000 \
-m 0x800 \
-c $$ ( UBIFS_LEBCNT_$( 1) _2K_128K)
MK_UBIFS_$(1)_2K_128K = $( HOST_DIR) /sbin/mkfs.ubifs \
-d $$ ( USERFS_$( 1) _TARGET_DIR) $$ ( USERFS_$( 1) _UBIFS_OPTS_2K_128K) $$ ( USERFS_$( 1) _UBIFS_OPTS) \
-o $$ ( BINARIES_DIR) /$$ ( call qstrip,$$ ( BR2_TARGET_USERFS$( 1) _NAME) ) _page_2k_block_128k.ubifs
MK_UBIFS_$(1)_CMD += MK_UBIFS_$( 1) _2K_128K
e n d i f
i f e q ( $( BR 2_UBI_DEVICE_SPI_NAND_ 4K_ 256K ) , y )
UBIFS_LEBCNT_$(1)_4K_256K = $( shell echo " $( shell printf '%d' $( BR2_TARGET_USERFS$( 1) _UBIFS_MAX_SIZE) ) / 262144 " | bc)
USERFS_$(1)_UBIFS_OPTS_4K_256K = \
-e 0x3e000 \
-m 0x1000 \
-c $$ ( UBIFS_LEBCNT_$( 1) _4K_256K)
MK_UBIFS_$(1)_4K_256K = $( HOST_DIR) /sbin/mkfs.ubifs \
-d $$ ( USERFS_$( 1) _TARGET_DIR) $$ ( USERFS_$( 1) _UBIFS_OPTS_4K_256K) $$ ( USERFS_$( 1) _UBIFS_OPTS) \
-o $$ ( BINARIES_DIR) /$$ ( call qstrip,$$ ( BR2_TARGET_USERFS$( 1) _NAME) ) _page_4k_block_256k.ubifs
MK_UBIFS_$(1)_CMD += MK_UBIFS_$( 1) _4K_256K
e n d i f
USERFS_$(1)_UBIFS_CMD = $$ ( foreach MKCMD, $$ ( MK_UBIFS_$( 1) _CMD) , $$ ( call $$ ( MKCMD) ) $$ ( sep) )
2025-08-14 07:13:29 +00:00
######## UBI commands ########
i f e q ( $$ ( B R 2 _ T A R G E T _ U S E R F S $( 1) _ U B I _ P A R A M _ U S E R _ C U S T O M ) , y )
USERFS_$(1)_UBI_UBINIZE_OPTS_CUSTOM = -m $$ ( BR2_TARGET_USERFS$( 1) _UBIFS_MINIOSIZE)
USERFS_$(1)_UBI_UBINIZE_OPTS_CUSTOM += -p $$ ( BR2_TARGET_USERFS$( 1) _UBI_PEBSIZE)
i f n e q ( $$ ( B R 2 _ T A R G E T _ U S E R F S $( 1) _ U B I _ S U B S I Z E ) , 0 )
USERFS_$(1)_UBI_UBINIZE_OPTS_CUSTOM += -s $$ ( BR2_TARGET_USERFS$( 1) _UBI_SUBSIZE)
e n d i f
USERFS_$(1)_UBI_UBINIZE_OPTS_CUSTOM += $$ ( call qstrip, $$ ( BR2_TARGET_USERFS$( 1) _UBI_OPTS) )
MK_USERFS_$(1)_UBI_HOOK += MK_USERFS_$( 1) _UBI_CMD_CUSTOM
e n d i f
i f e q ( $$ ( B R 2 _ T A R G E T _ U S E R F S $( 1) _ U B I _ D E V I C E _ S P I _ N A N D _ 2 K _ 1 2 8 K ) , y )
USERFS_$(1)_UBI_UBINIZE_OPTS_2K_128K = -m 0x800 -p 0x20000
USERFS_$(1)_UBI_UBINIZE_OPTS_2K_128K += $$ ( call qstrip, $$ ( BR2_TARGET_USERFS$( 1) _UBI_OPTS) )
MK_USERFS_$(1)_UBI_HOOK += MK_USERFS_$( 1) _UBI_CMD_2K_128K
e n d i f
i f e q ( $$ ( B R 2 _ T A R G E T _ U S E R F S $( 1) _ U B I _ D E V I C E _ S P I _ N A N D _ 4 K _ 2 5 6 K ) , y )
USERFS_$(1)_UBI_UBINIZE_OPTS_4K_256K = -m 0x1000 -p 0x40000
USERFS_$(1)_UBI_UBINIZE_OPTS_4K_256K += $$ ( call qstrip, $$ ( BR2_TARGET_USERFS$( 1) _UBI_OPTS) )
MK_USERFS_$(1)_UBI_HOOK += MK_USERFS_$( 1) _UBI_CMD_4K_256K
e n d i f
USERFS_$(1)_UBI_DEPENDENCIES = userfs$( 1) -ubifs
i f e q ( $$ ( B R 2 _ T A R G E T _ U S E R F S $( 1) _ U B I _ U S E _ C U S T O M _ C O N F I G ) , y )
USERFS_$(1)_UBI_UBINIZE_CONFIG_FILE_PATH = $$ ( call qstrip,$$ ( BR2_TARGET_USERFS$( 1) _UBI_CUSTOM_CONFIG_FILE) )
e l s e
USERFS_$(1)_UBI_UBINIZE_CONFIG_FILE_PATH = package/fs/userfs/ubinize.cfg.userfs$( 1)
e n d i f
MK_USERFS_$(1)_UBI_CMD_CUSTOM = \
sed 's;userfs$(1);$$(call qstrip,$$(BR2_TARGET_USERFS$(1)_NAME));;s;BR2_USERFS$(1)_UBIFS_PATH;$@fs;;s;BINARIES_DIR;$(BINARIES_DIR);' \
$$ ( USERFS_$( 1) _UBI_UBINIZE_CONFIG_FILE_PATH) > $( BUILD_DIR) /ubinize.custom.cfg \
rm $( BUILD_DIR) /ubinize.custom.cfg
MK_USERFS_$(1)_UBI_CMD_2K_128K = \
sed 's;userfs$(1);$$(call qstrip,$$(BR2_TARGET_USERFS$(1)_NAME));;s;BR2_USERFS$(1)_UBIFS_PATH;$$(BINARIES_DIR)/$$(call qstrip,$$(BR2_TARGET_USERFS$(1)_NAME))_page_2k_block_128k.ubifs;;s;BINARIES_DIR;$(BINARIES_DIR);' \
$$ ( USERFS_$( 1) _UBI_UBINIZE_CONFIG_FILE_PATH) > $( BUILD_DIR) /ubinize.2k_128k.cfg; \
$( HOST_DIR) /sbin/ubinize \
-o $$ ( BINARIES_DIR) /$$ ( call qstrip,$$ ( BR2_TARGET_USERFS$( 1) _NAME) ) _page_2k_block_128k.ubi \
$$ ( USERFS_$( 1) _UBI_UBINIZE_OPTS_2K_128K) \
$( BUILD_DIR) /ubinize.2k_128k.cfg
MK_USERFS_$(1)_UBI_CMD_4K_256K = \
sed 's;userfs$(1);$$(call qstrip,$$(BR2_TARGET_USERFS$(1)_NAME));;s;BR2_USERFS$(1)_UBIFS_PATH;$$(BINARIES_DIR)/$$(call qstrip,$$(BR2_TARGET_USERFS$(1)_NAME))_page_4k_block_256k.ubifs;;s;BINARIES_DIR;$(BINARIES_DIR);' \
$$ ( USERFS_$( 1) _UBI_UBINIZE_CONFIG_FILE_PATH) > $( BUILD_DIR) /ubinize.4k_256k.cfg; \
$( HOST_DIR) /sbin/ubinize \
-o $$ ( BINARIES_DIR) /$$ ( call qstrip,$$ ( BR2_TARGET _USERFS$( 1) _NAME) ) _page_4k_block_256k.ubi \
$$ ( USERFS_$( 1) _UBI_UBINIZE_OPTS_4K_256K) \
$( BUILD_DIR) /ubinize.4k_256k.cfg
USERFS_$(1)_UBI_CMD = $$ ( foreach MKCMD, $$ ( MK_USERFS_$( 1) _UBI_HOOK) , $$ ( call $$ ( MKCMD) ) $$ ( sep) )
2024-11-29 08:23:11 +00:00
######## JFFS2 commands ########
USERFS_$(1)_JFFS2_OPTS = -e $$ ( BR2_TARGET_USERFS$( 1) _JFFS2_EBSIZE) --with-xattr
USERFS_$(1)_JFFS2_SUMTOOL_OPTS = -e $$ ( BR2_TARGET_USERFS$( 1) _JFFS2_EBSIZE)
2025-06-05 06:33:02 +00:00
i f e q ( $( BR 2_GENERATE_IMAGE_AUTO_CALCULATE_SIZE ) , y )
i f n e q ( $$ ( s t r i p $$ ( B R 2 _ T A R G E T _ U S E R F S $( 1) _ J F F S 2 _ P A D S I Z E ) ) , 0 x 0 )
USERFS_$(1)_JFFS2_OPTS += --pad= $$ ( strip $$ ( BR2_TARGET_USERFS$( 1) _JFFS2_PADSIZE) )
e l s e
USERFS_$(1)_JFFS2_OPTS += -p
e n d i f
USERFS_$(1)_JFFS2_SUMTOOL_OPTS += -p
e l s e i f e q ( $$ ( B R 2 _ T A R G E T _ U S E R F S $( 1) _ J F F S 2 _ P A D ) , y )
2024-11-29 08:23:11 +00:00
i f n e q ( $$ ( s t r i p $$ ( B R 2 _ T A R G E T _ U S E R F S $( 1) _ J F F S 2 _ P A D S I Z E ) ) , 0 x 0 )
USERFS_$(1)_JFFS2_OPTS += --pad= $$ ( strip $$ ( BR2_TARGET_USERFS$( 1) _JFFS2_PADSIZE) )
e l s e
USERFS_$(1)_JFFS2_OPTS += -p
e n d i f
USERFS_$(1)_JFFS2_SUMTOOL_OPTS += -p
e n d i f
i f e q ( $$ ( B R 2 _ T A R G E T _ U S E R F S $( 1) _ J F F S 2 _ L E ) , y )
USERFS_$(1)_JFFS2_OPTS += -l
USERFS_$(1)_JFFS2_SUMTOOL_OPTS += -l
e n d i f
i f e q ( $$ ( B R 2 _ T A R G E T _ U S E R F S $( 1) _ J F F S 2 _ B E ) , y )
USERFS_$(1)_JFFS2_OPTS += -b
USERFS_$(1)_JFFS2_SUMTOOL_OPTS += -b
e n d i f
i f e q ( $$ ( B R 2 _ T A R G E T _ U S E R F S $( 1) _ J F F S 2 _ U S E _ C U S T O M _ P A G E S I Z E ) , y )
USERFS_$(1)_JFFS2_OPTS += -s $$ ( BR2_TARGET_USERFS$( 1) _JFFS2_CUSTOM_PAGESIZE)
e n d i f
i f e q ( $$ ( B R 2 _ T A R G E T _ U S E R F S $( 1) _ J F F S 2 _ N O C L E A N M A R K E R ) , y )
USERFS_$(1)_JFFS2_OPTS += -n
USERFS_$(1)_JFFS2_SUMTOOL_OPTS += -n
e n d i f
i f n e q ( $$ ( B R 2 _ T A R G E T _ U S E R F S $( 1) _ J F F S 2 _ S U M M A R Y ) , )
USERFS_$(1)_JFFS2_CMD = \
$( HOST_DIR) /sbin/mkfs.jffs2 $$ ( USERFS_$( 1) _JFFS2_OPTS) \
-d $$ ( USERFS_$( 1) _TARGET_DIR) \
-o $$ ( BINARIES_DIR) /$$ ( USERFS_$( 1) _FINAL_IMAGE_NAME) .nosummary \
$$ ( USERFS_$( 1) _JFFS2_SUMTOOL) $$ ( USERFS_$( 1) _JFFS2_SUMTOOL_OPTS) \
-i $$ ( BINARIES_DIR) /$$ ( USERFS_$( 1) _FINAL_IMAGE_NAME) .nosummary \
-o $$ ( BINARIES_DIR) /$$ ( USERFS_$( 1) _FINAL_IMAGE_NAME)
rm $$ ( BINARIES_DIR) /$$ ( USERFS_$( 1) _FINAL_IMAGE_NAME) .nosummary
e l s e
USERFS_$(1)_JFFS2_CMD = \
$( HOST_DIR) /sbin/mkfs.jffs2 $$ ( USERFS_$( 1) _JFFS2_OPTS) \
-d $$ ( USERFS_$( 1) _TARGET_DIR) \
-o $$ ( BINARIES_DIR) /$$ ( USERFS_$( 1) _FINAL_IMAGE_NAME)
e n d i f
######## SQUASHFS commands ########
USERFS_$(1)_SQUASHFS_ARGS = -noappend -processors $$ ( PARALLEL_JOBS)
i f e q ( $$ ( B R 2 _ T A R G E T _ U S E R F S $( 1) _ S Q U A S H F S _ P A D ) , y )
USERFS_$(1)_SQUASHFS_ARGS += -nopad
e n d i f
i f e q ( $$ ( B R 2 _ T A R G E T _ U S E R F S $( 1) _ S Q U A S H F S 4 _ L Z 4 ) , y )
USERFS_$(1)_SQUASHFS_ARGS += -comp lz4 -Xhc
e l s e i f e q ( $$ ( B R 2 _ T A R G E T _ U S E R F S $( 1) _ S Q U A S H F S 4 _ L Z O ) , y )
USERFS_$(1)_SQUASHFS_ARGS += -comp lzo
e l s e i f e q ( $$ ( B R 2 _ T A R G E T _ U S E R F S $( 1) _ S Q U A S H F S 4 _ L Z M A ) , y )
USERFS_$(1)_SQUASHFS_ARGS += -comp lzma
e l s e i f e q ( $$ ( B R 2 _ T A R G E T _ U S E R F S $( 1) _ S Q U A S H F S 4 _ X Z ) , y )
USERFS_$(1)_SQUASHFS_ARGS += -comp xz
e l s e i f e q ( $$ ( B R 2 _ T A R G E T _ U S E R F S $( 1) _ S Q U A S H F S 4 _ Z S T D ) , y )
USERFS_$(1)_SQUASHFS_ARGS += -comp zstd
e l s e
USERFS_$(1)_SQUASHFS_ARGS += -comp gzip
e n d i f
USERFS_$(1)_SQUASHFS_CMD = rm -rf $$ ( BINARIES_DIR) /$$ ( USERFS_$( 1) _FINAL_IMAGE_NAME) ; \
$( HOST_DIR) /bin/mksquashfs $$ ( USERFS_$( 1) _TARGET_DIR) \
$$ ( BINARIES_DIR) /$$ ( USERFS_$( 1) _FINAL_IMAGE_NAME) \
$$ ( USERFS_$( 1) _SQUASHFS_ARGS) ;
2024-11-29 08:13:19 +00:00
$$ (BINARIES_DIR)/$$(USERFS_$(1)_FINAL_IMAGE_NAME) : FAKEROOT_SCRIPT =$$( USERFS_ $ ( 1) _DIR ) /fakeroot
$$ (BINARIES_DIR)/$$(USERFS_$(1)_FINAL_IMAGE_NAME) : $$( USERFS_ $ ( 1) _DEPENDENCIES )
@$$ ( call MESSAGE," Generating filesystem image $$ (USERFS_ $( 1) _FINAL_IMAGE_NAME) " )
mkdir -p $$ ( @D)
mkdir -p $( USERFS_DIR)
rm -rf $$ ( USERFS_$( 1) _TARGET_DIR)
mkdir -p $$ ( USERFS_$( 1) _TARGET_DIR)
rsync -auH \
--exclude= /$$ ( notdir $$ ( TARGET_DIR_WARNING_FILE) ) \
$$ ( TARGET_USERFS$( 1) _DIR) / \
$$ ( USERFS_$( 1) _TARGET_DIR)
i f n e q ( $$ ( c a l l q s t r i p , $$ ( B R 2 _ T A R G E T _ U S E R F S $( 1) _ O V E R L A Y ) ) , )
if test -d $$ ( call qstrip,$$ ( BR2_TARGET_USERFS$( 1) _OVERLAY) ) /; then \
rsync -auH --chmod= u = rwX,go= rX --exclude .empty --exclude '*~' \
$$ ( call qstrip,$$ ( BR2_TARGET_USERFS$( 1) _OVERLAY) ) / \
$$ ( USERFS_$( 1) _TARGET_DIR) ; \
fi
e n d i f
echo '#!/bin/sh' > $$ ( FAKEROOT_SCRIPT)
echo "set -e" >> $$ ( FAKEROOT_SCRIPT)
echo " chown -h -R 0:0 $$ (USERFS_ $( 1) _TARGET_DIR) " >> $$ ( FAKEROOT_SCRIPT)
i f e q ( $$ ( B R 2 _ T A R G E T _ U S E R F S $( 1) _ T Y P E _ E X T 4 ) , y )
$$ ( call PRINTF,$$ ( USERFS_$( 1) _EXT4_CMD) ) >> $$ ( FAKEROOT_SCRIPT)
e n d i f
2024-11-29 08:23:11 +00:00
i f e q ( $$ ( B R 2 _ T A R G E T _ U S E R F S $( 1) _ E X T 4 _ T O _ S P A R S E ) , y )
$$ ( call PRINTF,$$ ( USERFS_$( 1) _SPARSE_CMD) ) >> $$ ( FAKEROOT_SCRIPT)
e n d i f
2024-11-29 08:13:19 +00:00
i f e q ( $$ ( B R 2 _ T A R G E T _ U S E R F S $( 1) _ T Y P E _ U B I F S ) , y )
$$ ( call PRINTF,$$ ( USERFS_$( 1) _UBIFS_CMD) ) >> $$ ( FAKEROOT_SCRIPT)
e n d i f
2024-11-29 08:23:11 +00:00
2025-08-14 07:13:29 +00:00
i f e q ( $$ ( B R 2 _ T A R G E T _ U S E R F S $( 1) _ T Y P E _ U B I ) , y )
$$ ( call PRINTF,$$ ( USERFS_$( 1) _UBI_CMD) ) >> $$ ( FAKEROOT_SCRIPT)
e n d i f
2024-11-29 08:23:11 +00:00
i f e q ( $$ ( B R 2 _ T A R G E T _ U S E R F S $( 1) _ T Y P E _ J F F S 2 ) , y )
$$ ( call PRINTF,$$ ( USERFS_$( 1) _JFFS2_CMD) ) >> $$ ( FAKEROOT_SCRIPT)
e n d i f
i f e q ( $$ ( B R 2 _ T A R G E T _ U S E R F S $( 1) _ T Y P E _ S Q U A S H F S ) , y )
$$ ( call PRINTF,$$ ( USERFS_$( 1) _SQUASHFS_CMD) ) >> $$ ( FAKEROOT_SCRIPT)
e n d i f
2024-11-29 08:13:19 +00:00
chmod a+x $$ ( FAKEROOT_SCRIPT)
PATH = $$ ( BR_PATH) FAKEROOTDONTTRYCHOWN = 1 $$ ( HOST_DIR) /bin/fakeroot -- $$ ( FAKEROOT_SCRIPT)
i f n e q ( $$ ( U S E R F S _ $( 1) _ C O M P R E S S _ C M D ) , )
PATH = $$ ( BR_PATH) $$ ( USERFS_$( 1) _COMPRESS_CMD) $$ @ > $$ @$$ ( USERFS_$( 1) _COMPRESS_EXT)
e n d i f
userfs$(1)-show-depends :
@echo $$ ( USERFS_$( 1) _DEPENDENCIES)
userfs$(1)-show-info :
@:
$$ ( info $$ ( call clean-json,{ $$ ( call json-info,USERFS_$( 1) ) } ) )
userfs$(1) : $$( BINARIES_DIR ) /$$( USERFS_ $ ( 1) _FINAL_IMAGE_NAME )
.PHONY : userfs $( 1) userfs $( 1) -show -depends userfs $( 1) -show -info
i f e q ( $$ ( B R 2 _ T A R G E T _ U S E R F S $( 1) ) , y )
TARGETS_USERFS += userfs$( 1)
PACKAGES += $$ ( filter-out userfs%,$$ ( USERFS_$( 1) _FINAL_RECURSIVE_DEPENDENCIES) )
e n d i f
e n d e f
# userfs1
$( eval $ ( call inner -userfs ,1) )
# userfs2
$( eval $ ( call inner -userfs ,2) )
# userfs3
$( eval $ ( call inner -userfs ,3) )