Update Maintainer's Email

Add pkg-message
Add rc.setiathome.conf
Make messages go through syslog
PACKAGE_BUILDING replaced by BATCH
PKGMESSAGE and PKGDEINSTALL added

PR:		29943
Submitted by:	maintainer
This commit is contained in:
David W. Chapman Jr. 2001-08-24 13:39:27 +00:00
parent 0993f32e43
commit b663f63a5f
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=46786
6 changed files with 310 additions and 160 deletions

View File

@ -6,7 +6,7 @@
PORTNAME= setiathome PORTNAME= setiathome
PORTVERSION= 3.03 PORTVERSION= 3.03
PORTREVISION= 2 PORTREVISION= 3
CATEGORIES= astro CATEGORIES= astro
MASTER_SITES= ftp://ftp.cdrom.com/pub/setiathome/ \ MASTER_SITES= ftp://ftp.cdrom.com/pub/setiathome/ \
ftp://alien.ssl.berkeley.edu/pub/ \ ftp://alien.ssl.berkeley.edu/pub/ \
@ -15,15 +15,14 @@ MASTER_SITES= ftp://ftp.cdrom.com/pub/setiathome/ \
DISTNAME= ${PORTNAME}-${PORTVERSION}.${PORT_HOST} DISTNAME= ${PORTNAME}-${PORTVERSION}.${PORT_HOST}
EXTRACT_SUFX= .tar EXTRACT_SUFX= .tar
MAINTAINER= clefevre@redirect.to MAINTAINER= clefevre@citeweb.net
.include <bsd.port.pre.mk> .include <bsd.port.pre.mk>
#
# Global variables # Global variables
# #
.if !defined(PACKAGE_BUILDING) || empty(PACKAGE_BUILDING) .if !defined(BATCH)
IS_INTERACTIVE= yes IS_INTERACTIVE= yes
.endif .endif
@ -38,13 +37,17 @@ BROKEN= "currently supports only FreeBSD 2.2.6 and above"
EXTRACT_CMD= ${CAT} EXTRACT_CMD= ${CAT}
EXTRACT_BEFORE_ARGS= EXTRACT_BEFORE_ARGS=
STRIP= # aout is already stripped STRIP= # aout is already stripped
SCRIPTS_ENV+= PKG_PREFIX=${PREFIX} SCRIPTS_ENV+= PKG_PREFIX=${PREFIX}
SCRIPTS_ENV+= PACKAGE_BUILDING=${PACKAGE_BUILDING} PLIST_SUB= X11PORTS=${X11PORTS}
MAN1= ${PORTNAME}.1 MAN1= ${PORTNAME}.1
# MSG_FILE= ${PKGDIR}/pkg-message
PKGMESSAGE= ${WRKDIR}/pkg-message
PKGDEINSTALL= ${PKGINSTALL}
# Local variables # Local variables
# #
@ -55,11 +58,14 @@ PORT_OSREL= 2.2.8
PORT_OS= ${PORT_OSNAME}${PORT_OSREL} PORT_OS= ${PORT_OSNAME}${PORT_OSREL}
PORT_HOST= ${PORT_CPU}-${PORT_VENDOR}-${PORT_OS} PORT_HOST= ${PORT_CPU}-${PORT_VENDOR}-${PORT_OS}
SBINSUBDIR?= sbin SBIN_DIR= ${PREFIX}/sbin
RCDSUBDIR= etc/rc.d CONF_DIR= ${PREFIX}/etc
MANSUBDIR= man RC_DIR= ${PREFIX}/etc/rc.d
PROG= ${PORTNAME}
SCRIPT= ${PORTNAME}.sh SAMP_SUFX= .sample
BIN_FILE= setiathome
RC_FILES= setiathome
# xsetiathome is currently broken at 4.2. should work at 2.x, # xsetiathome is currently broken at 4.2. should work at 2.x,
# don't know between 3.0 and 4.2 ? so, be conservative... # don't know between 3.0 and 4.2 ? so, be conservative...
@ -68,60 +74,70 @@ SCRIPT= ${PORTNAME}.sh
# Floating point exception (core dumped) # Floating point exception (core dumped)
.if ${OSVERSION} < 300000 .if ${OSVERSION} < 300000
XBINSUBDIR= bin
XPROG+= x${PORTNAME}
MAN1+= x${PORTNAME}.1 MAN1+= x${PORTNAME}.1
XBIN_DIR= ${PREFIX}/bin
XBIN_FILE+= xsetiathome
X11PORTS=
.else
X11PORTS= "@comment "
.endif .endif
# #
# Post-configure
# #
post-configure: post-patch: patch-message
@${SED} -e 's.!!SUBDIR!!.${SBINSUBDIR}.g' ${FILESDIR}/${SCRIPT} > ${WRKSRC}/${SCRIPT}
patch-message:
@${SED} 's|%%PREFIX%%|${PREFIX}|g' ${MSG_FILE} > ${PKGMESSAGE}
#
# Install # Install
# #
do-install: install-daemon install-program install-script install-man do-install: install-daemon install-program install-man
install-daemon: install-daemon:
@${INSTALL_PROGRAM} ${WRKSRC}/${PROG} ${PREFIX}/${SBINSUBDIR} @${INSTALL_PROGRAM} ${WRKSRC}/${BIN_FILE} ${SBIN_DIR}
install-program: install-program:
.if defined(XPROG) .if defined(XPROG)
@${INSTALL_PROGRAM} ${WRKSRC}/${prog} ${PREFIX}/${XBINSUBDIR} @${INSTALL_PROGRAM} ${WRKSRC}/${XBIN_FILE} ${XBIN_DIR}
.endif .endif
install-script:
@${INSTALL_SCRIPT} ${WRKSRC}/${SCRIPT} ${PREFIX}/${RCDSUBDIR}
install-man: install-man:
.for mansect in 1 .for mansect in 1
.for man in ${MAN${mansect}} .for man in ${MAN${mansect}}
@${INSTALL_MAN} ${FILESDIR}/${man} \ @${INSTALL_MAN} ${FILESDIR}/${man} \
${MAN${mansect}PREFIX}/${MANSUBDIR}/man${mansect} ${MAN${mansect}PREFIX}/man/man${mansect}
.endfor .endfor
.endfor .endfor
#
# Post-install # Post-install
# #
post-install: update-plist configure-package post-install: install-startup-files configure-package display-message
update-plist: install-startup-files:
@${GREP} -q ${SBINSUBDIR}/${PROG} ${TMPPLIST} || \ .for file in ${RC_FILES}
${ECHO} ${SBINSUBDIR}/${PROG} >> ${TMPPLIST} .if exists(${FILESDIR}/rc.${file}.conf)
.if defined(XPROG) @${INSTALL_DATA} ${FILESDIR}/rc.${file}.conf \
@${GREP} -q ${XBINSUBDIR}/${XPROG} ${TMPPLIST} || \ ${CONF_DIR}/rc.${file}.conf${SAMP_SUFX}
${ECHO} ${XBINSUBDIR}/${XPROG} >> ${TMPPLIST} .if !exists(${CONF_DIR}/rc.${file}.conf)
@${INSTALL_DATA} ${FILESDIR}/rc.${file}.conf ${CONF_DIR}
.endif .endif
.endif
.if exists(${FILESDIR}/${file}.sh)
@${INSTALL_SCRIPT} ${FILESDIR}/${file}.sh ${RC_DIR}
.endif
.endfor
configure-package: configure-package:
.if defined(IS_INTERACTIVE) .if !defined(BATCH)
@${SETENV} ${SCRIPTS_ENV} ${SH} ${PKGINSTALL} ${PKGNAME} POST-INSTALL @${SETENV} ${SCRIPTS_ENV} ${SH} ${PKGINSTALL} ${PKGNAME} POST-INSTALL
.endif .endif
display-message:
.if !defined(BATCH)
@${CAT} ${PKGMESSAGE}
.endif
.include <bsd.port.post.mk> .include <bsd.port.post.mk>

