diff options
author | Tiziano Müller <dev-zero@gentoo.org> | 2009-04-07 09:39:39 +0000 |
---|---|---|
committer | Tiziano Müller <dev-zero@gentoo.org> | 2009-04-07 09:39:39 +0000 |
commit | 9a32e04af6c8da7cdae96b262ca73f2072a60a97 (patch) | |
tree | a46647da72861b0b1d00736d7c4772d03a29db3f /app-admin/eselect-boost | |
parent | Add in vmware-workstation files for 6.5.2.156725 (why didn't repoman add thes... (diff) | |
download | gentoo-2-9a32e04af6c8da7cdae96b262ca73f2072a60a97.tar.gz gentoo-2-9a32e04af6c8da7cdae96b262ca73f2072a60a97.tar.bz2 gentoo-2-9a32e04af6c8da7cdae96b262ca73f2072a60a97.zip |
Version bump for new boost versions: full profile support using profile files.
(Portage version: 2.1.6.11/cvs/Linux x86_64)
Diffstat (limited to 'app-admin/eselect-boost')
-rw-r--r-- | app-admin/eselect-boost/ChangeLog | 9 | ||||
-rw-r--r-- | app-admin/eselect-boost/eselect-boost-0.3.ebuild | 25 | ||||
-rw-r--r-- | app-admin/eselect-boost/files/boost.eselect-0.3 | 229 |
3 files changed, 262 insertions, 1 deletions
diff --git a/app-admin/eselect-boost/ChangeLog b/app-admin/eselect-boost/ChangeLog index face1db27d4f..c5329e2dd058 100644 --- a/app-admin/eselect-boost/ChangeLog +++ b/app-admin/eselect-boost/ChangeLog @@ -1,6 +1,13 @@ # ChangeLog for app-admin/eselect-boost # Copyright 1999-2009 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/app-admin/eselect-boost/ChangeLog,v 1.3 2009/02/24 19:24:24 fmccor Exp $ +# $Header: /var/cvsroot/gentoo-x86/app-admin/eselect-boost/ChangeLog,v 1.4 2009/04/07 09:39:39 dev-zero Exp $ + +*eselect-boost-0.3 (07 Apr 2009) + + 07 Apr 2009; Tiziano Müller <dev-zero@gentoo.org> + +files/boost.eselect-0.3, +eselect-boost-0.3.ebuild: + Version bump for new boost versions: full profile support using profile + files. 24 Feb 2009; Ferris McCormick <fmccor@gentoo.org> eselect-boost-0.2.ebuild: diff --git a/app-admin/eselect-boost/eselect-boost-0.3.ebuild b/app-admin/eselect-boost/eselect-boost-0.3.ebuild new file mode 100644 index 000000000000..24feb8b4b6b8 --- /dev/null +++ b/app-admin/eselect-boost/eselect-boost-0.3.ebuild @@ -0,0 +1,25 @@ +# Copyright 1999-2009 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/app-admin/eselect-boost/eselect-boost-0.3.ebuild,v 1.1 2009/04/07 09:39:39 dev-zero Exp $ + +inherit multilib + +DESCRIPTION="boost module for eselect" +HOMEPAGE="http://www.gentoo.org/proj/en/eselect/" +SRC_URI="" +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~amd64 ~sparc ~x86" +IUSE="" + +DEPEND="" +RDEPEND=">=app-admin/eselect-1.0.5" + +src_install() { + local mdir="/usr/share/eselect/modules" + dodir ${mdir} + sed -e "s|%LIBDIR%|$(get_libdir)|g" "${FILESDIR}/boost.eselect-${PVR}" > "${D}${mdir}/boost.eselect" || die "failed to install" + + keepdir /etc/eselect/boost + keepdir /usr/share/boost-eselect/profiles +} diff --git a/app-admin/eselect-boost/files/boost.eselect-0.3 b/app-admin/eselect-boost/files/boost.eselect-0.3 new file mode 100644 index 000000000000..b074062f7f51 --- /dev/null +++ b/app-admin/eselect-boost/files/boost.eselect-0.3 @@ -0,0 +1,229 @@ +# Copyright 1999-2009 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id: boost.eselect-0.3,v 1.1 2009/04/07 09:39:39 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" +MAINTAINER="dev-zero@gentoo.org" +VERSION="0.3" + +_boost_tools="bcp bjam compiler_status inspect library_status process_jam_log quickbook wave" + +# ... meaning: <none> and -debug: +_suffices="|-debug" + +find_targets() { + local f + # use ls here to get a really empty set in case no boost is installed + for d in $(ls -d "${ROOT}"/usr/share/boost-eselect/profiles/* 2>/dev/null) ; do + for p in "${d}"/* ; do + echo "boost-$(basename ${d})/$(basename ${p})" + done + done +} + +remove_installation() { + echo "Removing symlinks from old version" + + 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:]]@(${_suffices}).@(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 + + if [ -L "${ROOT}/etc/eselect/boost/active" ] ; then + rm "${ROOT}/etc/eselect/boost/active" || die -q "Unable to remove \"${ROOT}/etc/eselect/boost/active\" symlink" + else + [[ -e "${ROOT}/etc/eselect/boost/active" ]] && die -q "\"${ROOT}/etc/eselect/boost/active\" exists and isn't a symlink" + fi +} + +set_installation() { + [[ -z "${1}" ]] && die -q "Too few parameters to set_installation()" + local target="${1}" + + echo "Creating symlinks for ${target}" + + local profile="${target/*\/}" + local version="${target/\/${profile}}" + version="${version/boost-}" + version="${version/./_}" + + cd "${ROOT}/etc/eselect/boost" + ln -s "${ROOT}/usr/share/boost-eselect/profiles/${target//boost-}" active || die -q "Couldn't create symlink active -> /usr/share/boost-eselect/profiles/${target//boost-}/${profile}" + + . "${ROOT}/usr/share/boost-eselect/profiles/${target//boost-}" + + for t in ${dirs} ${bins} ${libs} ; do + [[ -e "${ROOT}${t}" ]] || die -q "\"${t}\" listed as target does not exist" + + pushd "$(dirname ${ROOT}${t})" 1>/dev/null + local ts=$(basename "${t}") + local tt="${ts//-${version}}" + tt="${tt//${suffix}}" + ln -s ${ts} ${tt} || die -q "Couldn't create symlink \"$(pwd)/${tt}\"" + popd 1>/dev/null + done + + [[ -d "${ROOT}${includes}" ]] || die -q "\"${includes}\" does not exist" + pushd "${ROOT}/usr/include" 1>/dev/null + ln -s ${includes//\/usr\/include\/} boost || die -q "Couldn't create symlink \"/usr/include/boost\"" + popd 1>/dev/null + + for t in ${python} ; do + pushd "$(dirname ${ROOT}${t})/.." 1>/dev/null + local ts="$(basename $(dirname ${ROOT}${t}))/${t//*\/}" + ts="${ts//${suffix}}" + local tt=${t//*\/} + ln -s "${ts}" "${tt}" || die -q "Couldn't create symlink \"$(pwd)/${tt}\"" + popd 1>/dev/null + done +} + +### 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 + local active_slot=$(canonicalise "${ROOT}/etc/eselect/boost/active") + active_slot=${active_slot/"${ROOT}/usr/share/boost-eselect/profiles/"/boost-} + for (( i = 0 ; i < ${#targets[@]} ; i = i + 1 )) ; do + if [[ "${targets[${i}]}" == ${active_slot} ]] ; then + targets[${i}]="${targets[${i}]} $(highlight '*' )" + fi + 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 + + remove_installation + set_installation "${target}" +} + +### update action ### + +describe_update() { + echo "Automaticly update boost version used" +} + +do_update() { + # set default profile + profile="default" + + # extract profile if there's already one boost version selected + if [ -L "${ROOT}"/etc/eselect/boost/active ] ; then + profile=$(basename $(canonicalise "${ROOT}/etc/eselect/boost/active")) + fi + + echo "Previously selected profile: ${profile}" + + remove_installation + + local targets=($(find_targets)) + [[ ${#targets[@]} -gt 0 ]] || die -q "No slotted boost version found" + + # contains surely the highest available version, but maybe not the right profile + local last_target="${targets[@]:(-1)}" + # strip profile + local target_version="${last_target//\/*}" + + # in case the previously used profile isn't available anymore + local target="${target_version}/default" + local matching_profile_found=0 + for (( i = 0 ; i < ${#targets[@]} ; i = i + 1 )) ; do + if [[ "${targets[${i}]}" == "${target_version}/${profile}" ]] ; then + target="${targets[${i}]}" + matching_profile_found=1 + break + fi + done + + if [[ "${matching_profile_found}" == 1 ]] ; then + echo "Found a matching profile \"${profile}\" for the new version." + else + echo "Didn't find the previously selected profile \"${profile}\" for the new version. Resetting to \"default\"." + fi + + set_installation "${target}" +} |