aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog10
-rw-r--r--README8
-rw-r--r--libs/default.eclectic.in1
-rw-r--r--libs/output.bash.in10
-rw-r--r--man/blas.eclectic.547
-rw-r--r--man/eclectic.12
-rw-r--r--man/lapack.eclectic.583
-rw-r--r--man/profile-symlink.eclectic.540
-rw-r--r--modules/Makefile.am5
-rw-r--r--modules/blas.eclectic52
-rw-r--r--modules/lapack.eclectic226
11 files changed, 446 insertions, 38 deletions
diff --git a/ChangeLog b/ChangeLog
index 3fbce94..1e0eafc 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,15 @@
ChangeLog for eclectic
+2005-05-07 Danny van Dyk <kugelfang@gentoo.org>
+
+ * libs/output.bash.in: Added funciton 'space'.
+ * libs/default.eclectic.in: Fixed do_usage to filter 'action'.
+ * man/blas.eclectic: Added missing Section 'ACTION: SET'.
+ * man/lapack.eclectic: Added a manpage for the lapack module.
+ * man/profile-symlink.eclectic: Addeda manpage for profile-symlink.
+ * modules/blas.eclectic: Finalized this module.
+ * modules/lapack.eclectic: Added lapack module.
+
2005-04-25 Tom Martin <slarti@gentoo.org>
* modules/mailer-symlink.eclectic: Added mailwrapper symlink module.
diff --git a/README b/README
index 91baabe..421b28a 100644
--- a/README
+++ b/README
@@ -10,11 +10,15 @@ Ciaran McCreesh <ciaranm@gentoo.org>
Libraries: core, output
Danny van Dyk <kugelfang@gentoo.org>
- Modules: blas
+ Manpages
+ Modules: blas, lapack
Libraries: config, multilib
Aaron Walker <ka0ttic@gentoo.org>
- Modules: bashcomp
+ Modules: bashcomp, profile-symlink
+
+Tom Martin <slarti@gentoo.org>
+ Modules: mailer-symlink
Copyright
---------
diff --git a/libs/default.eclectic.in b/libs/default.eclectic.in
index 30a61af..80bf3e3 100644
--- a/libs/default.eclectic.in
+++ b/libs/default.eclectic.in
@@ -42,6 +42,7 @@ do_usage() {
# FIXME: can we do this using expansion somehow?
for action in $(set | \
sed -n -e '/^do_\S\+ ()\s*$/s/^do_\(\S\+\).*/\1/p' | \
+ grep -v 'action' | \
sort ) ; do
case "${action}" in
help|usage|version)
diff --git a/libs/output.bash.in b/libs/output.bash.in
index e2755a4..7879408 100644
--- a/libs/output.bash.in
+++ b/libs/output.bash.in
@@ -63,4 +63,14 @@ write_numbered_list() {
done
}
+# space PUBLIC
+# Write $1 numbers of spaces
+space() {
+ local n=${1}
+ while [[ ${n} -gt 0 ]] ; do
+ echo -ne " "
+ n=$(( ${n} - 1))
+ done
+}
+
# vim: set sw=4 et sts=4 tw=80 :
diff --git a/man/blas.eclectic.5 b/man/blas.eclectic.5
index ac7f174..052354d 100644
--- a/man/blas.eclectic.5
+++ b/man/blas.eclectic.5
@@ -2,13 +2,15 @@
.SH "NAME"
blas.eclectic \- The BLAS management module for Gentoo's eclectic
.SH "SYNOPSIS"
-\fBeclectic blas\fR [\fIhelp\fR|\fIusage\fR]
+\fBeclectic blas\fR [\fBhelp\fR|\fBusage\fR]
.br
-\fBeclectic blas\fR \fIlist\fR [\fIoptions\fR]
+\fBeclectic blas\fR \fBlist\fR [\fIoptions\fR]
.br
-\fBeclectic blas\fR \fIshow\fR [\fIoptions\fR]
+\fBeclectic blas\fR \fBset\fR \fIimplementation\fR [\fIoptions\fR]
.br
-\fBeclectic blas\fR \fIupdate\fR
+\fBeclectic blas\fR \fBshow\fR [\fIoptions\fR]
+.br
+\fBeclectic blas\fR \fBupdate\fR
.SH "DESCRIPTION"
\fBeclectic\fR is Gentoo's configuration and management tool. It features
modules that care for the individual administrative tasks.
@@ -25,16 +27,16 @@ phi / # eclectic blas list
\-\-\- Installed in /usr/lib \-\-\-
.br
C/C++ profiles
- [1] ACML (sci\-libs/ACML)
- [2] ATLAS (sci\-libs/blas\-atlas)
+ [1] ACML (sci\-libs/ACML)
+ [2] ATLAS (sci\-libs/blas\-atlas)
FORTRAN 77 profiles
- [1] ACML (sci\-libs/ACML)
- [2] ATLAS (sci\-libs/blas\-atlas)
- [3] reference (sci\-libs/blas\-reference)
+ [1] ACML (sci\-libs/ACML)
+ [2] ATLAS (sci\-libs/blas\-atlas)
+ [3] reference (sci\-libs/blas\-reference)
-Possible \fIoptions\fR to the \fBlist\fR action are restriction to
+Possible \fIoptions\fR to the \fBlist\fR action are restrictions to
handle only certain profiles or ABI\-specific library directories. For example,
\fBeclectic blas list lib64\fR
@@ -51,11 +53,30 @@ and are located in \fB/usr/lib32\fR.
Shows your system's currently active BLAS implementations.
phi / # eclectic blas show
-/usr/lib C Active BLAS is ACML (sci\-libs/ACML).
-/usr/lib F77 Active BLAS is ACML (sci\-libs/ACML)
+.br
+Active BLAS implementations
+ /usr/lib (C) ACML (sci\-libs/ACML)
+ /usr/lib (F77) ACML (sci\-libs/ACML)
+ /usr/lib64 (C) ACML (sci\-libs/ACML)
+ /usr/lib64 (F77) ACML (sci\-libs/ACML)
The same \fIoptions\fR that apply to the \fBlist\fR action can be used
-with the \fBshow\fR action.
+with the \fBshow\fR action to restrict it to given ABIs and language interfaces.
+.SH "ACTION: SET"
+\fBeclectic blas set\fR \fIimplementation\fR [\fIoptions\fR]
+.br
+Sets your system's currently active BLAS implementations to \fIimplementation\fR.
+The same \fIoptions\fR that apply to the \fBlist\fR action can be used
+with the \fBset\fR action to restrict it to given ABIs and language interfaces.
+
+phi / # eclectic blas set ACML
+.br
+Changing BLAS implementation to ACML in
+.br
+ lib lib32 lib64
+.br
+Affected language interfaces
+ C F77
.SH "ACTION: UPDATE"
\fBeclectic blas update\fR
.br
diff --git a/man/eclectic.1 b/man/eclectic.1
index fdf2840..4abebee 100644
--- a/man/eclectic.1
+++ b/man/eclectic.1
@@ -1,6 +1,6 @@
.TH "ECLECTIC" "5" "April 2005" "Gentoo Linux" "eclectic"
.SH "NAME"
-eclectic \- Gentoo multipurpose configuration and managment tool
+eclectic \- Gentoo's multipurpose configuration and managment tool
.SH "SYNOPSIS"
\fBeclectic\fR \fImodule\fR [\fIaction\fR [\fIoption(s)\fR]]
.SH "DESCRIPTION"
diff --git a/man/lapack.eclectic.5 b/man/lapack.eclectic.5
new file mode 100644
index 0000000..fff75b1
--- /dev/null
+++ b/man/lapack.eclectic.5
@@ -0,0 +1,83 @@
+.TH "ECLECTIC" "5" "April 2005" "Gentoo Linux" "eclectic"
+.SH "NAME"
+lapack.eclectic \- The LAPACK management module for Gentoo's eclectic
+.SH "SYNOPSIS"
+\fBeclectic lapack\fR [\fBhelp\fR|\fBusage\fR]
+.br
+\fBeclectic lapack\fR \fBlist\fR [\fIoptions\fR]
+.br
+\fBeclectic lapack\fR \fBset\fR \fIimplementation\fR [\fIoptions\fR]
+.br
+\fBeclectic lapack\fR \fBshow\fR [\fIoptions\fR]
+.br
+\fBeclectic lapack\fR \fBupdate\fR
+.SH "DESCRIPTION"
+\fBeclectic\fR is Gentoo's configuration and management tool. It features
+modules that care for the individual administrative tasks.
+.SH "ACTION: LIST"
+\fBeclectic lapack list\fR [\fIoptions\fR]
+.br
+Displays an orderd list of installed LAPACK implementations. It distinguishes between versions with different
+Application Binary Interfaces (e.g. x86/AMD64). Further it distinguishes
+between interfaces to highlevel programming languages. Each line holds
+a number, the implementation's name and the providing package's name.
+
+phi / # eclectic lapack list
+.br
+\-\-\- Installed in /usr/lib \-\-\-
+.br
+FORTRAN 77 profiles
+ [1] ACML (sci\-libs/ACML)
+ [2] ATLAS (sci\-libs/lapack\-atlas)
+ [3] reference (sci\-libs/lapack\-reference)
+
+
+Possible \fIoptions\fR to the \fBlist\fR action are restrictions to
+handle only certain profiles or ABI\-specific library directories. For example,
+
+\fBeclectic lapack list lib64\fR
+
+lists only LAPACK implementations found in \fB/usr/lib64\fR while
+
+\fBeclectic lapack list lib32 F77\fR
+
+lists only LAPACK implementations that provide a FORTRAN 77 interface
+and are located in \fB/usr/lib32\fR.
+.SH "ACTION: SHOW"
+\fBeclectic lapack show\fR [\fIoptions\fR]
+.br
+Shows your system's currently active LAPACK implementations.
+
+phi / # eclectic lapack show
+.br
+Active LAPACK implementations
+ /usr/lib (F77) ACML (sci\-libs/ACML)
+ /usr/lib64 (F77) ACML (sci\-libs/ACML)
+
+The same \fIoptions\fR that apply to the \fBlist\fR action can be used
+with the \fBshow\fR action to restrict it to given ABIs and language interfaces.
+.SH "ACTION: SET"
+\fBeclectic lapack set\fR \fIimplementation\fR [\fIoptions\fR]
+.br
+Sets your system's currently active LAPACK implementations to \fIimplementation\fR.
+The same \fIoptions\fR that apply to the \fBlist\fR action can be used
+with the \fBset\fR action to restrict it to given ABIs and language interfaces.
+
+phi / # eclectic lapack set ACML
+.br
+Changing LAPACK implementation to ACML in
+.br
+ lib lib32 lib64
+.br
+Affected language interfaces
+ F77
+.SH "ACTION: UPDATE"
+\fBeclectic lapack update\fR
+.br
+Browses your system for installed LAPACK implementations
+and save the data for further actions. During this process it automatically
+detects the currently active LAPACK implementation which will be memorized as well.
+.SH "AUTHOR"
+Danny van Dyk <kugelfang@gentoo.org>
+.SH "REVISION"
+$Id$
diff --git a/man/profile-symlink.eclectic.5 b/man/profile-symlink.eclectic.5
new file mode 100644
index 0000000..bafc5fe
--- /dev/null
+++ b/man/profile-symlink.eclectic.5
@@ -0,0 +1,40 @@
+.TH "ECLECTIC" "5" "April 2005" "Gentoo Linux" "eclectic"
+.SH "NAME"
+profile\-symlink.eclectic \- The profile management module for Gentoo's eclectic
+.SH "SYNOPSIS"
+\fBeclectic profile\-symlink\fR [\fBhelp\fR|\fBusage\fR]
+.br
+\fBeclectic profile\-symlink\fR \fBlist\fR
+.br
+\fBeclectic profile\-symlink\fR \fBset\fR \fIprofile\fR
+.br
+\fBeclectic profile\-symlink\fR \fBshow\fR
+
+.SH "DESCRIPTION"
+\fBeclectic\fR is Gentoo's configuration and management tool. It features
+modules that care for the individual administrative tasks.
+.SH "ACTION: LIST"
+\fBeclectic profile\-symlink list\fR
+.br
+Displays an orderd list of available and (for your architecture) valid profiles.
+
+phi / # eclectic profile\-symlink list
+.br
+Available profile symlink targets:
+ [1] default\-linux/amd64/2005.0
+.SH "ACTION: SET"
+\fBeclectic profile\-symlink setup\fR [.fi profile\fR]
+.br
+Select a valid \fIprofile\fR for future use with portage.
+.SH "ACTION: SHOW"
+\fBeclectic profile\-symlink show\fR
+.br
+Shows your system's currently active BLAS implementations.
+
+phi / # eclectic profile\-symlink show
+Current make.profile symlink:
+ /usr/portage/profiles/default\-linux/amd64/2005.0
+.SH "AUTHOR"
+Danny van Dyk <kugelfang@gentoo.org>
+.SH "REVISION"
+$Id$
diff --git a/modules/Makefile.am b/modules/Makefile.am
index 96033df..fcb9952 100644
--- a/modules/Makefile.am
+++ b/modules/Makefile.am
@@ -2,9 +2,10 @@ noinst_SCRIPTS = bashcomp.eclectic \
blas.eclectic \
cow.eclectic \
kernel-symlink.eclectic \
+ lapack.eclectic \
+ mailer-symlink.eclectic \
profile-symlink.eclectic \
- vi-symlink.eclectic \
- mailer-symlink.eclectic
+ vi-symlink.eclectic
EXTRA_DIST = $(noinst_SCRIPTS)
diff --git a/modules/blas.eclectic b/modules/blas.eclectic
index 2838188..0b18b6c 100644
--- a/modules/blas.eclectic
+++ b/modules/blas.eclectic
@@ -127,30 +127,36 @@ describe_list() {
}
do_list() {
- local libdirs libdir
+ local libdirs libdir n
[[ -z "$@" ]] \
&& libdirs="$(list_libdirs)" \
|| libdirs="$@"
for libdir in ${libdirs} ; do
- C_PROFILES=()
- for x in $(load_config blas C_${libdir}) ; do
- C_PROFILES=("${C_PROFILES[@]}" "${x}\t($(package ${x}))")
- done
- F77_PROFILES=()
- for x in $(load_config blas F77_${libdir}) ; do
- F77_PROFILES=("${F77_PROFILES[@]}" "${x}\t($(package ${x}))")
- done
+ C_PROFILES=$(load_config blas C_${libdir})
+ F77_PROFILES=$(load_config blas F77_${libdir})
if [[ -n ${C_PROFILES} ]] || [[ -n ${F77_PROFILES} ]] ; then
echo "--- Installed in ${ROOT}/usr/${libdir} ---"
if [[ -n ${C_PROFILES} ]] ; then
write_list_start "C/C++ profiles"
- write_numbered_list ${C_PROFILES[@]}
+ n=1
+ for x in ${C_PROFILES} ; do
+ write_numbered_list_entry \
+ $n \
+ "${x}$(space $((12 - ${#x})))($(package ${x}))"
+ n=$(( n + 1))
+ done
echo
fi
if [[ -n ${F77_PROFILES} ]] ; then
write_list_start "FORTRAN 77 profiles"
- write_numbered_list ${F77_PROFILES[@]}
+ n=1
+ for x in ${F77_PROFILES} ; do
+ write_numbered_list_entry \
+ $n \
+ "${x}$(space $((12 - ${#x})))($(package ${x}))"
+ n=$(( n + 1))
+ done
echo
fi
fi
@@ -159,11 +165,11 @@ do_list() {
### select action ###
-describe_setup() {
+describe_set() {
echo "Setup one of the installed BLAS implementations as the active implementation."
}
-do_setup() {
+do_set() {
local libdirs=$(list_libdirs) profiles=${BLAS_PROFILES} impl libdir prof
[[ ${#1} == 0 ]] && die -q "Please specify the implementation to setup as active."
impl=${1}
@@ -185,8 +191,10 @@ do_setup() {
[[ -n ${mylibdirs[@]} ]] && libdirs=${mylibdirs[@]}
[[ -n ${myprofiles[@]} ]] && profiles=${myprofiles[@]}
- echo "libdirs: ${libdirs}"
- echo "profiles: ${profiles}"
+ write_list_start "Changing BLAS implementation to ${impl} in"
+ echo " ${libdirs}"
+ write_list_start "Affected language interfaces"
+ echo " ${profiles}"
for libdir in ${libdirs} ; do
for prof in ${profiles} ; do
setup_${impl} ${ROOT}/usr/${libdir} ${prof}
@@ -205,18 +213,22 @@ do_show() {
local libdirs=$(list_libdirs) profiles=${BLAS_PROFILES} libdir lib prefix
[[ -n ${1} ]] && has "libdirs" ${1} && libdirs=${1}
[[ -n ${2} ]] && has "profiles" ${2} && profiles=${2}
+ write_list_start "Active BLAS implementations"
for libdir in ${libdirs} ; do
[[ ${#libdirs} -eq 1 ]] || prefix="${ROOT}/usr/${libdir}"
for prof in ${profiles} ; do
- [[ ${#profiles} -eq 1 ]] || myprefix="${prefix}\t${prof}"
[[ ${prof} == C ]] && lib=libcblas.so
[[ ${prof} == F77 ]] && lib=libblas.so
impl=$(load_config blas "${prof}_${libdir}_CURRENT")
- [[ -z ${impl} ]] && die -q "Configuration file is broken. Please run update."
- if is_active_${impl} ${ROOT}/usr/${libdir}/${lib} ; then
- echo -e "${myprefix}\tActive BLAS is ${impl} ($(package ${impl}))."
+ if [[ -z ${impl} ]] ; then
+ [[ -n $(load_config lapack "${prof}_${libdir}") ]] \
+ && die -q "Configuration file is broken. Please run update."
else
- die -q "Configuration file is out of date. Please run update."
+ if is_active_${impl} ${ROOT}/usr/${libdir}/${lib} ; then
+ write_kv_list_entry "${prefix} (${prof})" "${impl} ($(package ${impl}))"
+ else
+ die -q "Configuration file is out of date. Please run update."
+ fi
fi
done
done
diff --git a/modules/lapack.eclectic b/modules/lapack.eclectic
new file mode 100644
index 0000000..398e996
--- /dev/null
+++ b/modules/lapack.eclectic
@@ -0,0 +1,226 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+
+DESCRIPTION="Manage installed LAPACK implementations. (virtual/lapack)"
+VERSION="1.0"
+MAINTAINER="Danny van Dyk <kugelfang@gentoo.org>"
+
+LAPACK_IMPLEMENTATIONS="ACML ATLAS reference"
+LAPACK_PROFILES="F77"
+
+# check_* $libdir
+# implementation specific check functions
+check_ACML() {
+ # libacml.so provides FORTRAN 77 support
+ [[ -f ${1}/libacml.so ]] && echo "F77"
+}
+
+check_ATLAS() {
+ [[ -d ${1}/lapack/atlas ]] || return
+ [[ -f ${1}/lapack/atlas/liblapack.so ]] && echo "F77"
+}
+
+check_reference() {
+ [[ -d ${1}/lapack/reference ]] || return
+ [[ -f ${1}/lapack/reference/liblapack.so ]] && echo "F77"
+}
+
+# package $impl
+# Prints the name of the package providing $impl
+package() {
+ case ${1} in
+ ACML) echo "sci-libs/ACML";;
+ ATLAS) echo "sci-libs/lapack-atlas";;
+ MKL) echo "sci-libs/mkl";;
+ reference) echo "sci-libs/lapack-reference";;
+ *) ;;
+ esac
+}
+
+# is_active_* $lib
+# return 0 if $lib points to an active LAPACK implementation of profile *
+is_active_ACML() {
+ [[ -L ${1} ]] || return 1
+ local lib=$(/bin/readlink -sn ${1})
+ [[ $(basename ${lib}) == libacml.so ]] \
+ && return 0
+ return 1
+}
+
+is_active_ATLAS() {
+ [[ -L ${1} ]] || return 1
+ local lib=$(/bin/readlink -sn ${1})
+ local dir=${lib%/*}
+ [[ ${dir##*/} == atlas ]] \
+ && return 0
+ return 1
+}
+
+is_active_reference() {
+ [[ -L ${1} ]] || return 1
+ local lib=$(/bin/readlink -sn ${1})
+ local dir=${lib%/*}
+ [[ ${dir##*/} == reference ]] \
+ && return 0
+ return 1
+}
+
+# setup_* $libdir $profile
+# Implementation specific activation/setup functions
+setup_ACML() {
+ if [[ ${2} == F77 ]] ; then
+ ln -sf ${1}/libacml.so ${1}/liblapack.so
+ ln -sf ${1}/libacml.so ${1}/liblapack.so.0
+ ln -sf ${1}/libacml.a ${1}/liblapack.a
+ else
+ die "Illegal profile: ${2}"
+ fi
+}
+
+setup_ATLAS() {
+ if [[ ${2} == F77 ]] ; then
+ ln -sf ${1}/atlas/liblapack.so ${1}/liblapack.so
+ ln -sf ${1}/atlas/liblapack.so ${1}/liblapack.so.0
+ ln -sf ${1}/atlas/liblapack.a ${1}/liblapack.a
+ else
+ die "Illegal profile: ${2}"
+ fi
+}
+
+setup_reference() {
+ if [[ ${2} == F77 ]] ; then
+ ln -sf ${1}/reference/liblapack.so ${1}/liblapack.so
+ ln -sf ${1}/reference/liblapack.so ${1}/liblapack.so.0
+ ln -sf ${1}/reference/liblapack.a ${1}/liblapack.a
+ else
+ die "Illegal profile: ${2}"
+ fi
+}
+
+### list action ###
+
+describe_list() {
+ echo "List all installed LAPACK implementations."
+}
+
+do_list() {
+ local libdirs libdir n
+ [[ -z "$@" ]] \
+ && libdirs="$(list_libdirs)" \
+ || libdirs="$@"
+
+ for libdir in ${libdirs} ; do
+ F77_PROFILES=$(load_config lapack F77_${libdir})
+ if [[ -n ${F77_PROFILES} ]] ; then
+ echo "--- Installed in ${ROOT}/usr/${libdir} ---"
+ write_list_start "FORTRAN 77 profiles"
+ n=1
+ for x in ${F77_PROFILES} ; do
+ write_numbered_list_entry $n "${x}$(space $(( 12 - ${#x})))($(package ${x}))"
+ n=$(( n + 1))
+ done
+ echo
+ fi
+ done
+}
+
+### select action ###
+
+describe_set() {
+ echo "Setup one of the installed LAPACK implementations as the active implementation."
+}
+
+do_set() {
+ local libdirs=$(list_libdirs) profiles=${LAPACK_PROFILES} impl libdir prof
+ [[ ${#1} == 0 ]] && die -q "Please specify the implementation to setup as active."
+ impl=${1}
+ shift
+
+ has "LAPACK_IMPLEMENTATIONS" ${impl} \
+ || die -q "Illegal implementation: ${impl}"
+
+ for param in ${@} ; do
+ echo "param: ${param}"
+ if has "libdirs" ${param} ; then
+ mylibdirs=(${mylibdirs[@]} ${param})
+ elif has "LAPACK_PROFILES" ${param} ; then
+ myprofiles=(${myprofiles[@]} ${param})
+ else
+ die -q "Illegal parameter: ${param}."
+ fi
+ done
+ [[ -n ${mylibdirs[@]} ]] && libdirs=${mylibdirs[@]}
+ [[ -n ${myprofiles[@]} ]] && profiles=${myprofiles[@]}
+
+ write_list_start "Changing LAPACK implementations to ${impl} in"
+ echo " ${libdirs}"
+ write_list_start "Affected language interfaces"
+ echo " ${profiles}"
+ for libdir in ${libdirs} ; do
+ for prof in ${profiles} ; do
+ setup_${impl} ${ROOT}/usr/${libdir} ${prof}
+ store_config lapack "${prof}_${libdir}_CURRENT" ${impl}
+ done
+ done
+}
+
+### show action ###
+
+describe_show() {
+ echo "Show the currently active LAPACK implementations."
+}
+
+do_show() {
+ local libdirs=$(list_libdirs) profiles=${LAPACK_PROFILES} libdir lib prefix
+ [[ -n ${1} ]] && has "libdirs" ${1} && libdirs=${1}
+ [[ -n ${2} ]] && has "profiles" ${1} && profiles=${1}
+ write_list_start "Active LAPACK implementations"
+ for libdir in ${libdirs} ; do
+ [[ ${#libdirs} -eq 1 ]] || prefix="${ROOT}/usr/${libdir}"
+ for prof in ${profiles} ; do
+ [[ ${#profiles} -eq 1 ]] || prefix="${prefix}:${prof}"
+ [[ ${prof} == F77 ]] && lib=liblapack.so
+ impl=$(load_config lapack "${prof}_${libdir}_CURRENT")
+ if [[ -z ${impl} ]] ; then
+ [[ -n $(load_config lapack "${prof}_${libdir}") ]] \
+ && die -q "Configuration file is broken. Please run update."
+ else
+ if is_active_${impl} ${ROOT}/usr/${libdir}/${lib} ; then
+ write_kv_list_entry "${prefix} (${prof})" "${impl} ($(package ${impl}))"
+ else
+ die -q "Configuration file is out of date. Please run update."
+ fi
+ fi
+ done
+ done
+}
+
+### update action ###
+
+describe_update() {
+ echo "Update the configuration file with data about all installed LAPACK implementations."
+}
+
+do_update() {
+ local lib libdir impl prof
+ [[ -e ${ROOT}/etc/eclectic/lapack/lapack.config ]] \
+ && rm ${ROOT}/etc/eclectic/lapack/lapack.config
+ for libdir in $(list_libdirs) ; do
+ [[ -e ${ROOT}/usr/${libdir}/ ]] || continue
+ for impl in ${LAPACK_IMPLEMENTATIONS} ; do
+ for prof in $(check_${impl} ${ROOT}/usr/${libdir}/) ; do
+ if has "LAPACK_PROFILES" ${prof} ; then
+ add_config lapack "${prof}_${libdir}" ${impl}
+ [[ ${prof} == F77 ]] && lib=${ROOT}/usr/${libdir}/liblapack.so
+ is_active_${impl} ${lib} \
+ && store_config lapack "${prof}_${libdir}_CURRENT" ${impl}
+ else
+ die -q "Unknown profile: \"${prof}\". Valid profiles: ${LAPACK_PROFILES}"
+ fi
+ done
+ done
+ done
+}
+
+# vim: set ft=ebuild