View File

@ -0,0 +1,12 @@
# $FreeBSD$
#
# SETI@home startup configuration file.
#
# seti_wrkdir=/var/db/setiathome # primary working directory
# seti_std_args=-email # command arguments for standard mode
# seti_reg_args=-login # command arguments for register mode
# seti_proxy_args= # proxy arguments
# seti_user=nobody # user id to run as
# seti_nice=15 # nice level to run at
# seti_maxprocs=$(sysctl -n hw.ncpu) # max. number of processes to start

View File

@ -2,105 +2,145 @@
# #
# $FreeBSD$ # $FreeBSD$
# #
# Start or stop setiathome, or set up working directory and register # Start or stop SETI@home, or set up working directory and register.
# #
# override these variables in ${PREFIX}/etc/setiathome.conf rc_file=${0##*/}
rc_arg=$1
# override these variables in ${PREFIX}/etc/rc.setiathome.conf
seti_wrkdir=/var/db/setiathome # primary working directory seti_wrkdir=/var/db/setiathome # primary working directory
seti_bindir=!!SUBDIR!! # exec directory relative to ${PREFIX}
seti_command=setiathome # command name
seti_std_args=-email # command arguments for standard mode seti_std_args=-email # command arguments for standard mode
seti_reg_args=-login # command arguments for register mode seti_reg_args=-login # command arguments for register mode
seti_proxy_args= # proxy arguments seti_proxy_args= # proxy arguments
seti_user=nobody # user id to run as seti_user=nobody # user id to run as
seti_nice=1 # nice level to run at seti_nice=15 # nice level to run at
seti_maxprocs=`sysctl -n hw.ncpu` # max. number of processes to start seti_maxprocs=$(sysctl -n hw.ncpu) # max. number of processes to start
seti_syslog=daemon.err # syslog facility.level
if ! PREFIX=$(expr $0 : "\(/.*\)/etc/rc\.d/${0##*/}\$"); then if ! PREFIX=$(expr $0 : "\(/.*\)/etc/rc\.d/${rc_file}\$"); then
echo "${0##*/}: Cannot determine PREFIX." >&2 echo "${rc_file}: Cannot determine PREFIX." >&2
echo "Please use the complete pathname." >&2 echo "Please use the complete pathname." >&2
exit 64 exit 64
fi fi
if [ -f ${PREFIX}/etc/setiathome.conf ]; then rcconf_dir=${PREFIX}/etc
. ${PREFIX}/etc/setiathome.conf rcconf_file=rc.${rc_file%.sh}.conf
rcconf_path=${rcconf_dir}/${rcconf_file}
if [ -f ${rcconf_path} ]; then
. ${rcconf_path}
fi fi
program_dir=${PREFIX}/sbin
program_file=setiathome
program_path=${program_dir}/${program_file}
syslog_facility=daemon.err
i=${seti_maxprocs} i=${seti_maxprocs}
seti_wrksuff="." seti_wrksuff="."
while [ ${i} -gt 1 ]; do while [ ${i} -gt 1 ]; do
seti_wrksuff="${seti_wrksuff} ${i}" seti_wrksuff="${seti_wrksuff} ${i}"
i=`expr ${i} - 1` i=$((${i} - 1))
done done
case $1 in case "$rc_arg" in
start) start)
for i in ${seti_wrksuff}; do if [ ! -x ${program_path} ]; then
if [ ! -d ${seti_wrkdir}/${i} ]; then logger -sp ${syslog_facility} -t ${program_file} \
logger -sp ${seti_syslog} -t ${seti_command} \ "unable to start: ${program_path} is missing."
"unable to start: ${seti_wrkdir}/${i} is missing." exit 72
exit 72 fi
fi for i in ${seti_wrksuff}; do
if [ ! -f ${seti_wrkdir}/${i}/user_info.sah ]; then if [ ! -d ${seti_wrkdir}/${i} ]; then
logger -sp ${seti_syslog} -t ${seti_command} \ logger -sp ${syslog_facility} -t ${program_file} \
"unable to start: please log in to SETI@home first. (${seti_wrkdir}/${i}/user_info.sah is missing.)" "unable to start: ${seti_wrkdir}/${i} is missing."
exit 72 exit 72
fi fi
done if [ ! -f ${seti_wrkdir}/${i}/user_info.sah ]; then
for i in ${seti_wrksuff}; do logger -sp ${syslog_facility} -t ${program_file} \
su -fm ${seti_user} -c "\ "unable to start: please log in to SETI@home first" \
(cd ${seti_wrkdir}/${i} && \ "(${seti_wrkdir}/${i}/user_info.sah is missing)."
exec ${PREFIX}/${seti_bindir}/${seti_command} \ logger -sp ${syslog_facility} -t ${program_file} \
"run \"$0 register\" to accomplish this."
exit 72
fi
done
for i in ${seti_wrksuff}; do
su -fm ${seti_user} -c "\
(cd ${seti_wrkdir}/${i} && exec ${program_path} \
${seti_std_args} ${seti_proxy_args} \ ${seti_std_args} ${seti_proxy_args} \
${seti_nice+-nice} ${seti_nice} >/dev/null &)" ${seti_nice+-nice} ${seti_nice} >/dev/null &)"
echo -n " SETI@home" done
echo -n " SETI@home"
;;
stop)
for i in ${seti_wrksuff}; do
pid_path=${seti_wrkdir}/${i}/pid.sah
if [ -f ${pid_path} ]; then
kill $(cat ${pid_path}) 2> /dev/null
fi
done
if [ ! -f ${seti_wrkdir}/pid.sah ]; then
killall ${program_file} 2> /dev/null
fi
;;
restart)
$0 stop
$0 start
;;
status)
ps -auxww | egrep ${program_file} | egrep -v "($0|egrep)"
;;
register)
if [ ! -x ${program_path} ]; then
echo "${program_file}:" \
"unable to register: ${program_path} is missing." >&2
exit 72
fi
# 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}
seti_dontlogin=no
if [ -f ${seti_wrkdir}/user_info.sah ]; then
echo " It seems you have already registered with" \
"SETI@home. Would you"
echo -n " like 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 -fm ${seti_user} -c "\
cd ${seti_wrkdir} && \
exec ${program_path} \
${seti_reg_args} ${seti_proxy_args}"
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.sah
ln -sf ../user_info.sah ${seti_wrkdir}/${i}
i=$((${i} - 1))
done done
;; fi
;;
stop) *)
killall ${seti_command} echo "usage: ${rc_file} {start|stop|restart|status|register}" >&2
;; exit 64
;;
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}
seti_dontlogin=no
if [ -f ${seti_wrkdir}/user_info.sah ]; 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 -fm ${seti_user} -c "\
cd ${seti_wrkdir} && \
exec ${PREFIX}/${seti_bindir}/${seti_command} \
${seti_reg_args} ${seti_proxy_args}"
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.sah
ln -sf ../user_info.sah ${seti_wrkdir}/${i}
i=`expr ${i} - 1`
done
fi
;;
*)
echo "usage: ${0##*/} {start|stop|register}" >&2
exit 64
;;
esac esac

