diff options
author | Donnie Berkholz <donnie@comet.(none)> | 2006-05-24 20:55:13 -0700 |
---|---|---|
committer | Donnie Berkholz <spyderous@gentoo.org> | 2006-05-24 20:55:13 -0700 |
commit | d770525cbe42e2b35fa7c68e2abf208e966be313 (patch) | |
tree | fe5bc37b5d12663f9e88ece6ca55c7b1028c6088 /app-admin | |
parent | Blas-atlas port to eselect-blas (diff) | |
download | dberkholz-d770525cbe42e2b35fa7c68e2abf208e966be313.tar.gz dberkholz-d770525cbe42e2b35fa7c68e2abf208e966be313.tar.bz2 dberkholz-d770525cbe42e2b35fa7c68e2abf208e966be313.zip |
Add new eselect, eselect-{blas,cblas,lapack} ebuilds
Diffstat (limited to 'app-admin')
-rw-r--r-- | app-admin/eselect-blas/Manifest | 11 | ||||
-rw-r--r-- | app-admin/eselect-blas/eselect-blas-0.1.ebuild | 25 | ||||
-rw-r--r-- | app-admin/eselect-blas/files/blas.eselect-0.1 | 15 | ||||
-rw-r--r-- | app-admin/eselect-blas/files/digest-eselect-blas-0.1 | 1 | ||||
-rw-r--r-- | app-admin/eselect-cblas/Manifest | 11 | ||||
-rw-r--r-- | app-admin/eselect-cblas/eselect-cblas-0.1.ebuild | 25 | ||||
-rw-r--r-- | app-admin/eselect-cblas/files/cblas.eselect-0.1 | 15 | ||||
-rw-r--r-- | app-admin/eselect-cblas/files/digest-eselect-cblas-0.1 | 1 | ||||
-rw-r--r-- | app-admin/eselect-lapack/Manifest | 11 | ||||
-rw-r--r-- | app-admin/eselect-lapack/eselect-lapack-0.1.ebuild | 25 | ||||
-rw-r--r-- | app-admin/eselect-lapack/files/digest-eselect-lapack-0.1 | 1 | ||||
-rw-r--r-- | app-admin/eselect-lapack/files/lapack.eselect-0.1 | 15 | ||||
-rw-r--r-- | app-admin/eselect/Manifest | 12 | ||||
-rw-r--r-- | app-admin/eselect/eselect-1.0.2-r1.ebuild | 63 | ||||
-rw-r--r-- | app-admin/eselect/files/digest-eselect-1.0.2-r1 | 3 | ||||
-rw-r--r-- | app-admin/eselect/files/skel.bash | 307 |
16 files changed, 541 insertions, 0 deletions
diff --git a/app-admin/eselect-blas/Manifest b/app-admin/eselect-blas/Manifest new file mode 100644 index 0000000..45e514c --- /dev/null +++ b/app-admin/eselect-blas/Manifest @@ -0,0 +1,11 @@ +AUX blas.eselect-0.1 384 RMD160 6644f12689faf5fa8b3e2ae4de793147dca0edcf SHA1 a66822e95b329c59575b8d4aad5b18d92217afcf SHA256 983316fcec9069c2ae1e0ef0b28f418bbad2eb8e30ac740dbf29e28ef6371d9d size 384 +MD5 5b199f6ab4ede0a6040cd78d6a5bbd9d files/blas.eselect-0.1 384 +RMD160 6644f12689faf5fa8b3e2ae4de793147dca0edcf files/blas.eselect-0.1 384 +SHA256 983316fcec9069c2ae1e0ef0b28f418bbad2eb8e30ac740dbf29e28ef6371d9d files/blas.eselect-0.1 384 +EBUILD eselect-blas-0.1.ebuild 654 RMD160 efe31bec213c56d6b381c1c71f1e81d477830668 SHA1 cce3d77b585e7c23e860e7ed81997479c9536263 SHA256 810789e55a2dcce1327900442286a2ecaad76c4f3e35af8126aa5e0fdf4208ac size 654 +MD5 23e302fb3993fce73f6afae0c69a0026 eselect-blas-0.1.ebuild 654 +RMD160 efe31bec213c56d6b381c1c71f1e81d477830668 eselect-blas-0.1.ebuild 654 +SHA256 810789e55a2dcce1327900442286a2ecaad76c4f3e35af8126aa5e0fdf4208ac eselect-blas-0.1.ebuild 654 +MD5 68b329da9893e34099c7d8ad5cb9c940 files/digest-eselect-blas-0.1 1 +RMD160 c0da025038ed83c687ddc430da9846ecb97f3998 files/digest-eselect-blas-0.1 1 +SHA256 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b files/digest-eselect-blas-0.1 1 diff --git a/app-admin/eselect-blas/eselect-blas-0.1.ebuild b/app-admin/eselect-blas/eselect-blas-0.1.ebuild new file mode 100644 index 0000000..1ec46a6 --- /dev/null +++ b/app-admin/eselect-blas/eselect-blas-0.1.ebuild @@ -0,0 +1,25 @@ +# Copyright 1999-2006 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/app-admin/eselect-gnat/eselect-gnat-0.8-r1.ebuild,v 1.1 2006/05/17 21:28:24 george Exp $ + +inherit eutils + +DESCRIPTION="BLAS module for eselect" +HOMEPAGE="http://www.gentoo.org/proj/en/eselect/" +SRC_URI="" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~ppc ~x86" + +IUSE="" +# Need skel.bash lib +RDEPEND=">=app-admin/eselect-1.0.2-r1" + +src_install() { + local MODULEDIR="/usr/share/eselect/modules" + local MODULE="blas" + dodir ${MODULEDIR} + insinto ${MODULEDIR} + newins ${FILESDIR}/${MODULE}.eselect-${PVR} ${MODULE}.eselect +} diff --git a/app-admin/eselect-blas/files/blas.eselect-0.1 b/app-admin/eselect-blas/files/blas.eselect-0.1 new file mode 100644 index 0000000..196d8ce --- /dev/null +++ b/app-admin/eselect-blas/files/blas.eselect-0.1 @@ -0,0 +1,15 @@ +# Copyright 1999-2006 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id: $ + +inherit skel + +MODULE="BLAS" +IFACE="blas" + +DESCRIPTION="Manage installed $MODULE implementations" +MAINTAINER="spyderous@gentoo.org" +SVN_DATE='$Date: 2006-05-15 20:36:55 +0200 (Mon, 15 May 2006) $' +VERSION=$(svn_date_to_version "${SVN_DATE}" ) + +# vim: set ft=eselect : diff --git a/app-admin/eselect-blas/files/digest-eselect-blas-0.1 b/app-admin/eselect-blas/files/digest-eselect-blas-0.1 new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/app-admin/eselect-blas/files/digest-eselect-blas-0.1 @@ -0,0 +1 @@ + diff --git a/app-admin/eselect-cblas/Manifest b/app-admin/eselect-cblas/Manifest new file mode 100644 index 0000000..09152ad --- /dev/null +++ b/app-admin/eselect-cblas/Manifest @@ -0,0 +1,11 @@ +AUX cblas.eselect-0.1 386 RMD160 f151234c7b3c2387999959bb3f36ce7a59438300 SHA1 b30884bf191647fcb8ea06c7355201e98f6cba61 SHA256 26a5d4b06f9839a0ec9b6f1bb6c64ddef569093622b336e3ce5ca8df62c700d4 size 386 +MD5 e11266fdddcf1fe2d8d730cf0c6e4c47 files/cblas.eselect-0.1 386 +RMD160 f151234c7b3c2387999959bb3f36ce7a59438300 files/cblas.eselect-0.1 386 +SHA256 26a5d4b06f9839a0ec9b6f1bb6c64ddef569093622b336e3ce5ca8df62c700d4 files/cblas.eselect-0.1 386 +EBUILD eselect-cblas-0.1.ebuild 666 RMD160 6e3f9fcee59c12bfce3b4c3fcc3ee741938ce0d0 SHA1 24977f1fe11dbd5584b5721c02c45e5cd4886c34 SHA256 aecfcc78bce57d8d9482cea1f6475224a4dbf983fe75b6731571b8138aee49f3 size 666 +MD5 086c4b38dfbec4a71825708f8f2cbeed eselect-cblas-0.1.ebuild 666 +RMD160 6e3f9fcee59c12bfce3b4c3fcc3ee741938ce0d0 eselect-cblas-0.1.ebuild 666 +SHA256 aecfcc78bce57d8d9482cea1f6475224a4dbf983fe75b6731571b8138aee49f3 eselect-cblas-0.1.ebuild 666 +MD5 68b329da9893e34099c7d8ad5cb9c940 files/digest-eselect-cblas-0.1 1 +RMD160 c0da025038ed83c687ddc430da9846ecb97f3998 files/digest-eselect-cblas-0.1 1 +SHA256 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b files/digest-eselect-cblas-0.1 1 diff --git a/app-admin/eselect-cblas/eselect-cblas-0.1.ebuild b/app-admin/eselect-cblas/eselect-cblas-0.1.ebuild new file mode 100644 index 0000000..2ab13b4 --- /dev/null +++ b/app-admin/eselect-cblas/eselect-cblas-0.1.ebuild @@ -0,0 +1,25 @@ +# Copyright 1999-2006 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/app-admin/eselect-gnat/eselect-gnat-0.8-r1.ebuild,v 1.1 2006/05/17 21:28:24 george Exp $ + +inherit eutils + +DESCRIPTION="C-language BLAS module for eselect" +HOMEPAGE="http://www.gentoo.org/proj/en/eselect/" +SRC_URI="" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~ppc ~x86" + +IUSE="" +# Need skel.bash lib +RDEPEND=">=app-admin/eselect-1.0.2-r1" + +src_install() { + local MODULEDIR="/usr/share/eselect/modules" + local MODULE="cblas" + dodir ${MODULEDIR} + insinto ${MODULEDIR} + newins ${FILESDIR}/${MODULE}.eselect-${PVR} ${MODULE}.eselect +} diff --git a/app-admin/eselect-cblas/files/cblas.eselect-0.1 b/app-admin/eselect-cblas/files/cblas.eselect-0.1 new file mode 100644 index 0000000..6d53ef1 --- /dev/null +++ b/app-admin/eselect-cblas/files/cblas.eselect-0.1 @@ -0,0 +1,15 @@ +# Copyright 1999-2006 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id: $ + +inherit skel + +MODULE="CBLAS" +IFACE="cblas" + +DESCRIPTION="Manage installed $MODULE implementations" +MAINTAINER="spyderous@gentoo.org" +SVN_DATE='$Date: 2006-05-15 20:36:55 +0200 (Mon, 15 May 2006) $' +VERSION=$(svn_date_to_version "${SVN_DATE}" ) + +# vim: set ft=eselect : diff --git a/app-admin/eselect-cblas/files/digest-eselect-cblas-0.1 b/app-admin/eselect-cblas/files/digest-eselect-cblas-0.1 new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/app-admin/eselect-cblas/files/digest-eselect-cblas-0.1 @@ -0,0 +1 @@ + diff --git a/app-admin/eselect-lapack/Manifest b/app-admin/eselect-lapack/Manifest new file mode 100644 index 0000000..1f31a2b --- /dev/null +++ b/app-admin/eselect-lapack/Manifest @@ -0,0 +1,11 @@ +AUX lapack.eselect-0.1 388 RMD160 fc369053f9456f37660df4e48b79e31c4fbe7674 SHA1 60f976585ff3d1331d35274b37a7f19ac928fe5f SHA256 557abd684b1e3cb24384e1ed88a550b43c407469b73bf86cf3316835d1066911 size 388 +MD5 f07d0a700addd9e82c30691f851806ff files/lapack.eselect-0.1 388 +RMD160 fc369053f9456f37660df4e48b79e31c4fbe7674 files/lapack.eselect-0.1 388 +SHA256 557abd684b1e3cb24384e1ed88a550b43c407469b73bf86cf3316835d1066911 files/lapack.eselect-0.1 388 +EBUILD eselect-lapack-0.1.ebuild 658 RMD160 346f2183a3edaa91d122d401ff7aa6bc483cac61 SHA1 295d9d7c037750715351cf2a1bdc28227cac65e5 SHA256 cebb1d5401f8360f978949854dac1a5be780d728e398758b41148cb86ac8d0bf size 658 +MD5 e9d88d17d15782c43418eb232e1809d5 eselect-lapack-0.1.ebuild 658 +RMD160 346f2183a3edaa91d122d401ff7aa6bc483cac61 eselect-lapack-0.1.ebuild 658 +SHA256 cebb1d5401f8360f978949854dac1a5be780d728e398758b41148cb86ac8d0bf eselect-lapack-0.1.ebuild 658 +MD5 68b329da9893e34099c7d8ad5cb9c940 files/digest-eselect-lapack-0.1 1 +RMD160 c0da025038ed83c687ddc430da9846ecb97f3998 files/digest-eselect-lapack-0.1 1 +SHA256 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b files/digest-eselect-lapack-0.1 1 diff --git a/app-admin/eselect-lapack/eselect-lapack-0.1.ebuild b/app-admin/eselect-lapack/eselect-lapack-0.1.ebuild new file mode 100644 index 0000000..cb7dae8 --- /dev/null +++ b/app-admin/eselect-lapack/eselect-lapack-0.1.ebuild @@ -0,0 +1,25 @@ +# Copyright 1999-2006 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/app-admin/eselect-gnat/eselect-gnat-0.8-r1.ebuild,v 1.1 2006/05/17 21:28:24 george Exp $ + +inherit eutils + +DESCRIPTION="LAPACK module for eselect" +HOMEPAGE="http://www.gentoo.org/proj/en/eselect/" +SRC_URI="" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~ppc ~x86" + +IUSE="" +# Need skel.bash lib +RDEPEND=">=app-admin/eselect-1.0.2-r1" + +src_install() { + local MODULEDIR="/usr/share/eselect/modules" + local MODULE="lapack" + dodir ${MODULEDIR} + insinto ${MODULEDIR} + newins ${FILESDIR}/${MODULE}.eselect-${PVR} ${MODULE}.eselect +} diff --git a/app-admin/eselect-lapack/files/digest-eselect-lapack-0.1 b/app-admin/eselect-lapack/files/digest-eselect-lapack-0.1 new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/app-admin/eselect-lapack/files/digest-eselect-lapack-0.1 @@ -0,0 +1 @@ + diff --git a/app-admin/eselect-lapack/files/lapack.eselect-0.1 b/app-admin/eselect-lapack/files/lapack.eselect-0.1 new file mode 100644 index 0000000..86b0eff --- /dev/null +++ b/app-admin/eselect-lapack/files/lapack.eselect-0.1 @@ -0,0 +1,15 @@ +# Copyright 1999-2006 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id: $ + +inherit skel + +MODULE="LAPACK" +IFACE="lapack" + +DESCRIPTION="Manage installed $MODULE implementations" +MAINTAINER="spyderous@gentoo.org" +SVN_DATE='$Date: 2006-05-15 20:36:55 +0200 (Mon, 15 May 2006) $' +VERSION=$(svn_date_to_version "${SVN_DATE}" ) + +# vim: set ft=eselect : diff --git a/app-admin/eselect/Manifest b/app-admin/eselect/Manifest new file mode 100644 index 0000000..5a30e37 --- /dev/null +++ b/app-admin/eselect/Manifest @@ -0,0 +1,12 @@ +AUX skel.bash 8430 RMD160 aa807d2cef3c2739ff2e14cf408a7c44c894fa52 SHA1 ef164caba5dbc29628e21873d07a669dddf8b1a0 SHA256 707c51efe9dd34f5e5d8d7b39999abad4b0ca7cbec37c994b25be43f002c2445 size 8430 +MD5 b256b54706a706358257389303dde648 files/skel.bash 8430 +RMD160 aa807d2cef3c2739ff2e14cf408a7c44c894fa52 files/skel.bash 8430 +SHA256 707c51efe9dd34f5e5d8d7b39999abad4b0ca7cbec37c994b25be43f002c2445 files/skel.bash 8430 +DIST eselect-1.0.2.tar.bz2 147189 RMD160 73cdb5235d068965cb3df9e82e34031e4782af00 SHA256 0be9cb816f9194d28dc50a2f7110aa9d0622dd41c981265af10420cb972cf7f5 size 147189 +EBUILD eselect-1.0.2-r1.ebuild 1616 RMD160 329b9fc5ff05ed2f2d83e4def79adc9bdf947cea SHA1 440d8c6902a362895064ed15cc849f05bca5251e SHA256 f9ab349030a12a2efa9a94c5c135e05d17075c8bb16b60eefc750a8c83bf331e size 1616 +MD5 6d654ca9bdf1cdf31702be47277dd53c eselect-1.0.2-r1.ebuild 1616 +RMD160 329b9fc5ff05ed2f2d83e4def79adc9bdf947cea eselect-1.0.2-r1.ebuild 1616 +SHA256 f9ab349030a12a2efa9a94c5c135e05d17075c8bb16b60eefc750a8c83bf331e eselect-1.0.2-r1.ebuild 1616 +MD5 6ca1049dfd6ca9066b72c6812bb8dd38 files/digest-eselect-1.0.2-r1 244 +RMD160 15192582786a2c40c772297489036b54d78a2e26 files/digest-eselect-1.0.2-r1 244 +SHA256 4b36d49e363751bbec81624f5c173a587e67ada7e7426fe99557d777c08536ff files/digest-eselect-1.0.2-r1 244 diff --git a/app-admin/eselect/eselect-1.0.2-r1.ebuild b/app-admin/eselect/eselect-1.0.2-r1.ebuild new file mode 100644 index 0000000..89adb37 --- /dev/null +++ b/app-admin/eselect/eselect-1.0.2-r1.ebuild @@ -0,0 +1,63 @@ +# Copyright 1999-2006 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/app-admin/eselect/eselect-1.0.2.ebuild,v 1.2 2006/04/19 11:45:18 flameeyes Exp $ + +DESCRIPTION="Modular -config replacement utility" +HOMEPAGE="http://www.gentoo.org/proj/en/eselect/" +SRC_URI="mirror://gentoo/${P}.tar.bz2" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~x86-fbsd" +IUSE="doc bash-completion" + +DEPEND="sys-apps/sed + doc? ( dev-python/docutils ) + || ( + sys-apps/coreutils + sys-freebsd/freebsd-bin + app-admin/realpath + )" +RDEPEND="sys-apps/sed + sys-apps/file" + +src_compile() { + econf || die "econf failed" + emake || die "emake failed" + + if use doc ; then + make html || die "failed to build html" + fi +} + +src_install() { + make DESTDIR="${D}" install || die "make install failed" + dodoc AUTHORS NEWS README TODO doc/*.txt + use doc && dohtml *.html doc/* + + # we don't use bash-completion.eclass since eselect + # is listed in RDEPEND. + if use bash-completion ; then + insinto /usr/share/bash-completion + newins misc/${PN}.bashcomp ${PN} || die + fi + + local EBASEDIR="/usr/share/eselect" + local ELIBDIR="/usr/share/eselect/libs" + local EMODULEDIR="/usr/share/eselect/modules" + insinto ${ELIBDIR} + doins ${FILESDIR}/skel.bash + rm -f ${D}/${EMODULEDIR}/blas.eselect ${D}/${EMODULEDIR}/lapack.eselect +} + +pkg_postinst() { + if use bash-completion ; then + echo + einfo + einfo "To enable command-line completion for eselect, run:" + einfo + einfo " eselect bashcomp enable eselect" + einfo + echo + fi +} diff --git a/app-admin/eselect/files/digest-eselect-1.0.2-r1 b/app-admin/eselect/files/digest-eselect-1.0.2-r1 new file mode 100644 index 0000000..1c26fbf --- /dev/null +++ b/app-admin/eselect/files/digest-eselect-1.0.2-r1 @@ -0,0 +1,3 @@ +MD5 4de7e8be18a27402a4da61a23c22994d eselect-1.0.2.tar.bz2 147189 +RMD160 73cdb5235d068965cb3df9e82e34031e4782af00 eselect-1.0.2.tar.bz2 147189 +SHA256 0be9cb816f9194d28dc50a2f7110aa9d0622dd41c981265af10420cb972cf7f5 eselect-1.0.2.tar.bz2 147189 diff --git a/app-admin/eselect/files/skel.bash b/app-admin/eselect/files/skel.bash new file mode 100644 index 0000000..0f04ea3 --- /dev/null +++ b/app-admin/eselect/files/skel.bash @@ -0,0 +1,307 @@ +# Copyright 1999-2006 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id: $ + +# To use this library, you must set MODULE and IFACE. +# MODULE is the name you use to refer to whatever it is that you're selecting +# in help text and so forth. +# IFACE is the subdirectory of /etc/env.d/ that eselect config files are stored +# in for these packages. +# +# There is a file installed at /etc/env.d/$IFACE/$libdir/config containing the +# CURRENT variable, which is set to the current eselect setting. Also, each +# implementation installs a single file at /etc/env.d/$IFACE/$libdir/$implem. +# This file contains a list of symlinks to be created in "source destination" +# format. You must use relative symlinks. In other words, "source" must be +# relative to "destination" but "destination" must be absolute. You may have +# comments in the symlink map file -- any line containing a '#' is considered +# a comment. One caveat about the symlink map -- instead of using "lib" or +# "lib64" etc, you must use @LIBDIR@. + +inherit config multilib portage tests + +# find_implems $iface $libdir +# find all possible implems for $libdir +find_implems() { + local -a implems + iface=$1 libdir=$2 + for file in ${ROOT}/etc/env.d/${iface}/${libdir}/* ; do + [[ -f ${file} ]] || continue + [[ "${file##*/}" != "config" ]] || continue + implems=(${implems[@]} "${file##*/}") + done + echo ${implems[@]} +} + +# is_active $iface $libdir $implem +# returns true if $implem is currently used for the $iface/$libdir combination +is_active() { + [[ ${#@} -eq 3 ]] || die "Need exactly 3 arguments!" + current=$(load_config ${ROOT}/etc/env.d/${1}/${2}/config CURRENT) + [[ ${current} == ${3} ]] +} + +# switch_implem $iface $libdir $implem +# switches $iface/$libdir combination to $implem +switch_implem() { + # set us up + [[ ${#@} -eq 3 ]] || die "Need exactly 3 arguments!" + local iface=${1} + local libdir=${2} + local implem=${3##*/} + local implem_file="${ROOT}/etc/env.d/${iface}/${libdir}/${implem}" + local current=$(load_config "${ROOT}"/etc/env.d/${iface}/${libdir}/config CURRENT) + local current_file="${ROOT}/etc/env.d/${iface}/${libdir}/${current}" + local dest src + if is_active ${iface} ${libdir} ${implem}; then + echo "Implementation \"${implem}\" already active for libdir \"${libdir}\"!" + return 1 + fi + + # Get rid of old symlinks, if we have a current config + if [[ -f "${current_file}" ]]; then + while read line; do + # Skip comments + [[ "${line}" = *#* ]] && continue + + line=${line//@LIBDIR@/${libdir}} + + set ${line} + dest=$2 + rm -f ${ROOT}${dest} + done < ${current_file} + fi + + # Set up new symlinks + while read line; do + # Skip comments + [[ "${line}" = *#* ]] && continue + + line=${line//@LIBDIR@/${libdir}} + + set ${line} + src=$1 + dest=$2 + ln -sf ${src} ${ROOT}${dest} + done < ${implem_file} + + store_config \ + "${ROOT}"/etc/env.d/${iface}/${libdir}/config \ + CURRENT ${implem} +} + +# iface_do_list $libdir +# Lists the available implementations for $libdir +iface_do_list() { + local -a implems + local active libdir=$1 iface=$IFACE + implems=( $(find_implems $iface $libdir ) ) + + # None installed for $libdir + [[ -z ${implems[@]} ]] \ + && return + + write_list_start "Installed $MODULE for libdir $(highlight ${libdir})" + for implem in ${implems[@]} ; do + (( i++ )) + active='' + is_active ${iface} ${libdir} ${implem##*/} \ + && active=' *' + + write_numbered_list_entry $i "${implem}$(highlight "${active}")" + done +} + +# iface_do_show $libdir +# Shows the current implementation for $libdir +iface_do_show() { + local iface=$IFACE libdir=$1 implem + config=${ROOT}/etc/env.d/${iface}/${libdir}/config + [[ ${#config[@]} -eq 1 ]] \ + || return + [[ -e ${config} ]] \ + || return + + implem=$(load_config ${ROOT}/etc/env.d/${iface}/${libdir}/config CURRENT) + [[ -e ${ROOT}/etc/env.d/${iface}/${libdir}/${implem} ]] \ + || die "File \"${ROOT}/etc/env.d/${iface}/${libdir}/${implem}\" is missing!" + + echo "${implem}" +} + +# get_libdirs +# Wraps list_libdirs() to ensure that output is sorted consistently +get_libdirs() { + list_libdirs | sort +} + +### list action + +describe_list() { + echo "List all installed $MODULE implementations" +} + +do_list() { + local libdir + # Count for listing IFACE/libdir combinations + # We keep it here so it doesn't reset on every call to iface_do_list() + local i=0 + + for libdir in $(get_libdirs); do + [[ -d ${ROOT}/usr/${libdir} ]] \ + && [[ ! -h ${ROOT}/usr/${libdir} ]] \ + || continue + iface_do_list $libdir + done +} + +### set action + +describe_set() { + echo "Activate one of the installed $MODULE implementations" +} + +describe_set_parameters() { + echo "<implementation>" +} + +describe_set_options() { + echo "implementation : implementation name or number (from 'list' action)" +} + +do_set() { + [[ ${#@} == 0 ]] \ + && die -q "Please specify exactly 1 implementation!" + local fail=0 iface=$IFACE + local libdirs=$(get_libdirs) + local libdir implem libdir_ct i=0 + local -a file implems new_implems mylibdirs myimplems + + # Build up list of all valid implems + for libdir in ${libdirs}; do + new_implems=( $(find_implems ${iface} ${libdir}) ) + implems=( ${implems[@]} ${new_implems[@]} ) + libdir_ct[$i]=${#new_implems[@]} + (( i++ )) + done + + # Parse passed parameters into valid libdirs. Other arguments are considered + # implementations (or numbers for them) and are validated later. + # If libdirs are specified, then switch for them. Otherwise, switch for all + # libdirs. + for param in ${@} ; do + if has ${param} ${libdirs} ; then + mylibdirs=(${mylibdirs[@]} ${param}) + else + myimplems=(${myimplems[@]} ${param}) + fi + done + set ${myimplems[@]} + + # We can only change one implem at a time + [[ ${#myimplems[@]} -ne 1 ]] && \ + die -q "Please specify exactly 1 implemention." + + [[ -n ${mylibdirs[@]} ]] && libdirs=${mylibdirs[@]} + + i=0 + for libdir in ${libdirs}; do + for item in ${@} ; do + if is_number ${item} ; then + if [[ -n ${libdir_min} ]]; then + libdir_min=$(( ${libdir_min} + ${libdir_ct[$(( $i - 1 ))]} )) + else + libdir_min="1" + fi + libdir_max=$(( ${libdir_min} + ${libdir_ct[$i]} - 1 )) + if [[ ${item} -ge ${libdir_min} ]] && [[ ${item} -le ${libdir_max} ]] ; then + if ! switch_implem ${iface} ${libdir} ${implems[$(( ${item} -1 ))]}; then + fail=1 + echo "Failed to switch to implementation \"${item}\" for libdir \"${libdir}\"!" + continue + fi + else + fail=1 + echo "Item not in range ${libdir_min}-${libdir_max} for ${libdir}: ${item}" + continue + fi + else + file=( ${ROOT}/etc/env.d/${iface}/${libdir}/${item} ) + if [[ ${#file[@]} -gt 1 ]] ; then + fail=1 + echo "Ambiguous pattern in ${libdir}: ${item}" + continue + fi + if ! [[ -f ${file} ]] ; then + fail=1 + echo "Pattern doesn't match anything in ${libdir}: ${item}" + continue + fi + if ! switch_implem ${iface} ${libdir} ${file##*/}; then + fail=1 + echo "Failed to switch to implementation \"${item}\" for libdir \"${libdir}\"!" + continue + fi + fi + done + (( i++ )) + done + + [[ ${fail} == 1 ]] && die -q "One or more actions have failed!" +} + +### show action + +describe_show() { + echo "Print the currently active $MODULE implementation" +} + +do_show() { + local libdir + for libdir in $(get_libdirs); do + [[ -d ${ROOT}/usr/${libdir} ]] \ + && [[ ! -h ${ROOT}/usr/${libdir} ]] \ + || continue + iface_do_show $libdir + done +} + +### add action + +describe_add() { + echo "Add a new $MODULE implementation" +} + +describe_add_parameters() { + echo "<libdir> <file> <implementation>" +} + +describe_add_options() { + echo "libdir : library directory where $MODULE implementation is installed (lib, lib64, etc.)" + echo "file : path to file containing symlink map" + echo "implementation : name of the $MODULE implementation" +} + +do_add() { + [[ ${#@} -ne 3 ]] \ + && die -q "Please specify 1 libdir, 1 file to install and 1 implementation!" + + # If $D is set, we're adding from portage so we want to respect sandbox. + # Otherwise, respect the ROOT variable. + local PREFIX=${D:-${ROOT}} + + # Create directory if necessary + if [[ ! -e ${PREFIX}/etc/env.d/${IFACE}/${1} ]]; then + mkdir -p ${PREFIX}/etc/env.d/${IFACE}/${1} + else + if [[ ! -d ${PREFIX}/etc/env.d/${IFACE}/${1} ]]; then + die -q "${PREFIX}/etc/env.d/${IFACE}/${1} exists but isn't a directory!" + fi + fi + + if ! cp ${2} ${PREFIX}/etc/env.d/${IFACE}/${1}/${3}; then + die -q "Installing ${2} as ${PREFIX}/etc/env.d/${IFACE}/${1}/${3} failed!" + fi +} + +# vim: set sw=4 et sts=4 tw=80 : |