summaryrefslogtreecommitdiff
path: root/sys-kernel/dracut/files/gentoo-ldconfig-paths-r1.patch
blob: 53349a1f31f3d6d3ce3e686691e16ff05c9e4f26 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
From e6a5f02038954ede223cc75901386acf43ec4264 Mon Sep 17 00:00:00 2001
From: Alexander Tsoy <alexander@tsoy.me>
Date: Mon, 9 Mar 2020 02:47:07 +0300
Subject: [PATCH] Remove redundant gcc paths in ldconfig_paths()

Bug: https://bugs.gentoo.org/705728
---
 dracut-functions.sh | 15 ++++++++++++++-
 1 file changed, 14 insertions(+), 1 deletion(-)

diff --git a/dracut-functions.sh b/dracut-functions.sh
index 5206bd21..a119fb15 100755
--- a/dracut-functions.sh
+++ b/dracut-functions.sh
@@ -81,7 +81,20 @@ find_binary() {
 }
 
 ldconfig_paths() {
-    $DRACUT_LDCONFIG ${dracutsysrootdir:+-r ${dracutsysrootdir} -f /etc/ld.so.conf} -pN 2> /dev/null | grep -E -v '/(lib|lib64|usr/lib|usr/lib64)/[^/]*$' | sed -n 's,.* => \(.*\)/.*,\1,p' | sort | uniq
+    local gccpath
+
+    if type -P gcc-config &>/dev/null; then
+        gccpath=$(gcc-config -c)
+        gccpath=/usr/lib/gcc/${gccpath%-*}/${gccpath##*-}
+    fi
+
+    while read -r line; do
+        if [[ ${line} != /usr/lib/gcc/* || -z ${gccpath} ]]; then
+            echo ${line}
+        elif [[ ${line} == ${gccpath} ]]; then
+            echo ${line}
+        fi
+    done < <($DRACUT_LDCONFIG ${dracutsysrootdir:+-r ${dracutsysrootdir} -f /etc/ld.so.conf} -pN 2>/dev/null | grep -E -v '/(lib|lib64|usr/lib|usr/lib64)/[^/]*$' | sed -n 's,.* => \(.*\)/.*,\1,p' | sort | uniq)
 }
 
 # Version comparision function.  Assumes Linux style version scheme.
-- 
2.32.0