summaryrefslogtreecommitdiff
path: root/astro/setiathome/pkg-install
blob: 151035f605265e88fdb66419b10a3b6f6349a59d (plain) (blame)
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
139
140
141
#!/bin/sh
#
# $FreeBSD$
#
# Set up the work area and run SETI@home to login or register.
#

[ $# != 2 ] && exit 1
[ -z "${PKG_PREFIX}" ] && exit 1
[ -n "${BATCH}" ] && exit 0

PKG_NAME=${1%%-[0-9._]*}
PKG_ACTION=$2

# override these variables in ${PREFIX}/etc/rc.setiathome.conf
seti_wrkdir=/var/db/${PKG_NAME}		# working directory
seti_user=nobody			# user id to run under
seti_maxprocs=$(sysctl -n hw.ncpu)	# max. number of processes to start

rcconf_dir=${PKG_PREFIX}/etc
rcconf_file=rc.${PKG_NAME}.conf
rcconf_path=${rcconf_dir}/${rcconf_file}

if [ -f ${rcconf_path} ]; then
	. ${rcconf_path}
fi

rc_dir=${PKG_PREFIX}/etc/rc.d
rc_file=${PKG_NAME}.sh
rc_path=${rc_dir}/${rc_file}

ncpu=$(sysctl -n hw.ncpu)

case "${PKG_ACTION}" in
POST-INSTALL)

echo "****  SETI@home requires a working directory for temporary files and a"
echo "      brief registration process."
echo
echo "      Would you like to set up a working directory in ${seti_wrkdir},"
	if [ ${seti_maxprocs} -gt 1 ]; then
echo "      register with SETI@home, and let me arrange for ${ncpu} setiathome"
		if [ ${ncpu} -eq ${seti_maxprocs} ]; then
echo "      processes (one for each of your ${ncpu} CPUs) to be started"
echo -n "      automatically as user \`${seti_user}'? [Y/n] "
		else
echo "      processes (as configured) to be started automatically as user"
echo -n "      \`${seti_user}'? [Y/n] "
		fi
	else
echo "      register with SETI@home, and let me arrange for setiathome to be"
echo -n "      started automatically as user \`${seti_user}'? [Y/n] "
	fi
	read a
echo
	if [ "X$a" = "XN" -o "X$a" = "Xn" ]; then
echo "****  Please set up the working directory yourself.  You may use"
echo "            ${rc_path} register"
echo "      to do so. See setiathome(1) for details."
		exit 0
	fi
	${rc_path} register
	if [ ! -f ${seti_wrkdir}/user_info.sah ]; then
echo "unable to start setiathome: it seems registration or login failed."
echo "See setiathome(1) for details."
		exit 0
	fi
	${rc_path} start > /dev/null
echo
echo "****  Congratulations!  Your system now participates in the search for"
echo "      extra-terrestrial intelligence.  Be sure to visit the home page"
echo "      at http://setiathome.ssl.berkeley.edu/"
echo "      See setiathome(1) for further details."
	;;

DEINSTALL)
	if [ ! -d ${seti_wrkdir} ]; then
		exit 0
	fi

	${rc_path} stop > /dev/null

echo "****  SETI@home working directory and temporary files have to be"
echo "      removed to complete the deinstallation process.  Of course,"
echo "      you may prefer to keep them for futher researchs?  Would you"
echo "      like to remove it as well as all temporary files it may"
echo -n "      contains? [y/N] "
	read a
echo
	if [ "X$a" != "XY" -a "X$a" != "Xy" ]; then
echo "****  SETI@home working directory and temporary files left untouched."
		exit 0
	fi
	for i in ${seti_wrkdir}/.??* ${seti_wrkdir}/*; do
		case "${i}" in
		"${seti_wrkdir}/.??*"|"${seti_wrkdir}/*")
			continue
			;;
		*/.tkseti*|*.sah)
			[ -f ${i} ] || continue
			rm -f ${i}
			;;
		*)
			[ -d ${i} ] || continue
			for j in ${seti_wrkdir}/*; do
				case "${j}" in
				"${seti_wrkdir}/*")
					continue
					;;
				*/.tkseti*|*.sah)
					[ -f ${j} ] || continue
					rm -f ${j}
					;;
				esac
			done
			rmdir ${i}
			;;
		esac
	done
	rmdir ${seti_wrkdir}
	if [ -d ${seti_wrkdir} ]; then
echo "****  SETI@home working directory can't be removed since it contains"
echo "      non SETI@home files or directories.  You have to remove it"
echo "      manually.  You can use"
echo "            rm -rf ${seti_wrkdir}"
echo "      to do so, but think about it twince before."
	else
echo "****  SETI@home working directory and temporary files removed."
	fi
	;;

PRE-INSTALL|POST-DEINSTALL)
	;;

*)
echo "usage: $0 <PKG_NAME> {PRE-INSTALL|POST-INSTALL|DEINSTALL|POST-DEINSTALL}" >&2
	exit 1
	;;
esac

exit 0