summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'app-admin/eselect-boost/files/boost.eselect-0.2')
-rw-r--r--app-admin/eselect-boost/files/boost.eselect-0.2205
1 files changed, 205 insertions, 0 deletions
diff --git a/app-admin/eselect-boost/files/boost.eselect-0.2 b/app-admin/eselect-boost/files/boost.eselect-0.2
new file mode 100644
index 000000000000..594ea91555fc
--- /dev/null
+++ b/app-admin/eselect-boost/files/boost.eselect-0.2
@@ -0,0 +1,205 @@
+# Copyright 1999-2008 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id: boost.eselect-0.2,v 1.1 2009/01/06 12:04:16 dev-zero Exp $
+
+# This eclass-module has been initially written by Łukasz Michalik <lmi@ift.uni.wroc.pl>
+# Corrections and extensions by Tiziano Müller <dev-zero@gentoo.org>
+
+DESCRIPTION="Manage boost installations"
+
+_boost_tools="bcp bjam compiler_status inspect library_status process_jam_log quickbook wave"
+
+find_targets() {
+ local f
+ for f in "${ROOT}"/usr/include/boost-[[:digit:]]* ; do
+ [[ -d "${f}" ]] && echo $(basename "${f}")
+ done
+}
+
+remove_installation() {
+ local link
+ for link in "${ROOT}/usr/include/boost" "${ROOT}/usr/share/boostbook" ; do
+ if [[ -L "${link}" ]] ; then
+ rm "${link}" || die -q "Couldn't remove \"${link}\" symlink"
+ else
+ [[ -e "${link}" ]] && die -q "\${link}\" exists and isn't a symlink"
+ fi
+ done
+
+ pushd "${ROOT}/usr/%LIBDIR%" 1>/dev/null
+ local lib
+ for lib in libboost_*.{a,so} ; do
+ [[ -L "${lib}" && "${lib}" != libboost_*[[:digit:]]_[[:digit:]][[:digit:]].@(a|so) ]] || continue
+ rm "${lib}" || die -q "Unable to remove \"/usr/%LIBDIR%/${lib}\" symlink"
+ done
+ popd 1>/dev/null
+
+ pushd "${ROOT}"/usr/bin 1>/dev/null
+ local tool
+ for tool in ${_boost_tools} ; do
+ [[ -L "${tool}" ]] && ( rm "${tool}" || die -q "Unable to remove \"/usr/bin/${tool}\" symlink" )
+ done
+ popd 1>/dev/null
+
+ local mod="mpi.so"
+ for moddir in "${ROOT}"/usr/%LIBDIR%/python*/site-packages ; do
+ if [ -L "${moddir}/${mod}" ] ; then
+ rm "${moddir}/${mod}" || die -q "Unable to remove \"${moddir}/${mod}\" symlink"
+ else
+ [[ -e "${moddir}/${mod}" ]] && die -q "\"${moddir}/${mod}\" exists and isn't a symlink"
+ fi
+ done
+}
+
+set_installation() {
+ [[ -z "${2}" ]] && die -q "Too few parameters to set_installation()"
+ local target="${1}"
+ local version="${2}"
+
+ if [[ -d "${ROOT}/usr/include/${target}" ]] ; then
+ pushd "${ROOT}/usr/include" 1>/dev/null
+ ln -s "${target}/boost" boost || die -q "Couldn't create symlink \"/usr/include/boost\""
+ popd 1>/dev/null
+
+ pushd "${ROOT}/usr/share/" 1>/dev/null
+ [[ -d "boostbook-${version}" ]] && \
+ ( ln -s "boostbook-${version}" "boostbook" || die -q "Couldn't create symlink \"/usr/bin/${tool}\"" )
+ popd 1>/dev/null
+
+ pushd "${ROOT}/usr/%LIBDIR%" 1>/dev/null
+ local lib
+ for lib in libboost_*-"${version}".{a,so} ; do
+ [[ -e "${lib}" ]] && \
+ ( ln -s "${lib}" "${lib//-${version}}" || die -q "Couldn't create symlink \"/usr/%LIBDIR%/${lib}\"" )
+ done
+ popd 1>/dev/null
+
+ pushd "${ROOT}/usr/bin/" 1>/dev/null
+ local tool
+ for tool in ${_boost_tools} ; do
+ [[ -e "${tool}" ]] && die -q "\"/usr/bin/${tool}\" exists and isn't a symlink"
+ [[ -e "${tool}-${version}" ]] && \
+ ( ln -s "${tool}-${version}" "${tool}" || die -q "Couldn't create symlink \"/usr/bin/${tool}\"" )
+ done
+ popd 1>/dev/null
+
+ local mod="mpi.so"
+ for moddir in "${ROOT}"/usr/%LIBDIR%/python*/site-packages ; do
+ pushd "${moddir}" 1>/dev/null
+ [[ -e "${mod}" ]] && die -q "\"${moddir}/${mod}\" exists and isn't a symlink"
+ [[ -e "mpi_${version}/mpi.so" ]] && \
+ ( ln -s "mpi_${version}/${mod}" "${mod}" || die -q "Couldn't create symlink \"${moddir}/${mod}\"" )
+ popd 1>/dev/null
+ done
+
+ else
+ die -q "Target \"${target}\" doesn't appear to be valid!"
+ fi
+}
+
+### show action ###
+
+describe_show() {
+ echo "Show the current boost version used"
+}
+
+do_show() {
+ local include
+
+ write_list_start "Current boost version:"
+ if [[ -L "${ROOT}"/usr/include/boost ]] ; then
+ include=$(basename $(dirname $(canonicalise "${ROOT}"/usr/include/boost )))
+ write_kv_list_entry "${include%/}" ""
+ else
+ write_kv_list_entry "(unset)" ""
+ fi
+}
+
+### list action ###
+
+describe_list() {
+ echo "List available boost versions"
+}
+
+do_list() {
+ local targets=( $(find_targets ) )
+ write_list_start "Available boost versions:"
+ if [[ -n "${targets[@]}" ]] ; then
+ local i
+ for (( i = 0 ; i < ${#targets[@]} ; i = i + 1 )) ; do
+ [[ "${targets[${i}]}" == $(basename $(dirname $(canonicalise "${ROOT}"/usr/include/boost))) ]] && \
+ targets[${i}]="${targets[${i}]} $(highlight '*' )"
+ done
+ write_numbered_list "${targets[@]}"
+ else
+ write_kv_list_entry "(none found)" ""
+ fi
+}
+
+### set action ###
+
+describe_set() {
+ echo "Set a new boost version"
+}
+
+describe_set_parameters() {
+ echo "<target>"
+}
+
+describe_set_options() {
+ echo "target : Target name or number (from 'list' action)"
+}
+
+do_set() {
+ if [[ -z "${1}" ]] ; then
+ # no parameter
+ die -q "You didn't tell me what to set the version to"
+ fi
+
+ local target="${1}"
+ if is_number "${target}" ; then
+ targets=($(find_targets))
+ target="${targets[$((${target} - 1))]}"
+ fi
+ local version="${target//boost-}"
+
+ if [[ -L "${ROOT}"/usr/include/boost ]] ; then
+ if ! remove_installation ; then
+ die -q "Couldn't unset existing installation"
+ elif ! set_installation "${target}" "${version}" ; then
+ die -q "Couldn't set a new installation"
+ fi
+ elif [[ -e "${ROOT}"/usr/include/boost ]] ; then
+ die -q "Sorry, existing boost installation confuses me"
+ else
+ set_installation "${target}" "${version}" || die -q "Couldn't set a new version"
+ fi
+}
+
+### update action ###
+
+describe_update() {
+ echo "Automaticly update boost version used"
+}
+
+do_update() {
+ local current=
+ if [[ -L "${ROOT}/usr/include/boost" ]]; then
+ current=$(basename $(canonicalise "${ROOT}/usr/include/boost") )
+ if [[ ! -e $(canonicalise "${ROOT}/usr/include/boost") ]]; then
+ # clean up dead symlinks
+ remove_installation || die -q "Couldn't remove existing installation"
+ fi
+ elif [[ -e "${ROOT}/usr/include/boost" ]]; then
+ die -q "Sorry, \"/usr/include/boost\" exists but is not a symlink"
+ fi
+
+ local targets=($(find_targets))
+ if [[ ${#targets[@]} -gt 0 ]]; then
+ remove_installation
+ local target="${targets[@]:(-1)}"
+ set_installation "${target}" "${target//boost-}" || die -q "Couldn't set a new symlink"
+ else
+ die -q "No slotted boost version found"
+ fi
+}