summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'sci-misc')
-rw-r--r--sci-misc/boinc/boinc-7.2.44-r5.ebuild (renamed from sci-misc/boinc/boinc-7.2.44-r4.ebuild)11
-rw-r--r--sci-misc/boinc/boinc-7.4.52-r5.ebuild (renamed from sci-misc/boinc/boinc-7.4.52-r4.ebuild)11
-rw-r--r--sci-misc/boinc/boinc-7.6.33-r5.ebuild (renamed from sci-misc/boinc/boinc-7.6.33-r4.ebuild)12
-rw-r--r--sci-misc/boinc/files/boinc.init.in (renamed from sci-misc/boinc/files/boinc.init)126
-rw-r--r--sci-misc/boinc/metadata.xml2
5 files changed, 107 insertions, 55 deletions
diff --git a/sci-misc/boinc/boinc-7.2.44-r4.ebuild b/sci-misc/boinc/boinc-7.2.44-r5.ebuild
index 58ea2259b585..a5b8a0a8c2dc 100644
--- a/sci-misc/boinc/boinc-7.2.44-r4.ebuild
+++ b/sci-misc/boinc/boinc-7.2.44-r5.ebuild
@@ -122,7 +122,8 @@ src_install() {
# cleanup cruft
rm -rf "${ED%/}"/etc || die "rm failed"
- newinitd "${FILESDIR}"/${PN}.init ${PN}
+ sed -e "s/@libdir@/$(get_libdir)/" "${FILESDIR}"/${PN}.init.in > ${PN}.init || die
+ newinitd ${PN}.init ${PN}
newconfd "${FILESDIR}"/${PN}.conf ${PN}
systemd_dounit "${FILESDIR}"/${PN}.service
}
@@ -163,4 +164,12 @@ pkg_postinst() {
elog "Run as root:"
elog "gpasswd -a boinc video"
fi
+ # Add information about BOINC supporting OpenCL
+ elog "BOINC supports OpenCL. To use it you have to eselect"
+ if use cuda; then
+ elog "nvidia as the OpenCL implementation, as you are using CUDA."
+ else
+ elog "the correct OpenCL implementation for your graphic card."
+ fi
+ elog
}
diff --git a/sci-misc/boinc/boinc-7.4.52-r4.ebuild b/sci-misc/boinc/boinc-7.4.52-r5.ebuild
index eacfd2ea8624..55454c00e456 100644
--- a/sci-misc/boinc/boinc-7.4.52-r4.ebuild
+++ b/sci-misc/boinc/boinc-7.4.52-r5.ebuild
@@ -127,7 +127,8 @@ src_install() {
# cleanup cruft
rm -rf "${ED%/}"/etc || die "rm failed"
- newinitd "${FILESDIR}"/${PN}.init ${PN}
+ sed -e "s/@libdir@/$(get_libdir)/" "${FILESDIR}"/${PN}.init.in > ${PN}.init || die
+ newinitd ${PN}.init ${PN}
newconfd "${FILESDIR}"/${PN}.conf ${PN}
systemd_dounit "${FILESDIR}"/${PN}.service
}
@@ -168,4 +169,12 @@ pkg_postinst() {
elog "Run as root:"
elog "gpasswd -a boinc video"
fi
+ # Add information about BOINC supporting OpenCL
+ elog "BOINC supports OpenCL. To use it you have to eselect"
+ if use cuda; then
+ elog "nvidia as the OpenCL implementation, as you are using CUDA."
+ else
+ elog "the correct OpenCL implementation for your graphic card."
+ fi
+ elog
}
diff --git a/sci-misc/boinc/boinc-7.6.33-r4.ebuild b/sci-misc/boinc/boinc-7.6.33-r5.ebuild
index eacfd2ea8624..59a13dfeba92 100644
--- a/sci-misc/boinc/boinc-7.6.33-r4.ebuild
+++ b/sci-misc/boinc/boinc-7.6.33-r5.ebuild
@@ -127,7 +127,8 @@ src_install() {
# cleanup cruft
rm -rf "${ED%/}"/etc || die "rm failed"
- newinitd "${FILESDIR}"/${PN}.init ${PN}
+ sed -e "s/@libdir@/$(get_libdir)/" "${FILESDIR}"/${PN}.init.in > ${PN}.init || die
+ newinitd ${PN}.init ${PN}
newconfd "${FILESDIR}"/${PN}.conf ${PN}
systemd_dounit "${FILESDIR}"/${PN}.service
}
@@ -167,5 +168,14 @@ pkg_postinst() {
elog "To be able to use CUDA you should add boinc user to video group."
elog "Run as root:"
elog "gpasswd -a boinc video"
+ elog
+ fi
+ # Add information about BOINC supporting OpenCL
+ elog "BOINC supports OpenCL. To use it you have to eselect"
+ if use cuda; then
+ elog "nvidia as the OpenCL implementation, as you are using CUDA."
+ else
+ elog "the correct OpenCL implementation for your graphic card."
fi
+ elog
}
diff --git a/sci-misc/boinc/files/boinc.init b/sci-misc/boinc/files/boinc.init.in
index 23450a6857cc..a5ea8dd13bb5 100644
--- a/sci-misc/boinc/files/boinc.init
+++ b/sci-misc/boinc/files/boinc.init.in
@@ -1,5 +1,5 @@
#!/sbin/openrc-run
-# Copyright 1999-2016 Gentoo Foundation
+# Copyright 1999-2017 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
extra_started_commands="attach resume suspend"
@@ -9,46 +9,84 @@ depend() {
use dns net ntp-client ntpd
}
-
create_work_directory() {
- if [[ ! -d "${RUNTIMEDIR}" ]]; then
+ local sslcrt="/etc/ssl/certs/ca-certificates.crt"
+
+ if [ ! -d "${RUNTIMEDIR}" ]; then
einfo "Directory ${RUNTIMEDIR} does not exist, creating now."
- mkdir -p "${RUNTIMEDIR}"
- if [[ ! -d "${RUNTIMEDIR}" ]]; then
+ if ! mkdir -p "${RUNTIMEDIR}"; then
eeror "Directory ${RUNTIMEDIR} could not be created!"
return 1
fi
# ensure proper ownership
- chown "${USER}:${GROUP}" "${RUNTIMEDIR}"
+ if ! chown "${USER}:${GROUP}" "${RUNTIMEDIR}"; then
+ eeror "Changing ownership of '${RUNTIMEDIR}' to '${USER}:${GROUP}' failed!"
+ return 1
+ fi
fi
- if [[ ! -e "${RUNTIMEDIR}"/ca-bundle.crt ]]; then
- ln -s /etc/ssl/certs/ca-certificates.crt "${RUNTIMEDIR}"/ca-bundle.crt
+ 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
+ eeror "Symlinking '${sslcrt}' failed!"
+ return 1
+ fi
fi
return 0
}
+fix_lib_symlinks() {
+ local src="$1"
+ local tgt="$2"
-cuda_check() {
- local libtarget="${RUNTIMEDIR}/libcudart.so"
- local libsource="$(ls -t /opt/cuda/lib*/libcudart.so 2>/dev/null | head -n 1)"
+ # If the source does not exist, we can not do anything
+ if [ ! -f "${src}" ] ; then
+ return 1
+ fi
+
+ # Check whether the symlink is already there and in order
+ if [ -L "${tgt}" ] ; then
+ if [ -f "${tgt}" ] ; then
+ return 0
+ fi
- # Remove a broken symlink
- if [[ -h "${libtarget}" ]] \
- && [[ "${libsource}" != "$(readlink "${libtarget}")" ]]; then
- rm -f "${libtarget}"
+ # Remove broken symlink
+ if ! rm -f "${tgt}"; then
+ eeror "Removing '${tgt}' failed!"
+ return 1
+ fi
fi
# symlink the correct path
- if [[ -n "${libsource}" ]] \
- && [[ -f "${libsource}" ]] \
- && [[ ! -h "${libtarget}" ]]; then
- ln -snf "$libsource" "${libtarget}"
+ if ! ln -snf "${src}" "${tgt}"; then
+ eeror "Symlinking '${src}' to '${tgt}' failed!"
+ return 1
fi
+
+ return 0
+}
+
+cuda_check() {
+ local libsource="/opt/cuda/@libdir@/libcudart.so"
+ local libtarget="${RUNTIMEDIR}/libcudart.so"
+
+ fix_lib_symlinks "${libsource}" "${libtarget}" || return 1
+ return 0
}
+opencl_check() {
+ local libsource="/usr/@libdir@/libOpenCL.so"
+ local libtarget="${RUNTIMEDIR}/libOpenCL.so"
+
+ fix_lib_symlinks "${libsource}" "${libtarget}" || return 1
+ return 0
+}
env_check() {
# Make sure the configuration is sane
@@ -64,26 +102,25 @@ env_check() {
# to be empty by the user.
# If the client was not found (how?) something is seriously wrong
- if [[ ! -x "$BOINCBIN" ]]; then
+ 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!"
+ if [ ! -x "${BOINCCMD}" ]; then
+ eerror "No boinccmd program found!"
return 1
fi
return 0
}
-
need_passwd_arg() {
local vers=$(${BOINCBIN} --version | tr -d .)
- [ -z "$vers" ] && vers="00"
- [ $(expr substr "$vers" 1 2) -lt 74 ] && return 0
+ [ -z "${vers}" ] && vers="00"
+ [ $(expr substr "${vers}" 1 2) -lt 74 ] && return 0
# From version 7.4 on, the default is to read
# gui_rpc_auth.cfg for the password.
@@ -91,13 +128,13 @@ need_passwd_arg() {
return 1
}
-
start_pre() {
env_check || return 1
create_work_directory || return 1
- cuda_check
+ cuda_check || einfo "CUDA not supported"
+ opencl_check || einfo "OpenCL not supported"
- if [[ ! -f "${RUNTIMEDIR}/lockfile" ]]; then
+ 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."
@@ -111,9 +148,8 @@ start_pre() {
return 0
}
-
start() {
- if [[ "${ALLOW_REMOTE_RPC}" = "yes" ]]; then
+ if [ "${ALLOW_REMOTE_RPC}" = "yes" ]; then
ARGS="${ARGS} --allow_remote_gui_rpc"
fi
@@ -122,12 +158,11 @@ start() {
ebegin "Starting ${RC_SVCNAME}"
start-stop-daemon --start --nicelevel ${NICELEVEL} \
--user "${USER}:${GROUP}" --quiet --make-pidfile \
- --pidfile "$BOINC_PIDFILE" --background \
+ --pidfile "${BOINC_PIDFILE}" --background \
--exec "${BOINCBIN}" -- ${ARGS}
eend $?
}
-
attach() {
local password=""
local url=""
@@ -157,11 +192,10 @@ attach() {
-- ${password} --project_attach ${url} ${key}
eend $?
- sleep 10s
+ sleep 10
tail "${RUNTIMEDIR}/stdoutdae.txt"
}
-
stop() {
local password=""
local stop_timeout="SIGTERM/60/SIGTERM/30/SIGKILL/30"
@@ -174,12 +208,11 @@ stop() {
ebegin "Stopping ${RC_SVCNAME}"
start-stop-daemon --stop --quiet --progress \
- --retry $stop_timeout \
+ --retry ${stop_timeout} \
--pidfile "${BOINC_PIDFILE}"
eend $?
}
-
resume() {
env_check || return 1
@@ -189,14 +222,10 @@ resume() {
password="--passwd \"$(cat "${RUNTIMEDIR}/gui_rpc_auth.cfg")\""
fi
- local master_urls=( \
- $(cd "${RUNTIMEDIR}" ; \
+ for url in $(cd "${RUNTIMEDIR}" ; \
"${BOINCCMD}" ${password} --get_project_status | \
- sed -n 's/\s*master URL: //p') \
- )
-
- for url in "${master_urls[@]}"; do
- ebegin "Resuming $url"
+ sed -n 's/\s*master URL: //p'); do
+ ebegin "Resuming ${url}"
start-stop-daemon --user "${USER}:${GROUP}" --quiet \
--chdir "${RUNTIMEDIR}" --exec "${BOINCCMD}" \
-- ${password} --project ${url} resume
@@ -204,7 +233,6 @@ resume() {
done
}
-
suspend() {
env_check || return 1
@@ -214,14 +242,10 @@ suspend() {
password="--passwd \"$(cat "${RUNTIMEDIR}/gui_rpc_auth.cfg")\""
fi
- local master_urls=( \
- $(cd "${RUNTIMEDIR}" ; \
+ for url in $(cd "${RUNTIMEDIR}" ; \
"${BOINCCMD}" ${password} --get_project_status | \
- sed -n 's/\s*master URL: //p') \
- )
-
- for url in "${master_urls[@]}"; do
- ebegin "Suspending $url"
+ sed -n 's/\s*master URL: //p'); do
+ ebegin "Suspending ${url}"
start-stop-daemon --user "${USER}:${GROUP}" --quiet \
--chdir "${RUNTIMEDIR}" --exec "${BOINCCMD}" \
-- ${password} --project ${url} suspend
diff --git a/sci-misc/boinc/metadata.xml b/sci-misc/boinc/metadata.xml
index c65c76f57f7a..5e74c0cc24c0 100644
--- a/sci-misc/boinc/metadata.xml
+++ b/sci-misc/boinc/metadata.xml
@@ -19,7 +19,7 @@
Use nvidia cuda toolkit for speeding up computations.
NOTE: works only for subset of nvidia graphic cards so make sure your card
is supported before opening a bug about it.
- </flag>
+ </flag>
</use>
<upstream>
<remote-id type="github">BOINC/boinc</remote-id>