From 367ec06c74e468544f531241c91f30235c445674 Mon Sep 17 00:00:00 2001 From: Peter Alfredsen Date: Sun, 19 Apr 2009 15:48:22 +0000 Subject: Initial commit. Script and ebuild by me. Package-Manager: portage-2.2_rc28/cvs/Linux x86_64 --- dev-util/lafilefixer/ChangeLog | 10 +++ dev-util/lafilefixer/Manifest | 4 ++ dev-util/lafilefixer/files/lafilefixer-0.0.1 | 89 +++++++++++++++++++++++++++ dev-util/lafilefixer/lafilefixer-0.0.1.ebuild | 45 ++++++++++++++ dev-util/lafilefixer/metadata.xml | 9 +++ 5 files changed, 157 insertions(+) create mode 100644 dev-util/lafilefixer/ChangeLog create mode 100644 dev-util/lafilefixer/Manifest create mode 100644 dev-util/lafilefixer/files/lafilefixer-0.0.1 create mode 100644 dev-util/lafilefixer/lafilefixer-0.0.1.ebuild create mode 100644 dev-util/lafilefixer/metadata.xml (limited to 'dev-util') diff --git a/dev-util/lafilefixer/ChangeLog b/dev-util/lafilefixer/ChangeLog new file mode 100644 index 000000000000..5df6bd2ae542 --- /dev/null +++ b/dev-util/lafilefixer/ChangeLog @@ -0,0 +1,10 @@ +# ChangeLog for dev-util/lafilefixer +# Copyright 1999-2009 Gentoo Foundation; Distributed under the GPL v2 +# $Header: /var/cvsroot/gentoo-x86/dev-util/lafilefixer/ChangeLog,v 1.1 2009/04/19 15:48:22 loki_val Exp $ + +*lafilefixer-0.0.1 (19 Apr 2009) + + 19 Apr 2009; Peter Alfredsen + +files/lafilefixer-0.0.1, +metadata.xml, +lafilefixer-0.0.1.ebuild: + Initial commit. Script and ebuild by me. + diff --git a/dev-util/lafilefixer/Manifest b/dev-util/lafilefixer/Manifest new file mode 100644 index 000000000000..87d0981ddcb5 --- /dev/null +++ b/dev-util/lafilefixer/Manifest @@ -0,0 +1,4 @@ +AUX lafilefixer-0.0.1 2589 RMD160 0144f1fc86151301e200d49472464122a4414aa1 SHA1 b4901bf51ef89e975ecd011a26fc1ad3bb381b5b SHA256 85e1049a155a923b3fa76906b55cf68b1f5225358954dd7f68d7bb4e0e38c3c0 +EBUILD lafilefixer-0.0.1.ebuild 1469 RMD160 450f38919486536e3a461f8c63441814fc1cecf1 SHA1 f17f5d329b529e5caf7d5948ae580acdb1ab493f SHA256 96d6839cfc12c3d7642ee826b133915b6f2b54bfb4ae403ba33c39a04950b15f +MISC ChangeLog 416 RMD160 f7b31459b16d8deaf723a8a1fe172cd215c8343d SHA1 7565669f09d342a6430298960e6d9a026cc90447 SHA256 5deb81b3467f76a60696efbf0a22110dcd4ae90fc84f05c4aa6d6620961bae74 +MISC metadata.xml 253 RMD160 141d5f2eda759e5ee13530882de850132d515b25 SHA1 c6cda2f9e6dee3b32f89eb86fbfc3c0f53443029 SHA256 f36bc5b0238c1fb1fbaa0469f628b7f09e86699d7cf9e95864e1ef153c70f265 diff --git a/dev-util/lafilefixer/files/lafilefixer-0.0.1 b/dev-util/lafilefixer/files/lafilefixer-0.0.1 new file mode 100644 index 000000000000..09a9cb91bd5e --- /dev/null +++ b/dev-util/lafilefixer/files/lafilefixer-0.0.1 @@ -0,0 +1,89 @@ +#!/bin/bash + +# Libtool does not support spaces in dependency_libs entries +# so we won't worry overly about them either. + +fix_la_files() { + if ! grep --help &> /dev/null + then + echo "Grep not functional. Aborting." + return 1 + elif ! sed --help &> /dev/null + then + echo "Sed not functional. Aborting." + return 1 + elif ! uniq --help &> /dev/null + then + echo "Uniq not functional. Aborting." + elif ! sort --help &> /dev/null + then + echo "Sort not functional. Aborting." + fi + declare lafile + for lafile in "$@" + do + local dependency_libs="" + local inh_link_flags="" + local new_dep_libs="" + local libladir="" + local librpath="" + local dep_libs="" + local lib="" + + dep_libs="$(grep '^dependency_libs=' $lafile)" + dep_libs="${dep_libs#dependency_libs=\'}" + dep_libs="${dep_libs%\'}" + + inh_link_flags="$(grep '^inherited_linker_flags=' $lafile)" + inh_link_flags="${inh_link_flags#inherited_linker_flags=\'}" + inh_link_flags="${inh_link_flags%\'}" + + + for entry in $dep_libs + do + if [[ "${entry#-L}" != "${entry}" ]] + then + [[ ${entry/X11R6\/lib} != ${entry} ]] && entry="${entry/X11R6\/}" + [[ ${entry/local\/lib} != ${entry} ]] && entry="${entry/local\/}" + [[ ${entry/usr\/lib*\/pkgconfig\/..\/..} != ${entry} ]] && entry="${entry/\/lib*\/pkgconfig\/..\/..}" + [[ ${entry/usr\/lib*\/pkgconfig\/..} != ${entry} ]] && entry="${entry/\/pkgconfig\/..}" + libladir="${libladir} ${entry}" + elif [[ "${entry#-R}" != "${entry}" ]] + then + librpath="${librpath} ${entry}" + elif [[ "${entry#-l}" != "${entry}" ]] + then + new_dep_libs="${new_dep_libs} ${entry}" + elif [[ "${entry%.la}" != "${entry}" ]] + then + libladir="${libladir} -L${entry%/*.la}" + lib="${entry%.la}" + lib="${lib##*\/lib}" + lib="-l${lib}" + new_dep_libs="${new_dep_libs} ${lib}" + + elif [[ "${entry}" == "-pthread" ]] + then + if [[ ${inh_link_flags} != *-pthread* ]] + then + inh_link_flags="${inh_link_flags} -pthread" + fi + else + echo $lafile + echo "${entry}" + echo "Holy Moley, Dorothy, we ain't in Kansas and Luke, I'm not your father" + return 1 + fi + done + libladir=( $(printf '%s' "$(for i in ${libladir}; do printf '%s\n' $i; done)"|sort|uniq) ) + librpath=( $(printf '%s' "$(for i in ${librpath}; do printf '%s\n' $i; done)"|sort|uniq) ) + new_dep_libs=( ${librpath[@]} ${libladir[@]} ${new_dep_libs} ) + new_dep_libs=" ${new_dep_libs[@]}" + sed -i \ + -e "/^dependency_libs/ c\dependency_libs='${new_dep_libs}'" \ + -e "/^inherited_linker_flags/ c\inherited_linker_flags='${inh_link_flags}'" \ + ${lafile} + done +} + +fix_la_files "$@" diff --git a/dev-util/lafilefixer/lafilefixer-0.0.1.ebuild b/dev-util/lafilefixer/lafilefixer-0.0.1.ebuild new file mode 100644 index 000000000000..89e15b42d8fb --- /dev/null +++ b/dev-util/lafilefixer/lafilefixer-0.0.1.ebuild @@ -0,0 +1,45 @@ +# Copyright 1999-2009 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/dev-util/lafilefixer/lafilefixer-0.0.1.ebuild,v 1.1 2009/04/19 15:48:22 loki_val Exp $ + +EAPI=2 + +DESCRIPTION="Utility to fix your .la files" +HOMEPAGE="http://www.gentoo.org/" +SRC_URI="" +LICENSE="MIT" +SLOT="0" +KEYWORDS="~x86 ~amd64" +IUSE="" +DEPEND="" +RDEPEND=">=app-shells/bash-3.1 + sys-apps/grep + sys-apps/coreutils + sys-apps/sed" + +S="" + +src_unpack() { : ; } +src_prepare() { : ; } +src_configure() { : ; } +src_unpack() { : ; } +src_install() { newbin "${FILESDIR}/${P}" ${PN} ; } + +pkg_postinst() { + elog "This simple utility will fix your .la files to not point to other .la files." + elog "This is desirable because it will ensure your packages are not broken when" + elog ".la files are removed from other packages." + elog "The utility is for now quite simple and only accepts a delimited list of" + elog ".la files." + elog "" + elog "Patches are accepted." + elog "" + elog "If you want to fix all your .la files, something like this will work:" + elog "lafilefixer $(find /usr/lib* -name '*.la' -type f)" + elog "NOTE: If you have kde installed, you may want to add /usr/kde/*/lib* to the" + elog "list of directories to search for .la files:" + elog "lafilefixer $(find /usr/lib* /usr/kde/*/lib* -name '*.la' -type f)" + elog "" + elog "Verify that all your .la files are fixed with revdep-rebuild from" + elog "app-portage/gentoolkit" +} diff --git a/dev-util/lafilefixer/metadata.xml b/dev-util/lafilefixer/metadata.xml new file mode 100644 index 000000000000..be56df20d45f --- /dev/null +++ b/dev-util/lafilefixer/metadata.xml @@ -0,0 +1,9 @@ + + + +no-herd + + loki_val@gentoo.org + Peter Alfredsen + + -- cgit v1.2.3-65-gdbad