--- /usr/lib/portage/bin/ebuild.sh.orig 2006-09-01 14:33:55.000000000 +0200 +++ /usr/lib/portage/bin/ebuild.sh 2006-09-01 14:41:05.000000000 +0200 @@ -422,6 +422,102 @@ chmod -Rf a+rX,u+w,g-w,o-w . } +etraceerror() { + dump_trace 3 1>&2 + eerror ${@} +} + +doexe() { + local x mysrc + + [[ -z "$*" ]] && etraceerror "doexe: No file specified" + + if [[ ! -d "${D}${EXEDESTTREE}" ]] ; then + install -d "${D}${EXEDESTTREE}" || etraceerror "doexe: Failed to create dir '${D}${EXEDESTTREE}'" + fi + + for x in "$@" ; do + if [[ -L "${x}" ]] ; then + mysrc="${T}"/$(/usr/bin/basename "${x}") + rm -rf "${mysrc}" && cp "${x}" "${T}" || etraceerror "doexe: Failed to copy ${x} to ${T}" + elif [[ -d "${x}" ]] ; then + vecho "doexe: Warning, skipping directory ${x}" + continue + else + if [[ -e "${x}" ]] ; then + mysrc="${x}" + else + etraceerror "doexe: '${x}' does not exist" + fi + fi + + install ${EXEOPTIONS} "${mysrc}" "${D}${EXEDESTTREE}" || etraceerror "doexe: Failed to install '${mysrc}'" + done +} + +dobin() { + local x + + [[ -z "$*" ]] && etraceerror "dobin: No file specified" + + if [[ ! -d "${D}${DESTTREE}/bin" ]] ; then + install -d "${D}${DESTTREE}/bin" || etraceerror "dobin: Failed to create dir '${D}${DESTTREE}/bin'" + fi + + for x in "$@" ; do + if [[ -e "${x}" ]] ; then + install -m0755 -o "${PORTAGE_INST_UID:-0}" -g "${PORTAGE_INST_GID:-0}" "${x}" "${D}${DESTTREE}/bin" || etraceerror "dobin: Failed to install '${x}'" + else + etraceerror "dobin: '${x}' does not exist" + fi + done +} + +dosbin() { + local x + + [[ -z "$*" ]] && etraceerror "dosbin: No file specified" + + if [[ ! -d "${D}${DESTTREE}/sbin" ]] ; then + install -d "${D}${DESTTREE}/sbin" || etraceerror "dosbin: Failed to create dir '${D}${DESTTREE}/sbin'" + fi + + for x in "$@" ; do + if [[ -e "${x}" ]] ; then + install -m0755 -o "${PORTAGE_INST_UID:-0}" -g "${PORTAGE_INST_GID:-0}" "${x}" "${D}${DESTTREE}/sbin" || etraceerror "dosbin: Failed to install '${x}'" + else + etraceerror "dosbin: '${x}' does not exist" + fi + done +} + +newbin() { + [[ -z "${T}" ]] && etraceerror "newbin: \${T} is blank" + [[ -z "${1}" || -z "${2}" ]] && etraceerror "newbin: Need two arguments, old file and new file" + [[ $# -gt 2 ]] && etraceerror "newbin: Too many arguments" + [[ -e "${1}" ]] || etraceerror "newbin: '${1}' does not exist" + + rm -rf "${T}/${2}" && cp -f "${1}" "${T}/${2}" && dobin "${T}/${2}" || etraceerror "newbin: Failed to install '${1}'" +} + +newsbin() { + [[ -z "${T}" ]] && etraceerror "newsbin: \${T} is blank" + [[ -z "${1}" || -z "${2}" ]] && etraceerror "newsbin: Need two arguments, old file and new file" + [[ $# -gt 2 ]] && etraceerror "newsbin: Too many arguments" + [[ -e "${1}" ]] || etraceerror "newsbin: '${1}' does not exist" + + rm -rf "${T}/${2}" && cp -f "${1}" "${T}/${2}" && dosbin "${T}/${2}" || etraceerror "newsbin: Failed to install '${1}'" +} + +newexe() { + [[ -z "${T}" ]] && etraceerror "newexe: \${T} is blank" + [[ -z "${1}" || -z "${2}" ]] && etraceerror "newexe: Need two arguments, old file and new file" + [[ $# -gt 2 ]] && etraceerror "newexe: Too many arguments" + [[ -e "${1}" ]] || etraceerror "newexe: '${1}' does not exist" + + rm -rf "${T}/${2}" && cp -f "${1}" "${T}/${2}" && doexe "${T}/${2}" || etraceerror "newexe: Failed to install '${1}'" +} + strip_duplicate_slashes() { if [[ -n $1 ]] ; then local removed=$1