59 lines
1.6 KiB
Bash
59 lines
1.6 KiB
Bash
#!/hint/bash
|
|
# Copyright (C) 2023-2024 Umorpha Systems
|
|
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
|
|
source "${install_prefix}/lib/mk/shellcheck.sh"
|
|
|
|
formats+=('erofs')
|
|
format_is_block['erofs']='false'
|
|
|
|
# Option parsing #####################################################
|
|
|
|
format_options['erofs']='fsuuid erofs_compression'
|
|
|
|
format_checkconf:erofs() {
|
|
shellcheck:format_checkconf
|
|
if $arg_edit; then
|
|
argparse:error '--conf=format=erofs does not support --edit'
|
|
fi
|
|
if [[ ${arg_conf[bootloader]} != none ]]; then
|
|
argparse:error '--conf=format=erofs requires --conf=bootloader=none'
|
|
fi
|
|
if [[ -z "${arg_fmtconf[fsuuid]:-}" ]]; then
|
|
arg_fmtconf[fsuuid]=$(uuidgen)
|
|
arg_orig=(--fmtconf=fsuuid="${arg_fmtconf[fsuuid]}" "${arg_orig[@]}")
|
|
fi
|
|
packages+=(erofs-utils)
|
|
}
|
|
|
|
# Overrides ##########################################################
|
|
|
|
format_genfstab:erofs() {
|
|
shellcheck:format_genfstab
|
|
echo "UUID=${arg_fmtconf[fsuuid]} / erofs defaults 0 1"
|
|
}
|
|
|
|
# format_is_block[…]='false' settings ################################
|
|
|
|
format_wants_tmpfs['erofs']='true'
|
|
format_after_clamps_mtime['erofs']='true'
|
|
|
|
format_before:erofs() {
|
|
:
|
|
}
|
|
|
|
format_after:erofs() (
|
|
shellcheck:format_after
|
|
local tmpdir
|
|
tmpdir=$(mktemp -dt -- "${0##*/}.erofs.XXXXXXXXXX")
|
|
trap "rm -f -- ${tmpdir@Q}/erofs.img; rmdir -- ${tmpdir@Q}" EXIT
|
|
|
|
osi.sh:sudo mkfs.erofs \
|
|
-U"${arg_fmtconf[fsuuid]}" \
|
|
${arg_fmtconf[erofs_compression]:+"-z${arg_fmtconf[erofs_compression]}"} \
|
|
"$tmpdir/erofs.img" "$mount_dev"
|
|
cp -T "$tmpdir/erofs.img" "$arg_file"
|
|
)
|
|
|
|
shellcheck:format
|