FAQ Search Today's Posts Mark Forums Read
» Video Reviews

» Linux Archive

Linux-archive is a website aiming to archive linux email lists and to make them easily accessible for linux users/developers.


» Sponsor

» Partners

» Sponsor

Go Back   Linux Archive > Gentoo > Gentoo Development

 
 
LinkBack Thread Tools
 
Old 10-03-2012, 10:33 PM
Michał Górny
 
Default prune_libtool_files(): clean up module .la removal.

Add a --modules option to cleanly remove .la files for modules without
triggering unwanted --all behavior.
---
gx86/eclass/eutils.eclass | 29 ++++++++++++++++++++---------
1 file changed, 20 insertions(+), 9 deletions(-)

diff --git a/gx86/eclass/eutils.eclass b/gx86/eclass/eutils.eclass
index 77f7b0c..062e8a1 100644
--- a/gx86/eclass/eutils.eclass
+++ b/gx86/eclass/eutils.eclass
@@ -1380,7 +1380,7 @@ if has "${EAPI:-0}" 0 1 2 3 4; then
fi

# @FUNCTION: prune_libtool_files
-# @USAGE: [--all]
+# @USAGE: [--all|--modules]
# @DESCRIPTION:
# Locate unnecessary libtool files (.la) and libtool static archives
# (.a) and remove them from installation image.
@@ -1389,9 +1389,13 @@ fi
# either be performed using pkg-config or doesn't introduce additional
# flags.
#
-# If '--all' argument is passed, all .la files are removed. This is
-# usually useful when the package installs plugins and does not use .la
-# files for loading them.
+# If '--modules' argument is passed, .la files for modules (plugins) are
+# removed as well. This is usually useful when the package installs
+# plugins and the plugin loader does not use .la files.
+#
+# If '--all' argument is passed, all .la files are removed without
+# performing any heuristic on them. You shouldn't ever use that,
+# and instead report a bug in the algorithm instead.
#
# The .a files are only removed whenever corresponding .la files state
# that they should not be linked to, i.e. whenever these files
@@ -1402,11 +1406,15 @@ fi
prune_libtool_files() {
debug-print-function ${FUNCNAME} "$@"

- local removing_all opt
+ local removing_all removing_modules opt
for opt; do
case "${opt}" in
--all)
removing_all=1
+ removing_modules=1
+ ;;
+ --modules)
+ removing_modules=1
;;
*)
die "Invalid argument to ${FUNCNAME}(): ${opt}"
@@ -1420,6 +1428,8 @@ prune_libtool_files() {

[[ ${f} != ${archivefile} ]] || die 'regex sanity check failed'

+ local reason pkgconfig_scanned
+
# Remove static libs we're not supposed to link against.
if grep -q '^shouldnotlink=yes$' "${f}"; then
if [[ -f ${archivefile} ]]; then
@@ -1429,16 +1439,17 @@ prune_libtool_files() {

# The .la file may be used by a module loader, so avoid removing it
# unless explicitly requested.
- [[ ${removing_all} ]] || continue
- fi
+ if [[ ${removing_modules} ]]; then
+ reason='module'
+ fi

# Remove .la files when:
# - user explicitly wants us to remove all .la files,
# - respective static archive doesn't exist,
# - they are covered by a .pc file already,
# - they don't provide any new information (no libs & no flags).
- local reason pkgconfig_scanned
- if [[ ${removing_all} ]]; then
+
+ elif [[ ${removing_all} ]]; then
reason='requested'
elif [[ ! -f ${archivefile} ]]; then
reason='no static archive'
--
1.7.12
 

Thread Tools




All times are GMT. The time now is 04:35 AM.

VBulletin, Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO ©2007, Crawlability, Inc.
Copyright 2007 - 2008, www.linux-archive.org