Gentoo Logo
Gentoo Spaceship




Note: Due to technical difficulties, the Archives are currently not up to date. GMANE provides an alternative service for most mailing lists.
c.f. bug 424647
List Archive: gentoo-dev
Navigation:
Lists: gentoo-dev: < Prev By Thread Next > < Prev By Date Next >
Headers:
To: gentoo-dev@g.o
From: Michał Górny <mgorny@g.o>
Subject: [PATCH eutils] Move remove_libtool_files() from autotools-utils for wider use.
Date: Mon, 28 May 2012 09:58:56 +0200
As autotools-utils exports phase functions, it will be better if
remove_libtool_files() functions would be somewhere else.
---
 eutils.eclass |   68 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 68 insertions(+)

diff --git a/eutils.eclass b/eutils.eclass
index c88ef35..fb92256 100644
--- a/eutils.eclass
+++ b/eutils.eclass
@@ -1330,6 +1330,74 @@ makeopts_jobs() {
 	echo ${jobs:-1}
 }
 
+# @FUNCTION: remove_libtool_files
+# @USAGE: [all]
+# @DESCRIPTION:
+# Determines unnecessary libtool files (.la) and libtool static archives (.a),
+# and removes them from installation image.
+#
+# To unconditionally remove all libtool files, pass 'all' as an argument.
+# Otherwise, libtool archives required for static linking will be preserved.
+remove_libtool_files() {
+	debug-print-function ${FUNCNAME} "$@"
+	local removing_all
+	[[ ${#} -le 1 ]] || die "Invalid number of args to ${FUNCNAME}()"
+	if [[ ${#} -eq 1 ]]; then
+		case "${1}" in
+			all)
+				removing_all=1
+				;;
+			*)
+				die "Invalid argument to ${FUNCNAME}(): ${1}"
+		esac
+	fi
+
+	local pc_libs=()
+	if [[ ! ${removing_all} ]]; then
+		local arg
+		for arg in $(find "${D}" -name '*.pc' -exec \
+					sed -n -e 's;^Libs:;;p' {} +); do
+			[[ ${arg} == -l* ]] && pc_libs+=(lib${arg#-l}.la)
+		done
+	fi
+
+	local f
+	find "${D}" -type f -name '*.la' -print0 | while read -r -d '' f; do
+		local shouldnotlink=$(sed -ne '/^shouldnotlink=yes$/p' "${f}")
+		local archivefile=${f/%.la/.a}
+		[[ "${f}" != "${archivefile}" ]] || die 'regex sanity check failed'
+
+		# Remove static libs we're not supposed to link against.
+		if [[ ${shouldnotlink} ]]; then
+			einfo "Removing unnecessary ${archivefile#${D%/}}"
+			rm -f "${archivefile}" || die
+			# The .la file may be used by a module loader, so avoid removing it
+			# unless explicitly requested.
+			[[ ${removing_all} ]] || continue
+		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 removing
+		if [[ ${removing_all} ]]; then removing='forced'
+		elif [[ ! -f ${archivefile} ]]; then removing='no static archive'
+		elif has "$(basename "${f}")" "${pc_libs[@]}"; then
+			removing='covered by .pc'
+		elif [[ ! $(sed -n -e \
+			"s/^\(dependency_libs\|inherited_linker_flags\)='\(.*\)'$/\2/p" \
+			"${f}") ]]; then removing='no libs & flags'
+		fi
+
+		if [[ ${removing} ]]; then
+			einfo "Removing unnecessary ${f#${D%/}} (${removing})"
+			rm -f "${f}" || die
+		fi
+	done
+}
+
 check_license() { die "you no longer need this as portage supports ACCEPT_LICENSE itself"; }
 
 fi
-- 
1.7.10.2



Replies:
Re: [PATCH eutils] Move remove_libtool_files() from autotools-utils for wider use.
-- Ryan Hill
Re: [PATCH eutils] Move remove_libtool_files() from autotools-utils for wider use.
-- Mike Frysinger
Re: [PATCH eutils] Move remove_libtool_files() from autotools-utils for wider use.
-- Steven J Long
Re: [PATCH eutils] Move remove_libtool_files() from autotools-utils for wider use.
-- Pacho Ramos
Navigation:
Lists: gentoo-dev: < Prev By Thread Next > < Prev By Date Next >
Previous by thread:
Automated Package Removal and Addition Tracker, for the week ending 2012-05-27 23h59 UTC
Next by thread:
Re: [PATCH eutils] Move remove_libtool_files() from autotools-utils for wider use.
Previous by date:
Automated Package Removal and Addition Tracker, for the week ending 2012-05-27 23h59 UTC
Next by date:
Re: dev-libs/libusbx:1 the default provider for virtual/libusb:1 (for ~arch)


Updated Jun 29, 2012

Summary: Archive of the gentoo-dev mailing list.

Donate to support our development efforts.

Copyright 2001-2013 Gentoo Foundation, Inc. Questions, Comments? Contact us.