diff options
Diffstat (limited to 'sci-misc/boinc/files/boinc.init.in')
-rw-r--r-- | sci-misc/boinc/files/boinc.init.in | 172 |
1 files changed, 0 insertions, 172 deletions
diff --git a/sci-misc/boinc/files/boinc.init.in b/sci-misc/boinc/files/boinc.init.in deleted file mode 100644 index c95b498..0000000 --- a/sci-misc/boinc/files/boinc.init.in +++ /dev/null @@ -1,172 +0,0 @@ -#!/sbin/openrc-run -# Copyright 1999-2022 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -extra_started_commands="attach resume suspend" - -depend() { - # we can use dns and net, but we can also in most cases live without them - use dns net ntp-client ntpd -} - -create_work_directory() { - local sslcrt="/etc/ssl/certs/ca-certificates.crt" - - if [ ! -d "${RUNTIMEDIR}" ]; then - einfo "Directory ${RUNTIMEDIR} does not exist, creating now." - if ! mkdir -p "${RUNTIMEDIR}"; then - eerror "Directory ${RUNTIMEDIR} could not be created!" - return 1 - fi - fi - - # ensure proper ownership - if ! chown "${USER}:${GROUP}" "${RUNTIMEDIR}"; then - eerror "Changing ownership of '${RUNTIMEDIR}' to '${USER}:${GROUP}' failed!" - return 1 - fi - - if [ ! -e "${RUNTIMEDIR}"/ca-bundle.crt ]; then - if [ ! -f "${sslcrt}" ]; then - eerror "'${sslcrt}' does not exist!" - return 1 - fi - - if ! ln -s "${sslcrt}" "${RUNTIMEDIR}"/ca-bundle.crt; then - eerror "Symlinking '${sslcrt}' failed!" - return 1 - fi - fi - - return 0 -} - -env_check() { - # Make sure the configuration is sane - : ${USER:="boinc"} - : ${GROUP:="$(id -ng ${USER})"} - : ${RUNTIMEDIR:="/var/lib/boinc"} - : ${BOINCBIN:="$(which boinc_client)"} - : ${BOINC_PIDFILE:="/var/run/boinc_client.pid"} - : ${BOINCCMD:="$(which /usr/bin/boinccmd)"} - : ${ALLOW_REMOTE_RPC:="no"} - : ${NICELEVEL:="19"} - # ARGS is not checked, it could have been explicitly set - # to be empty by the user. - - # If the client was not found (how?) something is seriously wrong - if [ ! -x "${BOINCBIN}" ]; then - eerror "No boinc_client found!" - return 1 - fi - - # The boinccmd is crucial, or we can not attach, suspend or resume - # the boinc client - if [ ! -x "${BOINCCMD}" ]; then - eerror "No boinccmd program found!" - return 1 - fi - - return 0 -} - -start_pre() { - env_check || return 1 - create_work_directory || return 1 - - 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 ${RC_SERVICE} attach or connect with a gui client" - einfo "and attach to a project with that." - einfo "" - 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 - - return 0 -} - -start() { - if [ "${ALLOW_REMOTE_RPC}" = "yes" ]; then - ARGS="${ARGS} --allow_remote_gui_rpc" - fi - - ARGS="${ARGS} --dir "${RUNTIMEDIR}" --redirectio" - - ebegin "Starting ${RC_SVCNAME}" - start-stop-daemon --start --nicelevel ${NICELEVEL} \ - --user "${USER}:${GROUP}" --quiet --make-pidfile \ - --pidfile "${BOINC_PIDFILE}" --background \ - --exec "${BOINCBIN}" -- ${ARGS} - eend $? -} - -attach() { - local url="" - local key="" - - env_check || return 1 - - einfo "If you can't 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 - - ebegin "${RC_SVCNAME}: Attaching to project" - start-stop-daemon --user "${USER}:${GROUP}" --quiet \ - --chdir "${RUNTIMEDIR}" --exec "${BOINCCMD}" \ - -- --project_attach ${url} ${key} - eend $? - - sleep 10 - tail "${RUNTIMEDIR}/stdoutdae.txt" -} - -stop() { - local stop_timeout="SIGTERM/60/SIGTERM/30/SIGKILL/30" - - env_check || return 1 - - ebegin "Stopping ${RC_SVCNAME}" - start-stop-daemon --stop --quiet --progress \ - --retry ${stop_timeout} \ - --pidfile "${BOINC_PIDFILE}" - eend $? -} - -resume() { - env_check || return 1 - - for url in $(cd "${RUNTIMEDIR}" ; \ - "${BOINCCMD}" --get_project_status | \ - sed -n 's/\s*master URL: //p'); do - ebegin "Resuming ${url}" - start-stop-daemon --user "${USER}:${GROUP}" --quiet \ - --chdir "${RUNTIMEDIR}" --exec "${BOINCCMD}" \ - -- --project ${url} resume - eend $? - done -} - -suspend() { - env_check || return 1 - - for url in $(cd "${RUNTIMEDIR}" ; \ - "${BOINCCMD}" --get_project_status | \ - sed -n 's/\s*master URL: //p'); do - ebegin "Suspending ${url}" - start-stop-daemon --user "${USER}:${GROUP}" --quiet \ - --chdir "${RUNTIMEDIR}" --exec "${BOINCCMD}" \ - -- --project ${url} suspend - eend $? - done -} |