View File

@ -1,66 +1,141 @@
#!/bin/sh #!/bin/sh
# #
# Set up the work area and run setiathome to login or register # $FreeBSD$
#
# Set up the work area and run SETI@home to login or register.
# #
seti_rcdir=${PKG_PREFIX}/etc/rc.d # startup directory [ $# != 2 ] && exit 1
seti_script=setiathome.sh # startup script [ -z "${PKG_PREFIX}" ] && exit 1
[ -n "${BATCH}" ] && exit 0
PKG_NAME=$1
PKG_ACTION=$2
# override these variables in ${PREFIX}/etc/rc.setiathome.conf
seti_wrkdir=/var/db/setiathome # working directory seti_wrkdir=/var/db/setiathome # working directory
seti_user=nobody # user id to run under seti_user=nobody # user id to run under
seti_maxprocs=`sysctl -n hw.ncpu` # max. number of processes to start seti_maxprocs=$(sysctl -n hw.ncpu) # max. number of processes to start
if [ -f ${PKG_PREFIX}/etc/setiathome.conf ]; then rcconf_dir=${PKG_PREFIX}/etc
. ${PKG_PREFIX}/etc/setiathome.conf rcconf_file=rc.setiathome.conf
rcconf_path=${rcconf_dir}/${rcconf_file}
if [ -f ${rcconf_path} ]; then
. ${rcconf_path}
fi fi
case $2 in rc_dir=${PKG_PREFIX}/etc/rc.d
POST-INSTALL) rc_file=setiathome.sh
if [ -n "${PACKAGE_BUILDING}" ]; then rc_path=${rc_dir}/${rc_file}
exit 0
fi
echo "**** setihome requires a working directory for temporary files and" ncpu=$(sysctl -n hw.ncpu)
echo " a brief registration process."
echo case "$PKG_ACTION" in
echo " Would you like to set up a working directory in ${seti_wrkdir}," POST-INSTALL)
if [ ${seti_maxprocs} -gt 1 ]; then
if [ `sysctl -n hw.ncpu` -eq ${seti_maxprocs} ]; then echo "**** SETI@home requires a working directory for temporary files and a"
echo " register with SETI@home, and let me arrange for ${seti_maxprocs} setiathome" echo " brief registration process."
echo " processes (one for each of your `sysctl -n hw.ncpu` CPUs) to be started automatically" echo
echo -n " as user \`${seti_user}' [Y/n]? " echo " Would you like to set up a working directory in ${seti_wrkdir},"
else if [ ${seti_maxprocs} -gt 1 ]; then
echo " register with SETI@home, and let me arrange for ${seti_maxprocs} setiathome" echo " register with SETI@home, and let me arrange for ${ncpu} setiathome"
echo " processes (as configured) to be started automatically" if [ ${ncpu} -eq ${seti_maxprocs} ]; then
echo -n " as user \`${seti_user}' [Y/n]? " echo " processes (one for each of your ${ncpu} CPUs) to be started"
fi echo -n " automatically as user \`${seti_user}'? [Y/n] "
else else
echo " register with SETI@home, and let me arrange for setiathome to be" echo " processes (as configured) to be started automatically as user"
echo -n " started automatically as user \`${seti_user}' [Y/n]? " echo -n " \`${seti_user}'? [Y/n] "
fi
read a
echo ""
if [ "X$a" = "XN" -o "X$a" = "Xn" ]; then
echo ""
echo "Please set up the working directory yourself. You can use"
echo "${seti_rcdir}/${seti_script} register"
echo "to do so. See setiathome(1) for details."
exit 0
fi 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."
;;
${seti_rcdir}/${seti_script} register DEINSTALL)
if [ ! -d ${seti_wrkdir} ]; then
exit 0
fi
if [ ! -f ${seti_wrkdir}/user_info.sah ]; then ${rc_path} stop > /dev/null
echo "unable to start setiathome: it seems registration or login failed."
exit 0
fi
${seti_rcdir}/${seti_script} start >/dev/null
echo
echo "**** Congratulations! Your system now participates in the search for extra-"
echo " terrestrial intelligence. Be sure to visit the home page at"
echo " http://setiathome.ssl.berkeley.edu/"
echo " See setiathome(1) for further details."
;;
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 esac
exit 0 exit 0

View File

@ -0,0 +1,3 @@
**** %%PREFIX%%/etc/rc.setiathome.conf may be edited to tune some startup
variables such as `seti_nice' defaulted to 15 and `seti_maxprocs'
defaulted to your number of processors.

View File

@ -1,2 +1,6 @@
etc/rc.d/setiathome.sh
sbin/setiathome sbin/setiathome
@unexec if cmp -s %D/etc/rc.setiathome.conf %D/etc/rc.setiathome.conf.sample; then rm -f %D/etc/rc.setiathome.conf; fi
etc/rc.setiathome.conf.sample
@exec [ -f %D/etc/rc.setiathome.conf ] || cp %D/etc/rc.setiathome.conf.sample %D/etc/rc.setiathome.conf
etc/rc.d/setiathome.sh
%%X11PORTS%%bin/xsetiathome