#!@SHELL@ # This script first starts faked (the daemon), and then it will run # the requested program with fake root privileges. usage () { cat - >&2 <&2 "fakeroot: $i" done } fatal () { stderr "$@" exit 1 } # strip /bin/fakeroot to find install prefix if [ -n "$STAGING_DIR_HOST" ]; then USEABSLIBPATH=1 FAKEROOT_LIB=${STAGING_DIR_HOST}/lib/lib@fakeroot_transformed@@DLSUFFIX@ FAKED=${STAGING_DIR_HOST}/bin/faked PATHS= else FAKEROOT_PREFIX=@prefix@ FAKEROOT_BINDIR=@bindir@ USEABSLIBPATH=@LDPRELOADABS@ FAKEROOT_LIB=lib@fakeroot_transformed@@DLSUFFIX@ PATHS=@libdir@:${FAKEROOT_PREFIX}/lib64/libfakeroot:${FAKEROOT_PREFIX}/lib32/libfakeroot FAKED=${FAKEROOT_BINDIR}/@faked_transformed@ fi FAKED_MODE="unknown-is-root" export FAKED_MODE libfound=no GETOPTTEST=`getopt -T` if test "$?" -eq 4; then # GNU getopt FAKE_TEMP=`getopt -l lib: -l faked: -l unknown-is-real -l fd-base: -l version -l help -- +l:f:i:s:ub:vh "$@"` else FAKE_TEMP=`getopt l:f:i:s:ub:vh "$@"` fi if test "$?" -ne 0; then usage fi eval set -- "$FAKE_TEMP" FAKEDOPTS="" PIPEIN="" WAITINTRAP=0 while test "X$1" != "X--"; do case "$1" in -l|--lib) shift FAKEROOT_LIB=`eval echo "$1"` PATHS= ;; -f|--faked) shift FAKED="$1" ;; -i) shift if test -f "$1"; then FAKEDOPTS=$FAKEDOPTS" --load" PIPEIN="<$1" else stderr "database file \`$1' does not exist." fi ;; -s) shift FAKEDOPTS=$FAKEDOPTS" --save-file $1" [ -p $1 ] || WAITINTRAP=1 ;; -u|--unknown-is-real) FAKEDOPTS=$FAKEDOPTS" --unknown-is-real" FAKED_MODE="unknown-is-real" ;; -b|--fd-base) shift FAKEROOT_FD_BASE="$1" ;; -v|--version) echo "fakeroot version @VERSION@" exit 0 ;; -h|--help) usage ;; esac shift done shift #get rid of the '--' # make sure the preload is available ABSLIB="" if [ -n "$PATHS" ] then for dir in `echo $PATHS | sed 's/:/ /g'` do if test -r "$dir/$FAKEROOT_LIB" then libfound=yes ABSLIB="$dir/$FAKEROOT_LIB" fi done else if test -r "$FAKEROOT_LIB" then libfound=yes ABSLIB="$FAKEROOT_LIB" fi fi if test $libfound = no then fatal "preload library \`$FAKEROOT_LIB' not found, aborting." fi if test -n "$FAKEROOTKEY" then fatal "FAKEROOTKEY set to $FAKEROOTKEY" \ "nested operation not yet supported" fi unset FAKEROOTKEY KEY_PID=`eval $FAKED $FAKEDOPTS $PIPEIN` FAKEROOTKEY=`echo $KEY_PID|cut -d: -f1` PID=`echo $KEY_PID|cut -d: -f2` if [ "$WAITINTRAP" -eq 0 ]; then trap "kill -s @signal@ $PID" EXIT INT else @MACOSX_FALSE@trap 'FAKEROOTKEY=$FAKEROOTKEY @LDLIBPATHVAR@="$PATHS" @LDPRELOADVAR@="$FAKEROOT_LIB" /bin/ls -l / >/dev/null 2>&1; while kill -s @signal@ $PID 2>/dev/null; do sleep 0.1; done' EXIT INT @MACOSX_TRUE@trap 'FAKEROOTKEY=$FAKEROOTKEY @LDPRELOADVAR@="$FAKEROOT_LIB" /bin/ls -l / >/dev/null 2>&1; while kill -s @signal@ $PID 2>/dev/null; do sleep 0.1; done' EXIT INT fi if test -z "$FAKEROOTKEY" || test -z "$PID"; then fatal "error while starting the \`faked' daemon." fi if test $USEABSLIBPATH -ne 0 ; then FAKEROOT_LIB=$ABSLIB fi # Keep other library paths if test -n "$@LDLIBPATHVAR@"; then PATHS="$PATHS:$@LDLIBPATHVAR@" fi # ...and preloaded libs if test -n "$@LDPRELOADVAR@"; then FAKEROOT_LIB="$FAKEROOT_LIB:$@LDPRELOADVAR@" fi export FAKEROOT_FD_BASE if test -z "$*"; then @MACOSX_FALSE@FAKEROOTKEY=$FAKEROOTKEY @LDLIBPATHVAR@="$PATHS" @LDEXTRAVAR@ @LDPRELOADVAR@="$FAKEROOT_LIB" ${SHELL:-/bin/sh} @MACOSX_TRUE@FAKEROOTKEY=$FAKEROOTKEY @LDEXTRAVAR@ @LDPRELOADVAR@="$FAKEROOT_LIB" ${SHELL:-/bin/sh} RESULT=$? else @MACOSX_FALSE@FAKEROOTKEY=$FAKEROOTKEY @LDLIBPATHVAR@="$PATHS" @LDEXTRAVAR@ @LDPRELOADVAR@="$FAKEROOT_LIB" "$@" @MACOSX_TRUE@FAKEROOTKEY=$FAKEROOTKEY @LDEXTRAVAR@ @LDPRELOADVAR@="$FAKEROOT_LIB" "$@" RESULT=$? fi exit $RESULT # Local Variables: # mode: shell-script # End: