summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--astro/setiathome/Makefile5
-rw-r--r--astro/setiathome/files/setiathome.1177
-rw-r--r--astro/setiathome/files/setiathome.sh92
-rw-r--r--astro/setiathome/pkg-install67
4 files changed, 252 insertions, 89 deletions
diff --git a/astro/setiathome/Makefile b/astro/setiathome/Makefile
index 980cfa4d7288..8a2e51338ff8 100644
--- a/astro/setiathome/Makefile
+++ b/astro/setiathome/Makefile
@@ -3,7 +3,7 @@
# Date created: 22 Apr 1999
# Whom: stb@freebsd.org
#
-# $Id: Makefile,v 1.8 1999/05/17 08:18:01 stb Exp $
+# $Id: Makefile,v 1.9 1999/05/17 10:58:07 stb Exp $
#
PKGNAME= setiathome-1.1
@@ -20,6 +20,8 @@ EXTRACT_CMD= tar
EXTRACT_BEFORE_ARGS= -xf
EXTRACT_AFTER_ARGS=
+MAN1= setiathome.1
+
.include <bsd.port.pre.mk>
.if ${OSVERSION} >= 400000
@@ -69,6 +71,7 @@ pre-fetch:
do-install:
${INSTALL_PROGRAM} ${WRKDIR}/${WRKSRC}/setiathome ${PREFIX}/bin
+ ${INSTALL_SCRIPT} ${FILESDIR}/setiathome.sh ${PREFIX}/etc/rc.d
${INSTALL_MAN} ${FILESDIR}/setiathome.1 ${MAN1PREFIX}/man/man1
post-install:
diff --git a/astro/setiathome/files/setiathome.1 b/astro/setiathome/files/setiathome.1
index ccf317d51f0b..8ec8f76d1e44 100644
--- a/astro/setiathome/files/setiathome.1
+++ b/astro/setiathome/files/setiathome.1
@@ -1,5 +1,6 @@
.\" Copyright status unkown
-.Dd April 19, 1999
+.\" $Id$
+.Dd May 19, 1999
.Dt setiathome 1 LOCAL
.Os FreeBSD
.Sh NAME
@@ -10,7 +11,9 @@
.Op Ar options
.Sh DESCRIPTION
.Nm
-is the UNIX version of the
+is the
+.Ux
+version of the
.Tn SETI@home
client. It downloads radio telescope data from a network server, analyzes
the data looking for signals of extraterrestrial origin, and uploads results
@@ -33,32 +36,72 @@ if you like.
can be freely aborted and restarted. It saves its state in files,
and will pick up where it left off.
.Pp
+If you want to run multiple instances of setiathome
+(on a multiprocessor machine, or on multiple machines
+that share a filesystem) each one must be run
+in a different directory.
+.Pp
+.Nm
+requires about 0.5\ MBytes of disk space per working directory, and about
+12\ MBytes of memory per instance. If you have ample physical memory, it's work load
+should be almost undetectable. Additionally,
.Nm
-requires about 0.5\ MBytes of disk space in it's working directory, and about
-12\ MBytes of memory. If you have ample physical memory, it's work load
-should be almost undetectable.
+requires a permanent or
+.Dq dial on demand
+Internet connection to upload results to and download new work units from the
+.Tn SETI@home
+server at any time.
.Ss Starting setiathome
-This port to FreeBSD includes a start-up script (usually found in
-.Pa /usr/local/etc/rc.d/setiathome.sh )
-that starts
+This
+.Fx
+port includes a start-up script that starts
+.Nm
+at system start-up.
+.Ss Configuration File
+The optional configuration file
+.Pa /usr/local/etc/setiathome.conf
+can contain one or more of the following variable assignments to override
+their default values:
+.Bl -tag -width seti_wrkdir
+.It Pa seti_wrkdir=/var/db/setiathome
+The working directory where
.Nm
-at system start-up. You can also use this script to set up a working
-directory
-.Pa ( /var/db/setiathome ) ,
+will store it's temporary files.
+.It Pa seti_user=nobody
+The user to run
+.Nm
+as.
+.It Pa seti_nice=1
+The
+.Xr nice 1
+value to run
+.Nm
+as.
+.It Pa seti_maxprocs= Ns Va Number of CPUs
+The number of
+.Nm
+processes to run concurrently. Defaults to the number of CPUs installed.
+Running more than one instance per CPU is not useful, as
+.Nm
+is almost completely CPU-bound.
+.El
+.Pp
+If you change values in the configuration file, you need to stop and start
+.Nm Ns ,
+and possibly reconfigure the working directory for the changes to take
+effect. Run
+.Dl /usr/local/etc/rc.d/setiathome.sh stop
+.Dl /usr/local/etc/rc.d/setiathome.sh register
+.Dl /usr/local/etc/rc.d/setiathome.sh start
+to do that.
+.Ss Setting up setiathome
+You can use the start-up script to set up a working directory
and register with or log in to
.Tn SETI@home
by calling it with the argument
.Ar register .
-.Ss Setting up setiathome manually
-If you'd like to run
-.Nm
-on a SMP system, and therefor would like to run multiple
-.Nm
-processes at once, or would like it to run under a different user ID than
-.Sq nobody ,
-you have to set up one or more suitable working directories yourself.
-.Pp
-For each
+If you'd like to configure and run it manually, you should first disable the
+start-up script. Then, for each
.Nm
instance you'd like to run, create a directory, make it owned by the user
you'd like to run
@@ -78,24 +121,31 @@ to
.Ed
to the user's crontab.
.Sh OPTIONS
-.Bl -tag -width indent
-.It Fl login
-Login or create new account.
+.Bl -tag -width countries
.It Fl countries
-Show list of country codes.
-.It Fl version
-Show software version
-.It Fl nice Ar N
-Set "nice" priority to
-.Ar N
-(default 1);
+Show list of country codes (a numeric country code must be entered during
+registration).
.It Fl email
-Send email (to login email address) on errors. Useful if you run in
-background directed to
+Send email (to the email address registered with
+.Tn SETI@home )
+on errors. Useful if you run
+.Nm
+in the background with the output directed to
.Pa /dev/null .
-.It Fl proxy Ar host:port
+.It Fl login
+Log in to or register with
+.Tn SETI@home .
+.It Fl nice Ar N
+Set
+.Xr nice 1
+priority to
+.Ar N
+(default 1).
+.It Fl proxy Va hostname Ns Xo
+.Op Li : Ns Va port
+.Xc
Use the HTTP proxy server
-.Ar host
+.Ar hostname
at port
.Ar port
to download work units and upload results. Alternatively, you can set the
@@ -105,25 +155,58 @@ environment variable
Process the current work unit and exit before uploading the result.
.It Fl stop_after_xfer
Process the current work unit and upload the result, then exit.
+.It Fl version
+Show software version.
+.El
+.Sh ENVIRONMENT
+.Bl -tag -width HTTP_PROXY
+.It Ev HTTP_PROXY
+The address (in the form
+.Do Va hostname Ns
+.Op Li : Ns Va port
+.Dc )
+of a HTTP proxy server to download work units and upload results via.
.El
-.Pp
.Sh FILES
-The program generates several files with
-.Pa .txt
-extension in the directory from which it's run. These should not be
-modified.
.Pp
-If you want to run multiple instances of setiathome
-(on a multiprocessor machine, or on multiple machines
-that share a filesystem) each one must be run
-in a different directory.
+.Bl -tag -width /var/db -compact
+.It Pa /var/db/setiathome/
+Primary working directory.
+.It Pa /var/db/setiathome/user_info.txt
+Registration data.
+.It Pa /var/db/setiathome/ Ns Va n Ns /
+Working directories for additional process
+.Va n
+(when running more than one instance).
+.It Pa /var/db/setiathome/ Ns Xo
+.Op Ns Va n Ns Li / Ns
+.Pa lock.txt
+.Xc
+Lock file to prevent multiple instances to work on the same data.
+.It Pa /var/db/setiathome/ Ns Xo
+.Op Ns Va n Ns Li / Ns
+.Pa *.txt
+.Xc
+Working files.
+.It Pa /usr/local/etc/rc.d/setiathome.sh
+Startup script.
+.Sh BUGS
+As of version 1.1, the proxy setting ignores the
+.Va port
+argument in both the option and the environment variable.
.Pp
-setiathome uses a lock file
-.Pa ( lock.txt )
-to prevent multiple instances from running in the same directory.
+There is currently no easy way to run
+.Nm
+continuosly if you don't have a permanent or
+.Dq dial on demand
+Internet connection.
.Sh AUTHORS
.Tn SETI@home
was developed by David Anderson, Jeff Cobb, Charles Congdon, Charlie Fenton,
David Gedye, Kyle Granger, Eric Korpela, Matt Lebofsky, Peter Leiser, Brad
Silen, Woody Sullivan, and Dan Werthimer.
.Pp
+.An Stefan Bethke <stb@freebsd.org>
+amended the original manual page for this
+.Fx
+port.
diff --git a/astro/setiathome/files/setiathome.sh b/astro/setiathome/files/setiathome.sh
new file mode 100644
index 000000000000..939cc9ad3310
--- /dev/null
+++ b/astro/setiathome/files/setiathome.sh
@@ -0,0 +1,92 @@
+#!/bin/sh
+
+#
+# Start or stop setiathome, or set up working directory and register
+#
+
+# override these variables in ${PREFIX}/etc/setiathome.conf
+seti_wrkdir=/var/db/setiathome # primary working directory
+seti_user=nobody # user id to run as
+seti_nice=1 # nice level to run at
+seti_maxprocs=`sysctl -n hw.ncpu` # max. number of processes to start
+
+PREFIX=/`expr $0 : '/\(.*\)/etc/rc.d/setiathome.sh'`
+if [ "x${PREFIX}" = "x/" ]; then
+ printf "\n`basename $0`: Cannot determine PREFIX.\nPlease use the complete pathname." >&2
+ exit 64
+fi
+
+if [ -f ${PREFIX}/etc/setiathome.conf ]; then
+ . ${PREFIX}/etc/setiathome.conf
+fi
+
+i=${seti_maxprocs}
+seti_wrksuff="."
+while [ ${i} -gt 1 ]; do
+ seti_wrksuff="${seti_wrksuff} ${i}"
+ i=`expr ${i} - 1`
+done
+
+case $1 in
+ start)
+ for i in ${seti_wrksuff}; do
+ if [ ! -d ${seti_wrkdir}/${i} ]; then
+ logger -sp daemon.err -t setiathome \
+ "unable to start: ${seti_wrkdir}/${i} is missing."
+ exit 72
+ fi
+ if [ ! -f ${seti_wrkdir}/${i}/user_info.txt ]; then
+ logger -sp daemon.err -t setiathome \
+ "unable to start: please log in to SETI@home first. (${seti_wrkdir}/${i}/user_info.txt is missing.)"
+ exit 72
+ fi
+ done
+ for i in ${seti_wrksuff}; do
+ su -m ${seti_user} -c \
+ "(cd ${seti_wrkdir}/${i} && exec ${PREFIX}/bin/setiathome -email -nice ${seti_nice} >/dev/null &)"
+ echo -n " SETI@home"
+ done
+ ;;
+
+ stop)
+ killall setiathome
+ ;;
+
+ register)
+ # Create or update primary working directory (in case the uid changed)
+ mkdir -p ${seti_wrkdir}
+ chown ${seti_user} ${seti_wrkdir}
+ chmod u=Xrw,g=Xr,o=Xr ${seti_wrkdir}
+ if [ -f ${seti_wrkdir}/user_info.txt ]; then
+ echo " It seems you have already registered with SETI@home. Would you like"
+ echo -n " to repeat the procedure? [Y/n] "
+ read a
+ if [ "X${a}" = "Xn" -o "X${a}" = "XN" ]; then
+ seti_dontlogin=yes
+ fi
+ fi
+ # No need to register if we've already done so
+ if [ "X${seti_dontlogin}" != "Xyes" ]; then
+ su -m ${seti_user} -c "cd ${seti_wrkdir} && ${PREFIX}/bin/setiathome -login"
+ fi
+
+ if [ ${seti_maxprocs} -gt 1 ]; then
+ echo " Updating additional working directories."
+ i=${seti_maxprocs}
+ while [ ${i} -gt 1 ]; do
+ mkdir -p ${seti_wrkdir}/${i}
+ chown ${seti_user} ${seti_wrkdir}/${i}
+ chmod 755 ${seti_wrkdir}/${i}
+ # Assume the user want's all processes to run with the same registration
+ rm -f ${seti_wrkdir}/${i}/user_info.txt
+ ln -sf ../user_info.txt ${seti_wrkdir}/${i}
+ i=`expr ${i} - 1`
+ done
+ fi
+ ;;
+
+ *)
+ echo "usage: `basename $0` {start|stop|register}" >&2
+ exit 64
+ ;;
+esac
diff --git a/astro/setiathome/pkg-install b/astro/setiathome/pkg-install
index 8d5edd96ebc1..bcf6e0053a7b 100644
--- a/astro/setiathome/pkg-install
+++ b/astro/setiathome/pkg-install
@@ -6,58 +6,42 @@
DBDIR=/var/db/setiathome
RCD=${PKG_PREFIX}/etc/rc.d/setiathome.sh
-USER=nobody
+seti_wrkdir=/var/db/setiathome # working directory
+seti_user=nobody # user id to run under
+seti_nice=1 # nice level to run at
+seti_maxprocs=`sysctl -n hw.ncpu` # max. number of processes to start
+
+if [ -f ${PKG_PREFIX}/etc/setiathome.conf ]; then
+ . ${PKG_PREFIX}/etc/setiathome.conf
+fi
case $2 in
POST-INSTALL)
- rm -f ${RCD}
- cat <<EOF >${RCD}
-#!/bin/sh
-
-PREFIX=${PKG_PREFIX}
-DBDIR=${DBDIR}
-USER=${USER}
-
-case \$1 in
- start)
- if [ ! -d \${DBDIR} ]; then
- logger -sp user.err -t setiathome "unable to start: \${DBDIR} is missing."
- exit 72
- fi
- if [ ! -f \${DBDIR}/user_info.txt ]; then
- logger -sp user.err -t setiathome "unable to start: please log in to SETI@home first."
- exit 72
- fi
- su -m \${USER} -c \
- "(cd \${DBDIR} && exec \${PREFIX}/bin/setiathome -email >/dev/null &)"
- echo -n " SETI@home"
- ;;
- stop)
- killall setiathome
- ;;
- register)
- mkdir -p \${DBDIR}
- chown \${USER} \${DBDIR}
- chmod 755 \${DBDIR}
-
- su -m nobody -c "cd \${DBDIR} && \${PREFIX}/bin/setiathome -login"
- ;;
-esac
-EOF
- chmod +x ${RCD}
-
if [ -n "${PACKAGE_BUILDING}" ]; then
exit 0
fi
- echo "**** SETI@home requires a working directory for temporary files and"
+ echo "**** setihome requires a working directory for temporary files and"
echo " a brief registration process."
+ echo
echo " Would you like to set up a working directory in ${DBDIR},"
- echo " register with SETI@home, and let me arrange for SETI@home to be"
- echo -n " started automatically as user \`nobody' [Y/n]? "
+ if [ ${seti_maxprocs} -gt 1 ]; then
+ if [ `sysctl -n hw.ncpu` -eq ${seti_maxprocs} ]; then
+ echo " register with SETI@home, and let me arrange for ${seti_maxprocs} setiathome"
+ echo " processes (one for each of your `sysctl -n hw.ncpu` CPUs) to be started automatically"
+ echo -n " as user \`${seti_user}' [Y/n]? "
+ else
+ echo " register with SETI@home, and let me arrange for ${seti_maxprocs} setiathome"
+ echo " processes (as configured) to be started automatically"
+ echo -n " as user \`${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 [ "$a" = "N" -o "$a" = "n" ]; then
+ if [ "X$a" = "XN" -o "X$a" = "Xn" ]; then
echo ""
echo "Please set up the working directory yourself. You can use"
echo "${RCD} register"
@@ -80,3 +64,4 @@ EOF
;;
esac
+exit 0