Debian multiarch support

Another solution could be searching in directories found at
/etc/ld.so.conf.d/*.conf or adding a new parameter. Here is a patch
which adds a new --libdirs parameter, and also a new inst_libdir_file
function which will try to expand metacharacters on each lib
directory:

    inst_libdir_file "libdevmapper-event-lvm*.so"
master
Jon Ander Hernandez 2012-04-10 15:14:38 +02:00 committed by Harald Hoyer
parent 6625b74e90
commit c9143a63fe
12 changed files with 58 additions and 42 deletions

View File

@ -677,6 +677,34 @@ dracut_install() {
done done
} }



# inst_libdir_file [-n <pattern>] <file> [<file>...]
# Install a <file> located on a lib directory to the initramfs image
# -n <pattern> install non-matching files
inst_libdir_file() {
if [[ "$1" == "-n" ]]; then
local _pattern=$1
shift 2
for _dir in $libdirs; do
for _i in "$@"; do
for _f in "$_dir"/$_i; do
[[ "$_i" =~ $_pattern ]] || continue
[[ -e "$_i" ]] && dracut_install "$_i"
done
done
done
else
for _dir in $libdirs; do
for _i in "$@"; do
for _f in "$_dir"/$_i; do
[[ -e "$_f" ]] && dracut_install "$_f"
done
done
done
fi
}


# install function decompressing the target and handling symlinks # install function decompressing the target and handling symlinks
# $@ = list of compressed (gz or bz2) files or symlinks pointing to such files # $@ = list of compressed (gz or bz2) files or symlinks pointing to such files
# #

View File

@ -221,6 +221,7 @@ while (($# > 0)); do
--filesystems) push_arg filesystems_l "$@" || shift;; --filesystems) push_arg filesystems_l "$@" || shift;;
-I|--install) push_arg install_items_l "$@" || shift;; -I|--install) push_arg install_items_l "$@" || shift;;
--fwdir) push_arg fw_dir_l "$@" || shift;; --fwdir) push_arg fw_dir_l "$@" || shift;;
--libdirs) push_arg libdirs_l "$@" || shift;;
--fscks) push_arg fscks_l "$@" || shift;; --fscks) push_arg fscks_l "$@" || shift;;
--add-fstab) push_arg add_fstab_l "$@" || shift;; --add-fstab) push_arg add_fstab_l "$@" || shift;;
--mount) push_arg fstab_lines "$@" || shift;; --mount) push_arg fstab_lines "$@" || shift;;
@ -400,6 +401,13 @@ if (( ${#fw_dir_l[@]} )); then
done done
fi fi


if (( ${#libdirs_l[@]} )); then
libdirs=''
while pop libdirs_l val; do
libdirs+="$val "
done
fi

[[ $stdloglvl_l ]] && stdloglvl=$stdloglvl_l [[ $stdloglvl_l ]] && stdloglvl=$stdloglvl_l
[[ ! $stdloglvl ]] && stdloglvl=4 [[ ! $stdloglvl ]] && stdloglvl=4
stdloglvl=$((stdloglvl + verbosity_mod_l)) stdloglvl=$((stdloglvl + verbosity_mod_l))
@ -505,14 +513,14 @@ ddebug "Executing $0 $dracut_args"


# Detect lib paths # Detect lib paths
[[ $libdir ]] || for libdir in /lib64 /lib; do [[ $libdir ]] || for libdir in /lib64 /lib; do
[[ -d $libdir ]] && break [[ -d $libdir ]] && libdirs+=" $libdir" && break
done || { done || {
dfatal 'No lib directory?!!!' dfatal 'No lib directory?!!!'
exit 1 exit 1
} }


[[ $usrlibdir ]] || for usrlibdir in /usr/lib64 /usr/lib; do [[ $usrlibdir ]] || for usrlibdir in /usr/lib64 /usr/lib; do
[[ -d $usrlibdir ]] && break [[ -d $usrlibdir ]] && libdirs+=" $usrlibdir" && break
done || dwarn 'No usr/lib directory!' done || dwarn 'No usr/lib directory!'


# This is kinda legacy -- eventually it should go away. # This is kinda legacy -- eventually it should go away.

View File

@ -34,12 +34,11 @@ install() {


dracut_install sha512hmac rmmod insmod mount uname umount dracut_install sha512hmac rmmod insmod mount uname umount


for _dir in "$usrlibdir" "$libdir"; do inst_libdir_file libsoftokn3.so
[[ -e $_dir/libsoftokn3.so ]] && \ inst_libdir_file libsoftokn3.so
dracut_install $_dir/libsoftokn3.so $_dir/libsoftokn3.chk \ inst_libdir_file libsoftokn3.chk
$_dir/libfreebl3.so $_dir/libfreebl3.chk && \ inst_libdir_file libfreebl3.so
break inst_libdir_file libfreebl3.chk
done


dracut_install $usrlibdir/hmaccalc/sha512hmac.hmac dracut_install $usrlibdir/hmaccalc/sha512hmac.hmac
if command -v prelink >/dev/null; then if command -v prelink >/dev/null; then

View File

@ -89,12 +89,7 @@ install() {


_arch=$(uname -m) _arch=$(uname -m)


for _dir in "$usrlibdir/tls/$_arch" "$usrlibdir/tls" "$usrlibdir/$_arch" \ inst_libdir_file {"tls/$_arch/",tls/,"$_arch/",}"libnss_dns.so.*"
"$usrlibdir" "$libdir"; do inst_libdir_file {"tls/$_arch/",tls/,"$_arch/",}"libnss_mdns4_minimal.so.*"
for _i in "$_dir"/libnss_dns.so.* "$_dir"/libnss_mdns4_minimal.so.*; do
[ -e "$_i" ] && dracut_install "$_i"
done
done

} }



View File

@ -31,9 +31,7 @@ install() {
[[ -f $file ]] && inst $file [[ -f $file ]] && inst $file
done done


for file in {"$usrlibdir","$libdir"}/gconv/*; do inst_libdir_file "gconv/*"
[[ -f $file ]] && inst $file
done
#inst /usr/lib/locale/locale-archive #inst /usr/lib/locale/locale-archive


dracut_install cmsfs-fuse fusermount ulockmgr_server bash tr insmod rmmod cat dracut_install cmsfs-fuse fusermount ulockmgr_server bash tr insmod rmmod cat

View File

@ -22,9 +22,7 @@ install() {


type -P dmeventd >/dev/null && dracut_install dmeventd type -P dmeventd >/dev/null && dracut_install dmeventd


for _i in {"$libdir","$usrlibdir"}/libdevmapper-event.so*; do inst_libdir_file "libdevmapper-event.so*"
[ -e "$_i" ] && dracut_install "$_i"
done


inst_rules 10-dm.rules 13-dm-disk.rules 95-dm-notify.rules inst_rules 10-dm.rules 13-dm-disk.rules 95-dm-notify.rules
# Gentoo ebuild for LVM2 prior to 2.02.63-r1 doesn't install above rules # Gentoo ebuild for LVM2 prior to 2.02.63-r1 doesn't install above rules

View File

@ -62,9 +62,7 @@ install() {
inst_rules 64-md-raid.rules inst_rules 64-md-raid.rules
fi fi


for _i in {"$libdir","$usrlibdir"}/libdmraid-events*.so*; do inst_libdir_file "libdmraid-events*.so*"
[ -e "$_i" ] && dracut_install "$_i"
done


inst_rules "$moddir/61-dmraid-imsm.rules" inst_rules "$moddir/61-dmraid-imsm.rules"
#inst "$moddir/dmraid-cleanup.sh" /sbin/dmraid-cleanup #inst "$moddir/dmraid-cleanup.sh" /sbin/dmraid-cleanup

View File

@ -60,8 +60,6 @@ install() {
inst "$moddir/lvm_scan.sh" /sbin/lvm_scan inst "$moddir/lvm_scan.sh" /sbin/lvm_scan
inst_hook cmdline 30 "$moddir/parse-lvm.sh" inst_hook cmdline 30 "$moddir/parse-lvm.sh"


for _i in {"$libdir","$usrlibdir"}/libdevmapper-event-lvm*.so; do inst_libdir_file "libdevmapper-event-lvm*.so"
[ -e "$_i" ] && dracut_install "$_i"
done
} }



View File

@ -62,11 +62,13 @@ install() {
/sbin/xdrgetprio \ /sbin/xdrgetprio \
/etc/xdrdevices.conf \ /etc/xdrdevices.conf \
/etc/multipath.conf \ /etc/multipath.conf \
/etc/multipath/* \ /etc/multipath/*; do
"$libdir"/libmultipath* "$libdir"/multipath/*; do
[ -e "$_f" ] && inst "$_f" [ -e "$_f" ] && inst "$_f"
done done


inst_libdir_file "libmultipath*"
inst_libdir_file "multipath/*"

inst_hook pre-trigger 02 "$moddir/multipathd.sh" inst_hook pre-trigger 02 "$moddir/multipathd.sh"
inst_hook pre-pivot 02 "$moddir/multipathd-stop.sh" inst_hook pre-pivot 02 "$moddir/multipathd-stop.sh"
inst_rules 40-multipath.rules inst_rules 40-multipath.rules

View File

@ -54,11 +54,7 @@ install() {
_nsslibs=${_nsslibs#|} _nsslibs=${_nsslibs#|}
_nsslibs=${_nsslibs%|} _nsslibs=${_nsslibs%|}


for _i in {/usr,}$libdir/libnss*.so; do inst_libdir_file -n "$_nsslibs" "libnss*.so"
[[ -e $_i ]] || continue
[[ "$_i" =~ $_nsslibs ]] || continue
dracut_install "$_i"
done


inst_hook cmdline 90 "$moddir/parse-nfsroot.sh" inst_hook cmdline 90 "$moddir/parse-nfsroot.sh"
inst_hook pre-udev 99 "$moddir/nfs-start-rpc.sh" inst_hook pre-udev 99 "$moddir/nfs-start-rpc.sh"

View File

@ -74,8 +74,6 @@ install() {
[ -f /etc/arch-release ] && \ [ -f /etc/arch-release ] && \
inst "$moddir/load-modules.sh" /lib/udev/load-modules.sh inst "$moddir/load-modules.sh" /lib/udev/load-modules.sh


for _i in {"$libdir","$usrlibdir"}/libnss_files*; do inst_libdir_file "libnss_files*"
[ -e "$_i" ] && dracut_install "$_i"
done
} }



View File

@ -16,11 +16,9 @@ install() {
local _installs local _installs
if type -P rsyslogd >/dev/null; then if type -P rsyslogd >/dev/null; then
_installs="rsyslogd" _installs="rsyslogd"
for _i in {"$libdir","$usrlibdir"}/rsyslog/lmnet.so \ inst_libdir_file rsyslog/lmnet.so
{"$libdir","$usrlibdir"}/rsyslog/imklog.so \ inst_libdir_file rsyslog/imklog.so
{"$libdir","$usrlibdir"}/rsyslog/imuxsock.so ; do inst_libdir_file rsyslog/imuxsock.so
[ -e "$_i" ] && _installs="$_installs $_i"
done
elif type -P syslogd >/dev/null; then elif type -P syslogd >/dev/null; then
_installs="syslogd" _installs="syslogd"
elif type -P syslog-ng >/dev/null; then elif type -P syslog-ng >/dev/null; then