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: Pacho Ramos <pacho@g.o>
Subject: Re: [PATCH eutils] Move remove_libtool_files() from autotools-utils for wider use.
Date: Mon, 28 May 2012 11:03:19 +0200
El lun, 28-05-2012 a las 09:58 +0200, Michał Górny escribió:
> 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

This was the main reason for me still doing manually cleaning over using
this function 
Attachment:
signature.asc (This is a digitally signed message part)
References:
[PATCH eutils] Move remove_libtool_files() from autotools-utils for wider use.
-- Michał Górny
Navigation:
Lists: gentoo-dev: < Prev By Thread Next > < Prev By Date Next >
Previous by thread:
[PATCH eutils] Move remove_libtool_files() from autotools-utils for wider use.
Next by thread:
Re: [PATCH eutils] Move remove_libtool_files() from autotools-utils for wider use.
Previous by date:
Re: dev-libs/libusbx:1 the default provider for virtual/libusb:1 (for ~arch)
Next by date:
Re: rfc: OpenRC Networking Scripts


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.