summaryrefslogtreecommitdiff
path: root/emulators/compat_netbsd/INSTALL.ELF
blob: 69d6a7bde2dc0539438d94d95f3bb042248b0368 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
# $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