Trivial cleanups in dracut-functions
This is a patch series I have been playing with for awhile. It cleans up some of the dracut code and adds a PKGBUILD file to make it easier to use in Arch Linux.master
parent
cfa5a0da6d
commit
3478b3146f
|
@ -168,7 +168,7 @@ check_block_and_slaves() {
|
||||||
[[ -b /dev/block/$2 ]] || return 1 # Not a block device? So sorry.
|
[[ -b /dev/block/$2 ]] || return 1 # Not a block device? So sorry.
|
||||||
"$1" $2 && return
|
"$1" $2 && return
|
||||||
check_vol_slaves "$@" && return 0
|
check_vol_slaves "$@" && return 0
|
||||||
if [[ -f "/sys/dev/block/$2/../dev" ]]; then
|
if [[ -f /sys/dev/block/$2/../dev ]]; then
|
||||||
check_block_and_slaves $1 $(cat "/sys/dev/block/$2/../dev") && return 0
|
check_block_and_slaves $1 $(cat "/sys/dev/block/$2/../dev") && return 0
|
||||||
fi
|
fi
|
||||||
[[ -d /sys/dev/block/$2/slaves ]] || return 1
|
[[ -d /sys/dev/block/$2/slaves ]] || return 1
|
||||||
|
@ -214,22 +214,22 @@ check_vol_slaves() {
|
||||||
# and a symlink ${initdir}/lib -> lib64.
|
# and a symlink ${initdir}/lib -> lib64.
|
||||||
inst_dir() {
|
inst_dir() {
|
||||||
local dir="$1"
|
local dir="$1"
|
||||||
[[ -e "${initdir}$dir" ]] && return 0
|
[[ -e ${initdir}$dir ]] && return 0
|
||||||
|
|
||||||
# iterate over parent directories
|
# iterate over parent directories
|
||||||
local file=""
|
local file=""
|
||||||
local IFS="/"
|
local IFS="/"
|
||||||
for part in $dir; do
|
for part in $dir; do
|
||||||
[ -z "$part" ] && continue
|
[[ $part ]] || continue
|
||||||
file="$file/$part"
|
file="$file/$part"
|
||||||
[[ -e "${initdir}$file" ]] && continue
|
[[ -e ${initdir}$file ]] && continue
|
||||||
|
|
||||||
if [ -L "$file" ]; then
|
if [[ -L $file ]]; then
|
||||||
# create link as the original
|
# create link as the original
|
||||||
local target=$(readlink "$file")
|
local target=$(readlink "$file")
|
||||||
ln -sfn "$target" "${initdir}$file" || return 1
|
ln -sfn "$target" "${initdir}$file" || return 1
|
||||||
# resolve relative path and recursively install destionation
|
# resolve relative path and recursively install destionation
|
||||||
[[ "$target" = "${target##*/}" ]] && target="${file%/*}/$target"
|
[[ $target = ${target##*/} ]] && target="${file%/*}/$target"
|
||||||
inst_dir "$target"
|
inst_dir "$target"
|
||||||
else
|
else
|
||||||
# create directory
|
# create directory
|
||||||
|
@ -408,18 +408,12 @@ inst_rules() {
|
||||||
inst() {
|
inst() {
|
||||||
case $# in
|
case $# in
|
||||||
1) ;;
|
1) ;;
|
||||||
2)
|
2) [[ ! $initdir && -d $2 ]] && export initdir=$2
|
||||||
[[ -z $initdir ]] && [[ -d $2 ]] && export initdir=$2
|
[[ $initdir = $2 ]] && set $1;;
|
||||||
[[ $initdir = $2 ]] && set $1
|
3) [[ -z $initdir ]] && export initdir=$2
|
||||||
;;
|
set $1 $3;;
|
||||||
3)
|
*) derror "inst only takes 1 or 2 or 3 arguments"
|
||||||
[[ -z $initdir ]] && export initdir=$2
|
exit 1;;
|
||||||
set $1 $3
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
derror "inst only takes 1 or 2 or 3 arguments"
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
esac
|
||||||
for x in inst_symlink inst_script inst_binary inst_simple; do
|
for x in inst_symlink inst_script inst_binary inst_simple; do
|
||||||
$x "$@" && return 0
|
$x "$@" && return 0
|
||||||
|
@ -537,7 +531,7 @@ should_source_module() {
|
||||||
[[ -x $1/installkernel ]] && return 0
|
[[ -x $1/installkernel ]] && return 0
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
[[ -x $1/install ]] || [[ -x $1/installkernel ]] || return 1
|
[[ -x $1/install || -x $1/installkernel ]] || return 1
|
||||||
[[ -x $1/check ]] || return 0
|
[[ -x $1/check ]] || return 0
|
||||||
"$1/check" $hostonly || continue
|
"$1/check" $hostonly || continue
|
||||||
for dep in $("$1/check" -d); do
|
for dep in $("$1/check" -d); do
|
||||||
|
@ -642,14 +636,10 @@ filter_kernel_modules () (
|
||||||
fi
|
fi
|
||||||
for modname in $(eval $filtercmd); do
|
for modname in $(eval $filtercmd); do
|
||||||
case $modname in
|
case $modname in
|
||||||
*.ko)
|
*.ko) "$1" "$modname" && echo "$modname";;
|
||||||
"$1" "$modname" && echo "$modname"
|
*.ko.gz) gzip -dc "$modname" > $initdir/$$.ko
|
||||||
;;
|
$1 $initdir/$$.ko && echo "$modname"
|
||||||
*.ko.gz)
|
rm -f $initdir/$$.ko;;
|
||||||
gzip -dc "$modname" > $initdir/$$.ko
|
|
||||||
$1 $initdir/$$.ko && echo "$modname"
|
|
||||||
rm -f $initdir/$$.ko
|
|
||||||
;;
|
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
)
|
)
|
||||||
|
@ -671,15 +661,10 @@ instmods() {
|
||||||
instmods $mpargs $(find "$srcmods" -path "*/${mod#=}/*")
|
instmods $mpargs $(find "$srcmods" -path "*/${mod#=}/*")
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
--*)
|
--*) mod=${mod##*/}
|
||||||
mod=${mod##*/}
|
mpargs+=" $mod";;
|
||||||
mpargs+=" $mod";;
|
i2o_scsi) shift; continue;; # Do not load this diagnostic-only module
|
||||||
i2o_scsi)
|
*) mod=${mod##*/}
|
||||||
# Must never run this diagnostic-only module
|
|
||||||
shift; continue;
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
mod=${mod##*/}
|
|
||||||
# if we are already installed, skip this module and go on
|
# if we are already installed, skip this module and go on
|
||||||
# to the next one.
|
# to the next one.
|
||||||
[[ -f $initdir/$1 ]] && { shift; continue; }
|
[[ -f $initdir/$1 ]] && { shift; continue; }
|
||||||
|
|
Loading…
Reference in New Issue