dracut: lib and usr/lib dirs detection
PATCH 1/2 dracut: lib and usr/lib dirs detection
First we check if $libdir and $usrlibdir vars are already set in config file. If not we perform simple detect. Vars are exported - to be useful in module/check scripts.
--- dracut | 13 ++++++++++++- 1 files changed, 12 insertions(+), 1 deletions(-)
dracut +12 -1
@@ -186,6 +186,17 @@ fi dracutfunctions=$dracutbasedir/dracut-functions export dracutfunctions +# Detect lib paths +[[ $libdir ]] || for libdir in /lib64 /lib; do + [[ -d $libdir ]] && break +done || { + derror 'No lib directory?!!!' + exit 1 +} +[[ $usrlibdir ]] || for usrlibdir in /usr/lib64 /usr/lib; do + [[ -d $usrlibdir ]] && break +done || dwarning 'No usr/lib directory!' + # This is kinda legacy -- eventually it should go away. case $dracutmodules in ""|auto) dracutmodules="all" ;;
@@ -240,7 +251,7 @@ chmod 755 "$initdir" export initdir hookdirs dracutbasedir dracutmodules drivers \ fw_dir drivers_dir debug beverbose no_kernel kernel_only \ add_drivers mdadmconf lvmconf filesystems ignore_kmodules \ - use_fstab + use_fstab libdir usrlibdir if [[ $kernel_only != yes ]]; then # Create some directory structure first
Signature · 1 line
1.7.2
A message that is not in the archive (sent off-list or not yet received): [email protected]
PATCH 2/2 use $libdir and $usrlibdir instead of individual detect with ldd
--- modules.d/01fips/install | 24 ++++++++---------------- modules.d/40network/install | 15 +++++---------- modules.d/50plymouth/plymouth-populate-initrd | 13 ++++--------- modules.d/90dmraid/install | 11 ++--------- modules.d/90lvm/install | 11 ++--------- modules.d/90multipath/install | 10 +--------- modules.d/95nfs/install | 14 +++++--------- modules.d/95udev-rules/install | 8 +++----- 8 files changed, 30 insertions(+), 76 deletions(-)
modules.d/01fips/install +8 -16
@@ -3,21 +3,13 @@ inst_hook pre-trigger 01 "$moddir/fips.sh" dracut_install sha512hmac rmmod insmod mount uname umount -libdir="lib" -if ldd $(find_binary sha512hmac) |grep -q /lib64/; then - libdir="lib64" -fi - -if [ -e /usr/$libdir/libsoftokn3.so ]; then - dracut_install \ - /usr/$libdir/libsoftokn3.so /usr/$libdir/libsoftokn3.chk \ - /usr/$libdir/libfreebl3.so /usr/$libdir/libfreebl3.chk -else - dracut_install \ - /$libdir/libsoftokn3.so /$libdir/libsoftokn3.chk \ - /$libdir/libfreebl3.so /$libdir/libfreebl3.chk -fi - -dracut_install /usr/$libdir/hmaccalc/sha512hmac.hmac +for dir in "$usrlibdir" "$libdir"; do + [[ -e $dir/libsoftokn3.so ]] && \ + dracut_install $dir/libsoftokn3.so $dir/libsoftokn3.chk \ + $dir/libfreebl3.so $dir/libfreebl3.chk && \ + break +done + +dracut_install $usrlibdir/hmaccalc/sha512hmac.hmac # vim:ts=8:sw=4:sts=4:et
modules.d/40network/install +5 -10
@@ -12,17 +12,12 @@ inst_hook cmdline 98 "$moddir/parse-bridge.sh" inst_hook cmdline 99 "$moddir/parse-ifname.sh" inst_hook pre-pivot 10 "$moddir/kill-dhclient.sh" -if ldd $(which sh) | grep -q lib64; then - LIBDIR="/lib64" -else - LIBDIR="/lib" -fi +arch=$(uname -m) -ARCH=$(uname -m) - -for dir in /usr/$LIBDIR/tls/$ARCH/ /usr/$LIBDIR/tls/ /usr/$LIBDIR/$ARCH/ /usr/$LIBDIR/ /$LIBDIR/; do - for i in $(ls $dir/libnss_dns.so.* $dir/libnss_mdns4_minimal.so.* 2>/dev/null); do - dracut_install $i +for dir in "$usrlibdir/tls/$arch" "$usrlibdir/tls" "$usrlibdir/$arch" \ + "$usrlibdir" "$libdir"; do + for i in "$dir"/libnss_dns.so.* "$dir"/libnss_mdns4_minimal.so.*; do + dracut_install "$i" done done
modules.d/50plymouth/plymouth-populate-initrd +4 -9
@@ -1,9 +1,4 @@ #!/bin/bash -if ldd /sbin/plymouthd |grep -q lib64; then - LIBDIR="/usr/lib64" -else - LIBDIR="/usr/lib" -fi PLYMOUTH_LOGO_FILE="/usr/share/pixmaps/system-logo-white.png" PLYMOUTH_THEME=$(plymouth-set-default-theme)
@@ -15,8 +10,8 @@ dracut_install /bin/plymouth \ mkdir -p "${initdir}/usr/share/plymouth" if [[ $hostonly ]]; then - dracut_install "${LIBDIR}/plymouth/text.so" \ - "${LIBDIR}/plymouth/details.so" \ + dracut_install "${usrlibdir}/plymouth/text.so" \ + "${usrlibdir}/plymouth/details.so" \ "/usr/share/plymouth/themes/details/details.plymouth" \ "/usr/share/plymouth/themes/text/text.plymouth" \
@@ -31,7 +26,7 @@ if [[ $hostonly ]]; then inst /usr/share/plymouth/themes/default.plymouth # Install plugin for this theme PLYMOUTH_PLUGIN=$(grep "^ModuleName=" /usr/share/plymouth/themes/default.plymouth | while read a b c; do echo $b; done;) - inst ${LIBDIR}/plymouth/${PLYMOUTH_PLUGIN}.so + inst "${usrlibdir}/plymouth/${PLYMOUTH_PLUGIN}.so" fi else for x in /usr/share/plymouth/themes/{text,details}/* ; do
@@ -40,7 +35,7 @@ else mkdir -p "${initdir}/$THEME_DIR" dracut_install "$x" done - for x in ${LIBDIR}/plymouth/{text,details}.so ; do + for x in "${usrlibdir}"/plymouth/{text,details}.so ; do [[ -f "$x" ]] || continue [[ "$x" != "${x%%/label.so}" ]] && continue dracut_install "$x"
modules.d/90dmraid/install +2 -9
@@ -3,17 +3,10 @@ dracut_install dmraid partx kpartx inst dmeventd -if ldd $(which dmraid) | grep -q lib64; then - LIBDIR="/lib64" -else - LIBDIR="/lib" -fi - -for i in $(ls /{usr,}/$LIBDIR/libdmraid-events*.so 2>/dev/null); do - dracut_install $i +for i in {"$libdir","$usrlibdir"}/libdmraid-events*.so; do + dracut_install "$i" done - inst_rules 10-dm.rules 13-dm-disk.rules 95-dm-notify.rules inst "$moddir/dmraid.sh" /sbin/dmraid_scan
modules.d/90lvm/install +2 -9
@@ -17,13 +17,6 @@ inst_rules 10-dm.rules 13-dm-disk.rules 95-dm-notify.rules 11-dm-lvm.rules inst "$moddir/lvm_scan.sh" /sbin/lvm_scan inst_hook cmdline 30 "$moddir/parse-lvm.sh" - -if ldd $(which lvm) | grep -q lib64; then - LIBDIR="/lib64" -else - LIBDIR="/lib" -fi - -for i in $(ls /{usr,}/$LIBDIR/libdevmapper-event-lvm*.so 2>/dev/null); do - dracut_install $i +for i in {"$libdir","$usrlibdir"}/libdevmapper-event-lvm*.so; do + dracut_install "$i" done
modules.d/90multipath/install +1 -9
@@ -1,11 +1,5 @@ #!/bin/bash -if ldd $(which multipath) 2>/dev/null |grep -q lib64; then - LIBDIR="/lib64" -else - LIBDIR="/lib" -fi - for f in \ /sbin/dmsetup \ /sbin/kpartx \
@@ -17,12 +11,10 @@ for f in \ /etc/xdrdevices.conf \ /etc/multipath.conf \ /etc/multipath/wwids \ - $(ls $LIBDIR/libmultipath* $LIBDIR/multipath/* 2>/dev/null) \ - ;do + "$libdir"/libmultipath* "$libdir"/multipath/*; do [ -e "$f" ] && inst "$f" done inst_hook pre-trigger 02 "$moddir/multipathd.sh" inst_hook pre-pivot 02 "$moddir/multipathd-stop.sh" inst_rules 40-multipath.rules -
modules.d/95nfs/install +5 -9
@@ -9,15 +9,11 @@ dracut_install /etc/nsswitch.conf /etc/rpc /etc/protocols dracut_install rpc.idmapd /etc/idmapd.conf dracut_install sed -if ldd $(which rpc.idmapd) |grep -q lib64; then - LIBDIR="/lib64" -else - LIBDIR="/lib" -fi - -dracut_install $(ls {/usr,}$LIBDIR/libnfsidmap_nsswitch.so* 2>/dev/null ) -dracut_install $(ls {/usr,}$LIBDIR/libnfsidmap/*.so 2>/dev/null ) -dracut_install $(ls {/usr,}$LIBDIR/libnfsidmap*.so* 2>/dev/null ) +for i in {"$libdir","$usrlibdir"}/libnfsidmap_nsswitch.so* \ + {"$libdir","$usrlibdir"}/libnfsidmap/*.so \ + {"$libdir","$usrlibdir"}/libnfsidmap*.so*; do + dracut_install "$i" +done nsslibs=$(sed -e '/^#/d' -e 's/^.*://' -e 's/\[NOTFOUND=return\]//' /etc/nsswitch.conf \ | tr -s '[:space:]' '\n' | sort -u | tr -s '[:space:]' '|')
modules.d/95udev-rules/install +3 -5
@@ -48,8 +48,6 @@ done [ -f /etc/arch-release ] && inst "$moddir/load-modules.sh" /lib/udev/load-modules.sh -if ldd $(find_binary udevd) |grep -q /lib64/; then - dracut_install /lib64/libnss_files* -else - dracut_install /lib/libnss_files* -fi +for i in {"$libdir","$usrlibdir"}/libnss_files*; do + dracut_install "$i" +done
Signature · 1 line
1.7.2
pushed and corrected both patches