| #!/bin/bash |
| # Copyright 1999-2007 Gentoo Foundation |
| # Distributed under the terms of the GNU General Public License v2 |
| # $Id$ |
| |
| source "${PORTAGE_BIN_PATH:-/usr/lib/portage/bin}"/isolated-functions.sh |
| |
| if [ $# -lt 1 ] ; then |
| echo "${0##*/}: at least one argument needed" 1>&2 |
| exit 1 |
| fi |
| |
| if [[ "$1" == "-r" ]] ; then |
| DOINSRECUR=y |
| shift |
| else |
| DOINSRECUR=n |
| fi |
| |
| if [[ ${INSDESTTREE#${D}} != "${INSDESTTREE}" ]]; then |
| vecho "-------------------------------------------------------" 1>&2 |
| vecho "You should not use \${D} with helpers." 1>&2 |
| vecho " --> ${INSDESTTREE}" 1>&2 |
| vecho "-------------------------------------------------------" 1>&2 |
| exit 1 |
| fi |
| |
| [[ ! -d ${D}${INSDESTTREE} ]] && dodir "${INSDESTTREE}" |
| |
| _doins() { |
| local mysrc="$1" mydir="$2" cleanup="" rval |
| |
| if [ -L "$mysrc" ] ; then |
| cp "$mysrc" "${T}" |
| mysrc="${T}/${mysrc##*/}" |
| cleanup=${mysrc} |
| fi |
| |
| install ${INSOPTIONS} "${mysrc}" "${D}${INSDESTTREE}/${mydir}" |
| rval=$? |
| [[ -n ${cleanup} ]] && rm -f "${cleanup}" |
| return $rval |
| } |
| |
| _xdoins() { |
| while read -d $'\0' x ; do |
| _doins "$x" "${x%/*}" |
| done |
| } |
| |
| success=0 |
| |
| for x in "$@" ; do |
| if [ -d "$x" ] ; then |
| if [ "${DOINSRECUR}" == "n" ] ; then |
| continue |
| fi |
| |
| while [ "$x" != "${x%/}" ] ; do |
| x=${x%/} |
| done |
| if [ "$x" = "${x%/*}" ] ; then |
| pushd "$PWD" >/dev/null |
| else |
| pushd "${x%/*}" >/dev/null |
| fi |
| find "${x##*/}" -type d -exec dodir "${INSDESTTREE}/{}" \; |
| find "${x##*/}" \( -type f -or -type l \) -print0 | _xdoins |
| popd >/dev/null |
| ((++success)) |
| else |
| _doins "${x}" && ((++success)) |
| fi |
| done |
| |
| [ $success -gt 0 ] && exit 0 || exit 1 |