aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDonnie Berkholz <donnie@comet.(none)>2006-05-24 20:55:13 -0700
committerDonnie Berkholz <spyderous@gentoo.org>2006-05-24 20:55:13 -0700
commitd770525cbe42e2b35fa7c68e2abf208e966be313 (patch)
treefe5bc37b5d12663f9e88ece6ca55c7b1028c6088 /app-admin
parentBlas-atlas port to eselect-blas (diff)
downloaddberkholz-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/Manifest11
-rw-r--r--app-admin/eselect-blas/eselect-blas-0.1.ebuild25
-rw-r--r--app-admin/eselect-blas/files/blas.eselect-0.115
-rw-r--r--app-admin/eselect-blas/files/digest-eselect-blas-0.11
-rw-r--r--app-admin/eselect-cblas/Manifest11
-rw-r--r--app-admin/eselect-cblas/eselect-cblas-0.1.ebuild25
-rw-r--r--app-admin/eselect-cblas/files/cblas.eselect-0.115
-rw-r--r--app-admin/eselect-cblas/files/digest-eselect-cblas-0.11
-rw-r--r--app-admin/eselect-lapack/Manifest11
-rw-r--r--app-admin/eselect-lapack/eselect-lapack-0.1.ebuild25
-rw-r--r--app-admin/eselect-lapack/files/digest-eselect-lapack-0.11
-rw-r--r--app-admin/eselect-lapack/files/lapack.eselect-0.115
-rw-r--r--app-admin/eselect/Manifest12
-rw-r--r--app-admin/eselect/eselect-1.0.2-r1.ebuild63
-rw-r--r--app-admin/eselect/files/digest-eselect-1.0.2-r13
-rw-r--r--app-admin/eselect/files/skel.bash307
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 :