mirror of
https://gitlab.archlinux.org/tpowa/archboot.git
synced 2024-09-19 19:40:37 +02:00
new module adding routine
This commit is contained in:
parent
628040687c
commit
20491cf8ac
2 changed files with 40 additions and 25 deletions
|
@ -84,7 +84,16 @@ for i in "${_HOOKS[@]}"; do
|
|||
done
|
||||
_install_files
|
||||
_install_libs
|
||||
_install_mods "${!_MOD_PATH[@]}"
|
||||
_MOD_DEPS="$(modinfo -F depends $_MOD_PATH 2>/dev/null | sed -e 's#,# #g' | tr " " "\n" | sort -u) $(modinfo -F softdep $_MOD_PATH 2>/dev/null | sed -e 's#.*: # #g' | tr " " "\n" | sort -u)"
|
||||
_DEP_COUNT=0
|
||||
while true; do
|
||||
_MOD_DEPS="$(echo $_MOD_DEPS $(modinfo -F depends $_MOD_DEPS 2>/dev/null | sed -e 's#,# #g' | tr " " "\n" | sort -u) | tr " " "\n" | sort -u )"
|
||||
_MOD_DEPS="$(echo $_MOD_DEPS $(modinfo -F softdep $_MOD_DEPS 2>/dev/null | sed -e 's#.*: # #g' | tr " " "\n" | sort -u) | tr " " "\n" | sort -u)"
|
||||
_DEP_COUNT2="$(echo "$_MOD_DEPS" | wc -w)"
|
||||
[[ "${_DEP_COUNT}" == "${_DEP_COUNT2}" ]] && break
|
||||
_DEP_COUNT="${_DEP_COUNT2}"
|
||||
done
|
||||
_install_mods $(modinfo -F filename $_MOD_PATH $_MOD_DEPS 2>/dev/null | grep -v builtin | sed -e 's#^/##g' -e 's# /# #g')
|
||||
ldconfig -r "${_ROOTFS}" &>"${_NO_LOG}" || exit 1
|
||||
# remove /var/cache/ldconfig/aux-cache for reproducibility
|
||||
rm -f -- "${_ROOTFS}/var/cache/ldconfig/aux-cache"
|
||||
|
|
|
@ -84,7 +84,7 @@ _filter_mods() {
|
|||
[[ "${_MOD_INPUT}" =~ $f ]] && continue 2
|
||||
done
|
||||
_MOD_INPUT="${_MOD_INPUT##*/}" _MOD_INPUT="${_MOD_INPUT%.ko*}"
|
||||
printf '%s\n' "${_MOD_INPUT//-/_}"
|
||||
printf '%s\n' "${_MOD_INPUT}"
|
||||
done < <(find "${_MODULE_DIR}" -name '*.ko*' -print0 2>"${_NO_LOG}" | grep -EZz "$@")
|
||||
(( _COUNT ))
|
||||
}
|
||||
|
@ -102,33 +102,39 @@ _mod() {
|
|||
# Add a kernel module to the rootfs. Dependencies will be
|
||||
# discovered and added.
|
||||
# $1: module name
|
||||
_CHECK="" _MOD="" _SOFT=() _DEPS=() _FIELD="" _VALUE="" _FW=()
|
||||
_CHECK="${1%.ko*}" _CHECK="${_CHECK//-/_}"
|
||||
_CHECK="" _MOD="" _SOFT=() _DEPS=() _FIELD="" _VALUE=""
|
||||
_CHECK="${1%.ko*}"
|
||||
# skip expensive stuff if this module has already been added
|
||||
(( _INCLUDED_MODS["${_CHECK}"] == 1 )) && return
|
||||
while IFS=':= ' read -r -d '' _FIELD _VALUE; do
|
||||
case "${_FIELD}" in
|
||||
filename) # Only add modules with filenames that look like paths (e.g.
|
||||
#echo $_CHECK
|
||||
#return
|
||||
#echo $_MOD_PATH | grep -q $_CHECK && return
|
||||
_MOD_PATH+="$_CHECK "
|
||||
#echo $_MOD_PATH | sort -u
|
||||
#echo $_CHECK
|
||||
#while IFS=':= ' read -r -d '' _FIELD _VALUE; do
|
||||
# case "${_FIELD}" in
|
||||
# filename) # Only add modules with filenames that look like paths (e.g.
|
||||
# it might be reported as "(builtin)"). We'll defer actually
|
||||
# checking whether or not the file exists -- any errors can be
|
||||
# handled during module install time.
|
||||
if [[ "${_VALUE}" == /* ]]; then
|
||||
_MOD="${_VALUE##*/}" _MOD="${_MOD%.ko*}"
|
||||
_MOD_PATH[".${_VALUE}"]=1
|
||||
_INCLUDED_MODS["${_MOD//-/_}"]=1
|
||||
fi
|
||||
;;
|
||||
depends) IFS=',' read -r -a _DEPS <<< "${_VALUE}"
|
||||
_map _mod "${_DEPS[@]}"
|
||||
;;
|
||||
softdep) read -ra _SOFT <<<"${_VALUE}"
|
||||
for i in "${_SOFT[@]}"; do
|
||||
[[ ${i} == *: ]] && continue
|
||||
_mod "${i}"
|
||||
done
|
||||
;;
|
||||
esac
|
||||
done < <(modinfo -k "${_KERNELVERSION}" -0 "${_CHECK}" 2>"${_NO_LOG}")
|
||||
#if [[ "${_VALUE}" == /* ]]; then
|
||||
#_MOD="${_VALUE##*/}" _MOD="${_MOD%.ko*}"
|
||||
#echo $_VALUE
|
||||
# _MOD_PATH+="${_VALUE} "
|
||||
#_INCLUDED_MODS["${_MOD//-/_}"]=1
|
||||
#fi
|
||||
# ;;
|
||||
# depends) IFS=',' read -r -a _DEPS <<< "${_VALUE}"
|
||||
# _map _mod "${_DEPS[@]}"
|
||||
# ;;
|
||||
# softdep) read -ra _SOFT <<<"${_VALUE}"
|
||||
# for i in "${_SOFT[@]}"; do
|
||||
# [[ ${i} == *: ]] && continue
|
||||
# _mod "${i}"
|
||||
# done
|
||||
# ;;
|
||||
# esac
|
||||
#done < <(modinfo -k "${_KERNELVERSION}" -0 "${_CHECK}" 2>"${_NO_LOG}")
|
||||
}
|
||||
|
||||
_full_dir() {
|
||||
|
|
Loading…
Reference in a new issue