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
Victor Lowther 2010-08-14 14:23:24 -05:00 committed by Harald Hoyer
parent cfa5a0da6d
commit 3478b3146f
1 changed files with 21 additions and 36 deletions

View File

@ -168,7 +168,7 @@ check_block_and_slaves() {
[[ -b /dev/block/$2 ]] || return 1 # Not a block device? So sorry.
"$1" $2 && return
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
fi
[[ -d /sys/dev/block/$2/slaves ]] || return 1
@ -214,22 +214,22 @@ check_vol_slaves() {
# and a symlink ${initdir}/lib -> lib64.
inst_dir() {
local dir="$1"
[[ -e "${initdir}$dir" ]] && return 0
[[ -e ${initdir}$dir ]] && return 0

# iterate over parent directories
local file=""
local IFS="/"
for part in $dir; do
[ -z "$part" ] && continue
[[ $part ]] || continue
file="$file/$part"
[[ -e "${initdir}$file" ]] && continue
[[ -e ${initdir}$file ]] && continue

if [ -L "$file" ]; then
if [[ -L $file ]]; then
# create link as the original
local target=$(readlink "$file")
ln -sfn "$target" "${initdir}$file" || return 1
# resolve relative path and recursively install destionation
[[ "$target" = "${target##*/}" ]] && target="${file%/*}/$target"
[[ $target = ${target##*/} ]] && target="${file%/*}/$target"
inst_dir "$target"
else
# create directory
@ -408,18 +408,12 @@ inst_rules() {
inst() {
case $# in
1) ;;
2)
[[ -z $initdir ]] && [[ -d $2 ]] && export initdir=$2
[[ $initdir = $2 ]] && set $1
;;
3)
[[ -z $initdir ]] && export initdir=$2
set $1 $3
;;
*)
derror "inst only takes 1 or 2 or 3 arguments"
exit 1
;;
2) [[ ! $initdir && -d $2 ]] && export initdir=$2
[[ $initdir = $2 ]] && set $1;;
3) [[ -z $initdir ]] && export initdir=$2
set $1 $3;;
*) derror "inst only takes 1 or 2 or 3 arguments"
exit 1;;
esac
for x in inst_symlink inst_script inst_binary inst_simple; do
$x "$@" && return 0
@ -537,7 +531,7 @@ should_source_module() {
[[ -x $1/installkernel ]] && return 0
return 1
fi
[[ -x $1/install ]] || [[ -x $1/installkernel ]] || return 1
[[ -x $1/install || -x $1/installkernel ]] || return 1
[[ -x $1/check ]] || return 0
"$1/check" $hostonly || continue
for dep in $("$1/check" -d); do
@ -642,14 +636,10 @@ filter_kernel_modules () (
fi
for modname in $(eval $filtercmd); do
case $modname in
*.ko)
"$1" "$modname" && echo "$modname"
;;
*.ko.gz)
gzip -dc "$modname" > $initdir/$$.ko
$1 $initdir/$$.ko && echo "$modname"
rm -f $initdir/$$.ko
;;
*.ko) "$1" "$modname" && echo "$modname";;
*.ko.gz) gzip -dc "$modname" > $initdir/$$.ko
$1 $initdir/$$.ko && echo "$modname"
rm -f $initdir/$$.ko;;
esac
done
)
@ -671,15 +661,10 @@ instmods() {
instmods $mpargs $(find "$srcmods" -path "*/${mod#=}/*")
fi
;;
--*)
mod=${mod##*/}
mpargs+=" $mod";;
i2o_scsi)
# Must never run this diagnostic-only module
shift; continue;
;;
*)
mod=${mod##*/}
--*) mod=${mod##*/}
mpargs+=" $mod";;
i2o_scsi) shift; continue;; # Do not load this diagnostic-only module
*) mod=${mod##*/}
# if we are already installed, skip this module and go on
# to the next one.
[[ -f $initdir/$1 ]] && { shift; continue; }