]> git.ipfire.org Git - thirdparty/dracut-ng.git/commitdiff
fix(dracut): do not add all lib subdirs to `LD_LIBRARY_PATH` with `--sysroot`
authorMike Schwarz <xurubezi@gmail.com>
Tue, 10 Sep 2024 13:51:04 +0000 (15:51 +0200)
committerLaszlo Gombos <laszlo.gombos@gmail.com>
Wed, 11 Sep 2024 12:06:37 +0000 (08:06 -0400)
On systems with too many library subdirectories, the current approach causes
`Argument list too long` errors, and the initrd also fails to build.

This patch does not fix the original issue by itself (i.e., libsystemd libs not
found), so all the dracut modules that require libraries stored in
subdirectories must explicitly install them using `inst_libdir_file`, which
already successfully handles the `--sysroot` prefix.

Fixes e0b876823d9c608db7132cab9e5edd62543a27ae

Co-authored-by: Antonio Alvarez Feijoo <antonio.feijoo@suse.com>
dracut-init.sh

index 44176442d97ef4a9d4ba57dc243e2fd4140ed357..1ce0d7eda8cb530bed231b877b74c5be8e76f000 100755 (executable)
@@ -104,10 +104,7 @@ fi
 # ldd needs LD_LIBRARY_PATH pointing to the libraries within the sysroot directory
 if [[ -n $dracutsysrootdir ]]; then
     for lib in $libdirs; do
-        mapfile -t -d '' lib_subdirs < <(find "$lib" -type d -print0 2> /dev/null)
-        for lib_subdir in "${lib_subdirs[@]}"; do
-            LD_LIBRARY_PATH="${LD_LIBRARY_PATH:+"$LD_LIBRARY_PATH":}$dracutsysrootdir$lib_subdir"
-        done
+        LD_LIBRARY_PATH="${LD_LIBRARY_PATH:+"$LD_LIBRARY_PATH":}$dracutsysrootdir$lib"
     done
     export LD_LIBRARY_PATH
 fi