#!/bin/bash # Written by vapier@gentoo.org # public-domain code ... z0r ... # $Header: /var/cvsroot/gentoo-x86/app-shells/sandboxshell/files/sandboxshell.conf,v 1.8 2006/08/06 18:50:48 vapier Exp $ trap ":" INT QUIT TSTP source /etc/profile # do ebuild environment loading ... detect if we're in portage # build area or not ... uNF uNF uNF #sbs_pdir=$(portageq envvar PORTAGE_TMPDIR)/portage/ #portageq takes too long imo if [[ -z ${PORTAGE_TMPDIR} ]] ; then sbs_gpdir=$( source /etc/make.globals && echo $PORTAGE_TMPDIR 2> /dev/null) sbs_cpdir=$( source /etc/make.conf && echo $PORTAGE_TMPDIR 2> /dev/null) [[ -z ${sbs_cpdir} ]] \ && sbs_pdir=${sbs_gpdir} \ || sbs_pdir=${sbs_cpdir} else sbs_pdir=${PORTAGE_TMPDIR} fi [[ -z ${sbs_pdir} ]] && sbs_pdir=/var/tmp sbs_pdir=${sbs_pdir}/portage/ if [[ ${PWD:0:${#sbs_pdir}} == "${sbs_pdir}" ]] ; then sbs_bdir=$(echo ${PWD:${#sbs_pdir}} | cut -d/ -f1) sbs_tmpenvfile=${sbs_pdir}${sbs_bdir}/temp/environment if [[ -e ${sbs_tmpenvfile} ]] ; then echo "Found environment at ${sbs_tmpenvfile}" printf " * Would you like to enter the portage environment ? " read env sbs_PREPWD=${PWD} if [[ ${env} == "y" ]] ; then # First try to source variables and export them ... eval "$(sed -e '/^[[:alnum:]_-]*=/s:^:export :' -e '/^[[:alnum:]_-]* ()/Q' "${sbs_tmpenvfile}")" 2>/dev/null # Then grab everything (including functions) source "${sbs_tmpenvfile}" 2> /dev/null export SANDBOX_WRITE=${SANDBOX_WRITE}:${sbs_pdir}${sbs_bdir}:${sbs_pdir}/homedir fi PWD=${sbs_PREPWD} fi fi unset sbs_gpdir sbs_cpdir sbs_pdir sbs_bdir sbs_tmpenvfile sbs_PREPWD env cd "${PWD}" export PS1="[s]${PS1}" adddeny() { export SANDBOX_DENY=${SANDBOX_DENY}:$1 ; } addpredict() { export SANDBOX_PREDICT=${SANDBOX_PREDICT}:$1 ; } addread() { export SANDBOX_READ=${SANDBOX_READ}:$1 ; } addwrite() { export SANDBOX_WRITE=${SANDBOX_WRITE}:$1 ; } sandboxon() { export SANDBOX_ON="1" ; } sandboxoff() { export SANDBOX_OFF="0" ; } [[ -z ${CCACHE_DIR} ]] && export CCACHE_DIR=/root/.ccache for var in CCACHE_DIR DISTCC_DIR ; do [[ ${!var+set} == "set" ]] && addwrite ${!var} done unset var