summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sci-misc/boinc/files/boinc.conf17
-rw-r--r--sci-misc/boinc/files/boinc.init103
2 files changed, 120 insertions, 0 deletions
diff --git a/sci-misc/boinc/files/boinc.conf b/sci-misc/boinc/files/boinc.conf
new file mode 100644
index 0000000..0fef6ae
--- /dev/null
+++ b/sci-misc/boinc/files/boinc.conf
@@ -0,0 +1,17 @@
+# Config file for /etc/init.d/boinc
+
+# Owner of BOINC process (must be existing)
+USER="boinc"
+GROUP="boinc"
+
+# Directory with runtime data: Work units, project binaries, user info etc.
+RUNTIMEDIR="/var/lib/boinc"
+
+# Location of the boinc command line binary
+BOINCBIN="/usr/bin/boinc_client"
+
+# Allow remote gui RPC yes or no
+ALLOW_REMOTE_RPC="no"
+
+# nice level
+NICELEVEL="19"
diff --git a/sci-misc/boinc/files/boinc.init b/sci-misc/boinc/files/boinc.init
new file mode 100644
index 0000000..fc14a52
--- /dev/null
+++ b/sci-misc/boinc/files/boinc.init
@@ -0,0 +1,103 @@
+#!/sbin/runscript
+
+extra_started_commands="attach"
+
+depend() {
+ # we can use dns and net, but we can also in most cases live without them
+ use dns net
+}
+
+create_work_directory() {
+ if [ ! -d "${RUNTIMEDIR}" ]; then
+ einfo "Directory ${RUNTIMEDIR} not existing, creating now."
+ mkdir "${RUNTIMEDIR}"
+ if [ ! -d "${RUNTIMEDIR}" ]; then
+ eeror "Directory ${RUNTIMEDIR} could not be created!"
+ return 1
+ fi
+ fi
+ if [ ! -e "${RUNTIMEDIR}"/ca-bundle.crt ] ; then
+ ln -s /etc/ssl/certs/ca-certificates.crt "${RUNTIMEDIR}"/ca-bundle.crt
+ fi
+}
+
+cuda_check() {
+ if [ -f /opt/cuda/lib/libcudart.so ]; then
+ # symlink wont harm :]
+ ln -snf /opt/cuda/lib/libcudart.so "${RUNTIMEDIR}"/libcudart.so
+ fi
+}
+
+check_baselayout() {
+ if [ "${RC_VERSION:-0}" = "0" ]; then
+ eerror "This script cannot be used for baselayout-1."
+ return 1
+ fi
+}
+
+start() {
+ check_baselayout || return 1
+ create_work_directory || return 1
+ cuda_check
+
+ # always ensure proper ownership
+ chown -R "${USER}:${GROUP}" "${RUNTIMEDIR}"
+
+ if [ ! -f "${RUNTIMEDIR}/lockfile" ]; then
+ einfo "File \"${RUNTIMEDIR}/lockfile\" does not exist, assuming first run."
+ einfo "You need to setup an account on the BOINC project homepage beforehand!"
+ einfo "Go to http://boinc.berkeley.edu/ and locate your project."
+ einfo "Then either run /etc/init.d/boinc attach or connect with a gui client"
+ einfo "and attach to a project with that."
+ echo
+ ewarn "Note that for attaching to some project you need your network up and running."
+ ewarn "network is needed only for jobs fetching afterwards"
+ fi
+
+ if [ "${ALLOW_REMOTE_RPC}" = "yes" ]; then
+ ARGS="${ARGS} --allow_remote_gui_rpc"
+ fi
+
+ ebegin "Starting ${SVCNAME}"
+ su -m ${USER} -c "nice -n ${NICELEVEL} \"${BOINCBIN}\" ${ARGS} --daemon --dir \"${RUNTIMEDIR}\" --redirectio"
+ eend $?
+}
+
+attach() {
+ local password url key
+
+ einfo "If you cant find your account key just try to obtain it by using:"
+ einfo " boinccmd --passwd PASSWORD_FROM_GUI_RPC_AUTH --lookup_account URL EMAIL PASSWORD"
+
+ printf " Enter the Project URL: "
+ read url
+ printf " Enter your Account Key: "
+ read key
+
+ if ! service_started; then
+ "${RC_SERVICE}" start
+ fi
+
+ password=$(cat "${RUNTIMEDIR}/gui_rpc_auth.cfg")
+
+ ebegin "${SVCNAME}: Attaching to project"
+ su -m ${USER} -c "boinccmd --passwd \"${password}\" --project_attach ${url} ${key}"
+ eend $?
+
+ unset password url key
+
+ sleep 10
+ tail "${RUNTIMEDIR}/stdoutdae.txt"
+}
+
+stop() {
+ local password
+
+ password=$(cat "${RUNTIMEDIR}/gui_rpc_auth.cfg")
+
+ ebegin "Stopping ${SVCNAME}"
+ su -m ${USER} -c "boinccmd --passwd \"${password}\" --quit"
+ eend $?
+
+ unset password
+}