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_conf[format.fsuuid]:-}" ]]; then
|
||
|
arg_conf[format.fsuuid]=$(uuidgen)
|
||
|
arg_orig=(--conf=format.fsuuid="${arg_conf[format.fsuuid]}" "${arg_orig[@]}")
|
||
|
fi
|
||
|
packages+=(erofs-utils)
|
||
|
}
|
||
|
|
||
|
# Overrides ##########################################################
|
||
|
|
||
|
format_genfstab:erofs() {
|
||
|
shellcheck:format_genfstab
|
||
|
echo "UUID=${arg_conf[format.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_conf[format.fsuuid]}" \
|
||
|
${arg_conf[format.erofs_compression]:+"-z${arg_conf[format.erofs_compression]}"} \
|
||
|
"$tmpdir/erofs.img" "$mount_dev"
|
||
|
cp -T "$tmpdir/erofs.img" "$arg_file"
|
||
|
)
|
||
|
|
||
|
shellcheck:format
|