use pkg-config to determine the udev directory
parent
14b43bcaee
commit
604d1eb21a
|
|
@ -531,14 +531,50 @@ inst_symlink() {
|
||||||
ln -sfn $(convert_abs_rel "${_target}" "${_realsrc}") "$initdir/$_target"
|
ln -sfn $(convert_abs_rel "${_target}" "${_realsrc}") "$initdir/$_target"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
udevdir=$(pkg-config udev --variable=udevdir)
|
||||||
|
if ! [[ -d "$udevdir" ]]; then
|
||||||
|
[[ -d /lib/udev ]] && udevdir=/lib/udev
|
||||||
|
[[ -d /usr/lib/udev ]] && udevdir=/usr/lib/udev
|
||||||
|
fi
|
||||||
|
|
||||||
# attempt to install any programs specified in a udev rule
|
# attempt to install any programs specified in a udev rule
|
||||||
inst_rule_programs() {
|
inst_rule_programs() {
|
||||||
local _prog _bin
|
local _prog _bin
|
||||||
|
|
||||||
if grep -qE 'PROGRAM==?"[^ "]+' "$1"; then
|
if grep -qE 'PROGRAM==?"[^ "]+' "$1"; then
|
||||||
for _prog in $(grep -E 'PROGRAM==?"[^ "]+' "$1" | sed -r 's/.*PROGRAM==?"([^ "]+).*/\1/'); do
|
for _prog in $(grep -E 'PROGRAM==?"[^ "]+' "$1" | sed -r 's/.*PROGRAM==?"([^ "]+).*/\1/'); do
|
||||||
if [ -x /lib/udev/$_prog ]; then
|
if [ -x ${udevdir}/$_prog ]; then
|
||||||
_bin=/lib/udev/$_prog
|
_bin=${udevdir}/$_prog
|
||||||
|
else
|
||||||
|
_bin=$(find_binary "$_prog") || {
|
||||||
|
dinfo "Skipping program $_prog using in udev rule $(basename $1) as it cannot be found"
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
fi
|
||||||
|
|
||||||
|
#dinfo "Installing $_bin due to it's use in the udev rule $(basename $1)"
|
||||||
|
dracut_install "$_bin"
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
if grep -qE 'RUN==?"[^ "]+' "$1"; then
|
||||||
|
for _prog in $(grep -E 'RUN==?"[^ "]+' "$1" | sed -r 's/.*RUN==?"([^ "]+).*/\1/'); do
|
||||||
|
if [ -x ${udevdir}/$_prog ]; then
|
||||||
|
_bin=${udevdir}/$_prog
|
||||||
|
else
|
||||||
|
_bin=$(find_binary "$_prog") || {
|
||||||
|
dinfo "Skipping program $_prog using in udev rule $(basename $1) as it cannot be found"
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
fi
|
||||||
|
|
||||||
|
#dinfo "Installing $_bin due to it's use in the udev rule $(basename $1)"
|
||||||
|
dracut_install "$_bin"
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
if grep -qE 'PROGRAM==?"[^ "]+' "$1"; then
|
||||||
|
for _prog in $(grep -E 'IMPORT==?"[^ "]+' "$1" | sed -r 's/.*IMPORT==?"([^ "]+).*/\1/'); do
|
||||||
|
if [ -x ${udevdir}/$_prog ]; then
|
||||||
|
_bin=${udevdir}/$_prog
|
||||||
else
|
else
|
||||||
_bin=$(find_binary "$_prog") || {
|
_bin=$(find_binary "$_prog") || {
|
||||||
dinfo "Skipping program $_prog using in udev rule $(basename $1) as it cannot be found"
|
dinfo "Skipping program $_prog using in udev rule $(basename $1) as it cannot be found"
|
||||||
|
|
@ -557,23 +593,23 @@ inst_rule_programs() {
|
||||||
inst_rules() {
|
inst_rules() {
|
||||||
local _target=/etc/udev/rules.d _rule _found
|
local _target=/etc/udev/rules.d _rule _found
|
||||||
|
|
||||||
inst_dir "/lib/udev/rules.d"
|
inst_dir "${udevdir}/rules.d"
|
||||||
inst_dir "$_target"
|
inst_dir "$_target"
|
||||||
for _rule in "$@"; do
|
for _rule in "$@"; do
|
||||||
if [ "${rule#/}" = "$rule" ]; then
|
if [ "${rule#/}" = "$rule" ]; then
|
||||||
for r in /lib/udev/rules.d /etc/udev/rules.d; do
|
for r in ${udevdir}/rules.d /etc/udev/rules.d; do
|
||||||
if [[ -f $r/$_rule ]]; then
|
if [[ -f $r/$_rule ]]; then
|
||||||
_found="$r/$_rule"
|
_found="$r/$_rule"
|
||||||
inst_simple "$_found"
|
|
||||||
inst_rule_programs "$_found"
|
inst_rule_programs "$_found"
|
||||||
|
inst_simple "$_found"
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
for r in '' ./ $dracutbasedir/rules.d/; do
|
for r in '' ./ $dracutbasedir/rules.d/; do
|
||||||
if [[ -f ${r}$_rule ]]; then
|
if [[ -f ${r}$_rule ]]; then
|
||||||
_found="${r}$_rule"
|
_found="${r}$_rule"
|
||||||
inst_simple "$_found" "$_target/${_found##*/}"
|
|
||||||
inst_rule_programs "$_found"
|
inst_rule_programs "$_found"
|
||||||
|
inst_simple "$_found" "$_target/${_found##*/}"
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
[[ $_found ]] || dinfo "Skipping udev rule: $_rule"
|
[[ $_found ]] || dinfo "Skipping udev rule: $_rule"
|
||||||
|
|
|
||||||
|
|
@ -62,7 +62,7 @@ install() {
|
||||||
# 65-md-inc*.rules and its fine-grained controls, or cause other problems
|
# 65-md-inc*.rules and its fine-grained controls, or cause other problems
|
||||||
# when we explicitly don't want certain components to be incrementally
|
# when we explicitly don't want certain components to be incrementally
|
||||||
# assembled
|
# assembled
|
||||||
sed -i -r -e '/RUN\+?="[[:alpha:]/]*mdadm[[:blank:]]+(--incremental|-I)[[:blank:]]+(\$env\{DEVNAME\}|\$tempnode)"/d' "${initdir}/lib/udev/rules.d/64-md-raid.rules"
|
sed -i -r -e '/RUN\+?="[[:alpha:]/]*mdadm[[:blank:]]+(--incremental|-I)[[:blank:]]+(\$env\{DEVNAME\}|\$tempnode)"/d' "${initdir}${udevdir}/rules.d/64-md-raid.rules"
|
||||||
|
|
||||||
inst_rules "$moddir/65-md-incremental-imsm.rules"
|
inst_rules "$moddir/65-md-incremental-imsm.rules"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,12 +4,25 @@
|
||||||
|
|
||||||
install() {
|
install() {
|
||||||
local _i
|
local _i
|
||||||
# FIXME: would be nice if we didn't have to know which rules to grab....
|
|
||||||
|
systemdutildir=$(pkg-config systemd --variable=systemdutildir)
|
||||||
|
if ! [[ -d "$systemdutildir" ]]; then
|
||||||
|
[[ -d /lib/systemd ]] && systemdutildir=/lib/systemd
|
||||||
|
[[ -d /usr/lib/systemd ]] && systemdutildir=/usr/lib/systemd
|
||||||
|
fi
|
||||||
|
|
||||||
|
udevdir=$(pkg-config udev --variable=udevdir)
|
||||||
|
if ! [[ -d "$udevdir" ]]; then
|
||||||
|
[[ -d /lib/udev ]] && udevdir=/lib/udev
|
||||||
|
[[ -d /usr/lib/udev ]] && udevdir=/usr/lib/udev
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Fixme: would be nice if we didn't have to know which rules to grab....
|
||||||
# ultimately, /lib/initramfs/rules.d or somesuch which includes links/copies
|
# ultimately, /lib/initramfs/rules.d or somesuch which includes links/copies
|
||||||
# of the rules we want so that we just copy those in would be best
|
# of the rules we want so that we just copy those in would be best
|
||||||
dracut_install udevadm
|
dracut_install udevadm
|
||||||
[ -d ${initdir}/lib/systemd ] || mkdir -p ${initdir}/lib/systemd
|
[ -d ${initdir}/lib/systemd ] || mkdir -p ${initdir}/lib/systemd
|
||||||
for _i in /lib/systemd/systemd-udevd /lib/udev/udevd /sbin/udevd; do
|
for _i in ${systemdutildir}/systemd-udevd ${udevdir}/udevd /sbin/udevd; do
|
||||||
[ -x "$_i" ] || continue
|
[ -x "$_i" ] || continue
|
||||||
inst "$_i"
|
inst "$_i"
|
||||||
[[ $_i != "/lib/systemd/systemd-udevd" ]] \
|
[[ $_i != "/lib/systemd/systemd-udevd" ]] \
|
||||||
|
|
@ -59,8 +72,7 @@ install() {
|
||||||
pcmcia-socket-startup \
|
pcmcia-socket-startup \
|
||||||
pcmcia-check-broken-cis \
|
pcmcia-check-broken-cis \
|
||||||
; do
|
; do
|
||||||
[ -e /lib/udev/$_i ] && dracut_install /lib/udev/$_i
|
[ -e ${udevdir}/$_i ] && dracut_install ${udevdir}/$_i
|
||||||
[ -e /usr/lib/udev/$_i ] && dracut_install /usr/lib/udev/$_i
|
|
||||||
done
|
done
|
||||||
|
|
||||||
[ -f /etc/arch-release ] && \
|
[ -f /etc/arch-release ] && \
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue