build initramfs: bad path in inst_rules when --local
When dracut-013 --local, then inst_rules tests for a pathname such as
[[ -f /etc/udev/rules.d//ext4/dracut/modules.d/10i18n/10-console.rules ]]
which obviously is bogus: there are two "root" there: /etc and /ext4 [The "/ext4/dracut" is where my --local versions live.] Such a path never can exist, so something is wrong with the intent.
Analysis:modules.d/10i18n/module-setup.sh: install_base() calls
inst_rules ${moddir}/10-console.rulesNote no underscore '_' in "${moddir}".
moddir is a global variable that is set by dracut:
for moddir in "$dracutbasedir/modules.d"/[0-9][0-9]*; do
When --local, then dracutbasedir is set in dracut:
dracutbasedir="$(readlink -f ${0%/*})"Based on both of these, then inst_rules() in dracut-functions does:
for _rule in "$@"; do
<<snip>>
for r in /lib/udev/rules.d /etc/udev/rules.d; do
if [[ -f $r/$_rule ]]; then
which leads to testing a pathname such as
[[ -f /etc/udev/rules.d//ext4/dracut/modules.d/10i18n/10-console.rules ]]A message that is not in the archive (sent off-list or not yet received): 4E73E5BB.90208-Po6cBsTGB2ZWk0Htik3J/[email protected]
Quoted 16 lines · John Reiser
When dracut-013 --local, then
inst_rulestests for a pathname such as[[ -f /etc/udev/rules.d//ext4/dracut/modules.d/10i18n/10-console.rules ]]which obviously is bogus: there are two "root" there: /etc and /ext4 [The "/ext4/dracut" is where my --local versions live.] Such a path never can exist, so something is wrong with the intent.
Analysis:
modules.d/10i18n/module-setup.sh:install_base()callsinst_rules ${moddir}/10-console.rulesNote no underscore '_' in "${moddir}".
moddir is a global variable that is set by dracut:
for moddir in "$dracutbasedir/modules.d"/[0-9][0-9]*; do When --local, then dracutbasedir is set in dracut: dracutbasedir="$(readlink -f ${0%/*})"
Quoted 8 lines
Based on both of these, then
inst_rules()in dracut-functions does:for _rule in "$@"; do <<snip>> for r in /lib/udev/rules.d /etc/udev/rules.d; do if [[ -f $r/$_rule ]]; then which leads to testing a pathname such as [[ -f /etc/udev/rules.d//ext4/dracut/modules.d/10i18n/10-console.rules ]]
http://git.surfsite.org/?p=dracut.git;a=commitdiff;h=76f5fa549c483a7a38e4757578480096b94615ac