pkgsrc/emulators/compat_netbsd/INSTALL.ELF
2013-02-17 10:34:31 +00:00

138 lines
3.1 KiB
Text

# $NetBSD: INSTALL.ELF,v 1.2 2013/02/17 10:34:31 spz Exp $
# Generate a +ROOT_ACTIONS script that runs certain actions that require
# superuser privileges.
#
case "${STAGE},$1" in
UNPACK,|UNPACK,+ROOT_ACTIONS)
${CAT} > ./+ROOT_ACTIONS << 'EOF'
#!@SH@
#
# +ROOT_ACTIONS - run actions requiring superuser privileges
#
# Usage: ./+ROOT_ACTIONS ADD|REMOVE [metadatadir]
#
# This script runs certain actions that require superuser privileges.
# If such privileges are not available, then simply output a message
# asking the user to run this script with the appropriate elevated
# privileges.
#
# Lines starting with "# SYMLINK: " are data read by this script that
# name the source paths and corresponding symlink that is managed by
# this script. If the symlink path is relative, then it is taken to be
# relative to ${PKG_PREFIX}. The source path is always unchanged.
#
# # SYMLINK: /dev/rcd0a ${EMULSUBDIR}/dev/cdrom
#
CAT="@CAT@"
CHMOD="@CHMOD@"
ECHO="@ECHO@"
ID="@ID@"
LN="@LN@"
PWD_CMD="@PWD_CMD@"
RM="@RM@"
SED="@SED@"
TEST="@TEST@"
SELF=$0
ACTION=$1
CURDIR=`${PWD_CMD}`
PKG_METADATA_DIR="${2-${CURDIR}}"
: ${PKGNAME=${PKG_METADATA_DIR##*/}}
: ${PKG_PREFIX=@PREFIX@}
ROOT_ACTIONS_COOKIE="./+ROOT_ACTIONS_done"
EUID=`${ID} -u`
exitcode=0
case $ACTION,$EUID in
ADD,0)
${ECHO} "" > ${ROOT_ACTIONS_COOKIE}
${CHMOD} g+w ${ROOT_ACTIONS_COOKIE}
${SED} -n "/^\# SYMLINK: /{s/^\# SYMLINK: //;p;}" ${SELF} |
while read src dst; do
case $src in
"") continue ;;
[!/]*) src="${PKG_PREFIX}/$src" ;;
esac
case $dst in
"") continue ;;
[!/]*) dst="${PKG_PREFIX}/$dst" ;;
esac
if ${TEST} ! -f "$dst"; then
${ECHO} "${PKGNAME}: linking $dst -> $src"
${LN} -fs "$src" "$dst"
else
${ECHO} "${PKGNAME}: $dst already exists"
fi
done
;;
REMOVE,0)
${SED} -n "/^\# SYMLINK: /{s/^\# SYMLINK: //;p;}" ${SELF} |
while read src dst; do
case $src in
"") continue ;;
esac
case $dst in
"") continue ;;
[!/]*) dst="${PKG_PREFIX}/$dst" ;;
esac
if ${TEST} -h "$dst"; then
${ECHO} "${PKGNAME}: removing $dst"
${RM} -f "$dst"
fi
done
${RM} -f ${ROOT_ACTIONS_COOKIE}
;;
ADD,*)
if ${TEST} ! -f ${ROOT_ACTIONS_COOKIE}; then
${CAT} << EOM
==============================================================================
Please run the following command with superuser privileges to complete
the installation of ${PKGNAME}:
cd ${PKG_METADATA_DIR} && ${SELF} ADD
==============================================================================
EOM
fi
;;
REMOVE,*)
if ${TEST} -f ${ROOT_ACTIONS_COOKIE}; then
${CAT} << EOM
==============================================================================
Please run the following command with superuser privileges to begin the
removal of ${PKGNAME}:
cd ${PKG_METADATA_DIR} && ${SELF} REMOVE
Then, please run pkg_delete(1) again to complete the removal of this
package.
==============================================================================
EOM
exitcode=1
fi
;;
esac
exit $exitcode
EOF
${SED} -n "/^\# SYMLINK: /p" ${SELF} >> ./+ROOT_ACTIONS
${CHMOD} +x ./+ROOT_ACTIONS
;;
esac
case "${STAGE}" in
POST-INSTALL)
${TEST} ! -x ./+ROOT_ACTIONS ||
./+ROOT_ACTIONS ADD ${PKG_METADATA_DIR}
;;
esac