1
0
mirror of https://git.FreeBSD.org/ports.git synced 2025-01-03 06:04:53 +00:00

Improve startup script, join "Team FreeBSD" by default

PR:		245506
Approved by:	0mp (maintainer)
This commit is contained in:
Michael Gmelin 2020-04-14 16:03:24 +00:00
parent beb1c1fe19
commit a0f87bd33e
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=531701
3 changed files with 85 additions and 11 deletions

View File

@ -3,7 +3,7 @@
PORTNAME= foldingathome
DISTVERSION= 7.5.1-1
PORTREVISION= 2
PORTREVISION= 3
CATEGORIES= biology linux
MASTER_SITES= https://download.foldingathome.org/releases/public/release/fahclient/centos-6.7-64bit/v${DISTVERSION:R}/
PKGNAMEPREFIX= linux-

View File

@ -30,6 +30,34 @@
# PROVIDE: fahclient
# REQUIRE: DAEMON LOGIN NETWORKING linux
#
# Add the following lines to /etc/rc.conf to enable nginx:
# fahclient_enable (bool): Set to "NO" by default.
# Set it to "YES" to enable fahclient.
# fahclient_user (str): Default: "fahclient"
# User to run fahclient as.
# fahclient_chdir (str): Default: "%%FAHCLIENT_WORK_DIR%%"
# Directory to chdir before starting fahclient.
# fahclient_config (str): Default: "%%ETCDIR%%/config.xml"
# Path to fahclient configuration file.
# fahclient_donor (str): Default: "Anonymous"
# Donor to attribute work units to.
# Settings in fahclient_config take precedence.
# fahclient_team (str): Default: "11743" (FreeBSD Team)
# Team to attribute work units to.
# Settings in fahclient_config take precedence.
# fahclient_pidfile (str): Default: "%%FAHCLIENT_WORK_DIR%%/fahclient.pid"
# Path to PID file.
# fahclient_logfile (str): Default: "%%FAHCLIENT_WORK_DIR%%/log.txt"
# Path to log file. Takes precedence over
# settings in fahclient_config.
# fahclient_flags (str): Default: ""
# Extra flags passed to start command *before*
# other options.
# fahclient_extra_flags (str): Defaults to ""
# Extra flags passed to start command *after*
# other options.
. /etc/rc.subr
name='fahclient'
@ -42,6 +70,9 @@ load_rc_config 'fahclient'
: "${fahclient_user:=fahclient}"
: "${fahclient_chdir:=%%FAHCLIENT_WORK_DIR%%}"
: "${fahclient_donor:=Anonymous}"
: "${fahclient_team:=11743}"
: "${fahclient_pidfile:=%%FAHCLIENT_WORK_DIR%%/fahclient.pid}"
: "${fahclient_config:=%%ETCDIR%%/config.xml}"
: "${fahclient_logfile:=%%FAHCLIENT_WORK_DIR%%/log.txt}"
@ -49,18 +80,37 @@ load_rc_config 'fahclient'
pidfile="${fahclient_pidfile}"
command='%%FAHCLIENT_PROGRAM%%'
# Some notes on the specified options:
# - fahclient_flags are passed in before other options by the rc
# framework.
# - --user sets the donor work units are attributed to (config file takes
# precedence).
# - --team sets the team work units are attributed to (cfg file takes
# precedence).
# - --config is necessary to point the program to the correct configuration
# file.
# - --log sets the log file location (takes precedence over config file),
# log is special in this respect.
# - --chdir is used to switch to a desired work directory. The program is going
# to create a lot of files in its current working directory so should not be
# just any directory on the system.
# - --pid-file specifies the location for the PID file.
# - --daemon is to detach the program from the terminal and run it
# in the background.
command_args="--config ${fahclient_config} --chdir ${fahclient_chdir}"
command_args="${command_args} --pid-file ${pidfile} --daemon"
extra_commands="log"
# - fahclient_extra_flags are passed in after all other options.
command_args="${command_args} --user=${fahclient_donor}"
command_args="${command_args} --team=${fahclient_team}"
command_args="${command_args} --config=${fahclient_config}"
command_args="${command_args} --log=${fahclient_logfile}"
command_args="${command_args} --chdir=${fahclient_chdir}"
command_args="${command_args} --pid-file=${pidfile} --daemon"
command_args="${command_args} ${fahclient_extra_flags}"
extra_commands="log showconfig"
log_cmd="tail -F -- ${fahclient_logfile}"
showconfig_cmd="${command} ${fahclient_flags} ${command_args} --print"
if [ -n "$fahclient_user" ]; then
showconfig_cmd="su -m $fahclient_user -c 'sh -c \"$showconfig_cmd\"'"
fi
required_modules='linprocfs linsysfs linux64:linux64elf'
run_rc_command "$1"

View File

@ -10,12 +10,17 @@ Here is a list of steps to quickly get started with Folding@home on FreeBSD:
2. Mount linsysfs(5) in /compat/linux/sys.
3. Consider setting the user name and the team ID (e.g., "11743")
in %%FAHCLIENT_CONFIG_XML%%.
3. Enable the fahclient service:
4. Enable the fahclient service:
sysrc fahclient_enable=YES
sysrc fahclient_enable="YES"
4. Consider setting the user name and the team ID:
sysrc fahclient_user=myusername
sysrc fahclient_team=0
Team 0 means "no team", by default fahclient joins team FreeBSD
(11743).
5. Start the service:
@ -40,16 +45,35 @@ Additional notes
Note, that usually the permissions are on unless the system
configuration was modified by the administrator.
- The ID of the FreeBSD team is 11743. In order to join the team
add the following line to %%FAHCLIENT_CONFIG_XML%%:
- By default the FreeBSD team (team id 11743) is joined.
This can be overridden by changing the configuration in rc.conf:
<team value="11743"/>
sysrc fahclient_team=0
The service has to be restarted to pick up the change.
Statistics for the FreeBSD team can be viewed here:
https://stats.foldingathome.org/team/11743
- Team and donor configuration values in %%FAHCLIENT_CONFIG_XML%% take
precedence over those configured in rc.conf using sysrc.
- It's possible to specify additional flags in rc.conf. Those take
precedence over what is configured in the config file, e.g., setting
the maximum number of cpus to be used:
sysrc fahclient_flags+=" --cpus=7"
Flags that are set this way will be overridden by settings in
%%FAHCLIENT_CONFIG_XML%%. You can set fahclient_extra_flags
to override settings in %%FAHCLIENT_CONFIG_XML%%:
sysrc fahclient_extra_flags+=" --cpus=7"
- You can check the actual configuration values applied with:
service fahclient showconfig
- More information about configuring and running the Folding@home
software is available on those websites:
- https://foldingforum.org/