public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] gentoo-x86 commit in app-admin/eselect-boost/files: boost.eselect-0.2 boost.eselect-0.1
@ 2009-01-06 12:04 Tiziano Mueller (dev-zero)
  0 siblings, 0 replies; only message in thread
From: Tiziano Mueller (dev-zero) @ 2009-01-06 12:04 UTC (permalink / raw
  To: gentoo-commits

dev-zero    09/01/06 12:04:16

  Added:                boost.eselect-0.2
  Removed:              boost.eselect-0.1
  Log:
  Version bump to fix bug #252828
  (Portage version: 2.2_rc20/cvs/Linux 2.6.28 x86_64)

Revision  Changes    Path
1.1                  app-admin/eselect-boost/files/boost.eselect-0.2

file : http://sources.gentoo.org/viewcvs.py/gentoo-x86/app-admin/eselect-boost/files/boost.eselect-0.2?rev=1.1&view=markup
plain: http://sources.gentoo.org/viewcvs.py/gentoo-x86/app-admin/eselect-boost/files/boost.eselect-0.2?rev=1.1&content-type=text/plain

Index: boost.eselect-0.2
===================================================================
# 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
}






^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2009-01-06 12:04 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-01-06 12:04 [gentoo-commits] gentoo-x86 commit in app-admin/eselect-boost/files: boost.eselect-0.2 boost.eselect-0.1 Tiziano Mueller (dev-zero)

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox