044a2ff8cf
- only one master shell to monitor multiple setiathome instances - wait some time for setiathome server to come up between restarts - xsetiathome comes back - -graphics is now the default (so xsetiathome may be launched) - registration heuristic changed (see comments below) - take care, some variable names have changed (see comments below) - manual page reviewed The setiathome manual page refer to setiathome.conf while it is now named rc.setiathome.conf. also, the manual page has been completed (variables, start/stop scripts, etc.) - gracefull startup script option added Makefile PORTVERSION bumped PORTREVISION deleted FORBIDDEN deleted BROKEN bumped to 4.0 NO_XBIN deleted except for linux_base-6 wrapper added pkg-install registration heuristic changed (don't register if already registered, then automatically start setiathome in either case) pkg-list $FreeBSD$ added libexec/setiathome.bin added pkg-message FreeBSD 5.x a.out comment changed to FreeBSD 4.x comment files/rc.setiathome.conf seti_std_args defaulted to "-email -graphics" seti_proxy_args changed to seti_proxy_server seti_socks_server, seti_socks_user, seti_socks_passwd added seti_sleep changed to seti_sleep_time files/setiathome.1 /usr/local changed to %%PREFIX%% above and below changes described files/setiathome.sh same changes as files/rc.setiathome.conf don't start setiathome if already started su heuristic changed to call an external wrapper gracefull (aka apachectl :) option added using stop_after_send.txt PR: 50723,51759,52297,52709 Submitted by: cyrille.lefevre@laposte.net
162 lines
4.3 KiB
Bash
162 lines
4.3 KiB
Bash
#!/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=setiathome # 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)
|
|
if [ -f ${seti_wrkdir}/user_info.sah ]; then
|
|
echo "**** SETI@home already has a working directory for temporary files and"
|
|
echo " you seem to be already registered with SETI@home."
|
|
echo
|
|
echo -n " Would you like repeat the registration with SETI@home? [y/N] "
|
|
read ans
|
|
echo
|
|
if [ "X${ans}" = "XY" -o "X${ans}" = "Xy" ]; then
|
|
register=yes
|
|
else
|
|
register=no
|
|
fi
|
|
else
|
|
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 ans
|
|
echo
|
|
if [ "X${ans}" = "XN" -o "X${ans}" = "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
|
|
else
|
|
register=yes
|
|
fi
|
|
fi
|
|
if [ "${register}" = "yes" ]; then
|
|
${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
|
|
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
|
|
if pw usershow "${seti_user}" 2>/dev/null 1>&2; then
|
|
echo "To permanently delete SETI@home user, use 'pw userdel ${seti_user}'"
|
|
fi
|
|
;;
|
|
|
|
PRE-INSTALL|POST-DEINSTALL)
|
|
;;
|
|
|
|
*)
|
|
echo "usage: $0 <PKG_NAME> {PRE-INSTALL|POST-INSTALL|DEINSTALL|POST-DEINSTALL}" >&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
exit 0
|