new faster _filter_mods

This commit is contained in:
Tobias Powalowski 2023-10-26 20:48:41 +02:00
parent c6ec5f1c52
commit 9ac4072b09
2 changed files with 6 additions and 19 deletions

View file

@ -29,6 +29,7 @@ fi
_KERNELVERSION="$(_kver "${_KERNEL}")"
_MODULE_DIR="/lib/modules/${_KERNELVERSION}"
[[ -d "${_MODULE_DIR}" ]] || _abort "${_MODULE_DIR} is not a valid kernel module directory!"
_ALL_MODS="$(find "${_MODULE_DIR}" -name '*.ko*' 2>"${_NO_LOG}")"
_BUILD_DIR="$(_init_rootfs "${_KERNELVERSION}" "${_TARGET_DIR}")" || exit 1
_ROOTFS="${_TARGET_DIR:-${_BUILD_DIR}/root}"
if [[ -n "${_GENERATE_IMAGE}" ]]; then

View file

@ -82,25 +82,11 @@ modinfo -k ${_KERNELVERSION} --field firmware $(cut -d ' ' -f1 </proc/modules) |
}
_filter_mods() {
# Add modules to the rootfs, filtered by grep.
# $@: filter arguments to grep
# -f FILTER: ERE to filter found modules
local -i _COUNT=0
_MOD_INPUT="" OPTIND="" OPTARG="" _MOD_FILTER=()
while getopts ':f:' _FLAG; do
[[ "${_FLAG}" = "f" ]] && _MOD_FILTER+=("$OPTARG")
done
shift $(( OPTIND - 1 ))
# shellcheck disable=SC2154
while read -r -d '' _MOD_INPUT; do
(( ++_COUNT ))
for f in "${_MOD_FILTER[@]}"; do
[[ "${_MOD_INPUT}" =~ $f ]] && continue 2
done
_MOD_INPUT="${_MOD_INPUT##*/}" _MOD_INPUT="${_MOD_INPUT%.ko*}"
printf '%s\n' "${_MOD_INPUT}"
done < <(find "${_MODULE_DIR}" -name '*.ko*' -print0 2>"${_NO_LOG}" | grep -EZz "$@")
(( _COUNT ))
if [[ -z "${2}" ]]; then
grep -E "${1}" <<<"$_ALL_MODS"
else
grep -E "${3}" <<<"$_ALL_MODS" | grep -v -E "${2}"
fi
}
_all_mods() {