---
gx86/eclass/eutils.eclass | 33 +++++++++++++++++++++++++--------
1 file changed, 25 insertions(+), 8 deletions(-)
diff --git a/gx86/eclass/eutils.eclass b/gx86/eclass/eutils.eclass
index f662041..a8bf512 100644
--- a/gx86/eclass/eutils.eclass
+++ b/gx86/eclass/eutils.eclass
@@ -1407,8 +1407,9 @@ fi
# that they should not be linked to, i.e. whenever these files
# correspond to plugins.
#
-# Note: if your package installs both static libraries and .pc files,
-# you need to add pkg-config to your DEPEND.
+# Note: if your package installs both static libraries and .pc files
+# which use variable substitution for -l flags, you need to add
+# pkg-config to your DEPEND.
prune_libtool_files() {
debug-print-function ${FUNCNAME} "$@"
@@ -1470,14 +1471,30 @@ prune_libtool_files() {
if [[ ! ${removing_all} ]]; then
local pc
local tf=${T}/prune-lt-files.pc
- local pkgconf=$(tc-getPKG_CONFIG)
+ local pkgconf=$(tc-getPKG_CONFIG)1
while IFS= read -r -d '' pc; do # for
all .pc files
- local arg
-
- sed -e '/^Requires:/d' "${pc}"
> "${tf}"
- for arg in $("${pkgconf}"
--libs "${tf}"); do
- [[ ${arg} == -l* ]] &&
pc_libs+=( lib${arg#-l}.la )
+ local arg libs
+
+ # Use pkg-config if available
(and works),
+ # fallback to sed.
+ if ${pkgconf} --exists "${pc}"
&>/dev/null; then
+ sed -e '/^Requires:/d'
"${pc}" > "${tf}"
+ libs=$(${pkgconf}
--libs "${tf}")
+ else
+ libs=$(sed -ne
's/^Libs://p' "${pc}")
+ fi
+
+ for arg in ${libs}; do
+ if [[ ${arg} == -l* ]];
then
+ if [[ ${arg} ==
'*$*' ]]; then
+ eqawarn
"${FUNCNAME}: variable substitution likely failed in ${pc}"
+ eqawarn
"(arg: ${arg})"
+ eqawarn
"Most likely, you need to add virtual/pkgconfig to DEPEND."
+ fi
+
+ pc_libs+=(
lib${arg#-l}.la )
+ fi
done
done < <(find "${D}" -type f -name
'*.pc' -print0)
--
1.8.1.4