summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'sci-misc')
-rw-r--r--sci-misc/boinc/Manifest6
-rw-r--r--sci-misc/boinc/boinc-8.0.1.ebuild196
-rw-r--r--sci-misc/boinc/files/boinc.conf25
-rw-r--r--sci-misc/boinc/files/boinc.init172
-rw-r--r--sci-misc/boinc/metadata.xml23
5 files changed, 422 insertions, 0 deletions
diff --git a/sci-misc/boinc/Manifest b/sci-misc/boinc/Manifest
new file mode 100644
index 0000000..b4800b2
--- /dev/null
+++ b/sci-misc/boinc/Manifest
@@ -0,0 +1,6 @@
+AUX boinc.conf 606 BLAKE2B bbd48576bdf340b5a8a28ad72c8e4ee6bcd8579331edf036db357d324aa1a484836aa869fd5c39a7ed7ccf805e413a01eb2a27537d32f21692599291ec1e325d SHA512 aaf6e7180d4fde023c228a038a5d9ab295165ad6ee03bc892e5003943fa91bff03b21c39c86d6b4406d70d8d67e4fcb6dfb592a78e6df174e6bac28f70056654
+AUX boinc.init 4366 BLAKE2B 1323f79c31d02c544601633590a4cebd8d77c15cb78d7ef612a176e2f96096a9cc91d5088f90702f2020228972780a4e8b4b36112f652b74d9a9186efa118ccd SHA512 8796a8eca3f6267abfff32a7505063318a5989317c1d4f03629abd580742bd814c779d2b75b343f61a4bd6db5b84effcfcb0db3d885e14ec4a44f56110005c1c
+DIST boinc-8.0.1.tar.gz 46974713 BLAKE2B 774ce70b02ebfd0a0dcdc7b22a9d0db6c347e3e1122af5e67c386f582ead765eb8f4466441e604c407b036781f55d9d8edddbf7d2b175f3eb202e7bb424460d1 SHA512 c7c8c7ee6f0099fac15965c1bf0104f641c343e95c7172c73531f07fdbff655ecf013463dd7a45e6245667a02740befb3b3b90a8b26fef65121eb365dd72e7a9
+DIST boinc.tif 288208 BLAKE2B 156a99f08dcabc62a46874830600b9d237e64b650b8edf35db67b82006a67039a3965707194e8f0b25cfd65138b8700c0bfb877507418393b9cd3df32e94d260 SHA512 548e19b87fd70dbeb05687320b86aad39981c161b5b5b7e02fc3ce886d4c464c9bb763d5652d9895dd505ce247c7ff4490caa3d407e28f54ce889ffbab22d046
+EBUILD boinc-8.0.1.ebuild 5720 BLAKE2B f823dba72a5123b8b17d8170322dc41d4953e52cb379f0c4fca6504e3ceca8e339fc2545103f90f75c2a33791d652d90528ae0bdeb71fdebd958fb27071842ce SHA512 03a0ea946fec33e79a73ecfe39ad2814cf6effe0678b4f080b9efb0853497b3508cf9ea531a34cb58c820169784f7bb5856230ed411d0b6f08b02a536b30929c
+MISC metadata.xml 785 BLAKE2B ed154167c7d803a53102dc02a4c9f3d80ccc14ede90fb8637752d3d990a7d1afeae7409555d528106e7296b79b5c273ac6fb4516b0971c5dd670ea5cc246d6e5 SHA512 3e06db7f47ff76595e18330cfbd9b2a89332df6eab1f184a213bee6e5e3e7132c5719d86dbd3aa0b871ae17109dfc70a369596c0911d53933a4338253a134617
diff --git a/sci-misc/boinc/boinc-8.0.1.ebuild b/sci-misc/boinc/boinc-8.0.1.ebuild
new file mode 100644
index 0000000..cedf4e8
--- /dev/null
+++ b/sci-misc/boinc/boinc-8.0.1.ebuild
@@ -0,0 +1,196 @@
+# Copyright 2023-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+MY_PV=$(ver_cut 1-2)
+WX_GTK_VER=3.2-gtk3
+
+inherit autotools desktop flag-o-matic linux-info optfeature wxwidgets xdg-utils
+
+DESCRIPTION="The Berkeley Open Infrastructure for Network Computing"
+HOMEPAGE="https://boinc.berkeley.edu/"
+
+SRC_URI="X? ( https://boinc.berkeley.edu/logo/boinc_glossy2_512_F.tif -> ${PN}.tif )"
+if [[ ${PV} == *9999 ]] ; then
+ EGIT_REPO_URI="https://github.com/BOINC/${PN}.git"
+ inherit git-r3
+else
+ SRC_URI+=" https://github.com/BOINC/boinc/archive/client_release/${MY_PV}/${PV}.tar.gz -> ${P}.tar.gz"
+ KEYWORDS="~amd64 ~arm64 ~ia64 ~ppc ppc64 sparc ~x86"
+ S="${WORKDIR}/${PN}-client_release-${MY_PV}-${PV}"
+fi
+
+LICENSE="LGPL-3+"
+SLOT="0"
+
+IUSE="X cuda curl_ssl_gnutls +curl_ssl_openssl opencl"
+
+REQUIRED_USE="
+ ^^ ( curl_ssl_gnutls curl_ssl_openssl )
+"
+
+# libcurl must not be using an ssl backend boinc does not support.
+# If the libcurl ssl backend changes, boinc should be recompiled.
+DEPEND="
+ acct-user/boinc
+ app-misc/ca-certificates
+ dev-libs/openssl:=
+ net-misc/curl[curl_ssl_gnutls(-)=,curl_ssl_openssl(-)=,-curl_ssl_axtls(-),-curl_ssl_cyassl(-)]
+ sys-libs/zlib
+ cuda? (
+ x11-drivers/nvidia-drivers
+ )
+ opencl? (
+ virtual/opencl
+ )
+ X? (
+ dev-libs/glib:2
+ media-libs/freeglut
+ media-libs/libjpeg-turbo:=
+ x11-libs/gtk+:3
+ x11-libs/libnotify
+ x11-libs/libX11
+ x11-libs/libXScrnSaver
+ x11-libs/libxcb:=
+ x11-libs/wxGTK:${WX_GTK_VER}[X,opengl,webkit]
+ x11-libs/xcb-util
+ )
+"
+BDEPEND="app-text/docbook-xml-dtd:4.4
+ app-text/docbook2X
+ sys-devel/gettext
+ X? ( virtual/imagemagick-tools[png,tiff] )
+"
+RDEPEND="
+ ${DEPEND}
+ sys-apps/util-linux
+ !app-admin/quickswitch
+"
+
+pkg_setup() {
+ # Bug 578750
+ if use kernel_linux; then
+ linux-info_pkg_setup
+ if ! linux_config_exists; then
+ ewarn "Can't check the linux kernel configuration."
+ ewarn "You might be missing vsyscall support."
+ elif kernel_is -ge 4 4 \
+ && linux_chkconfig_present LEGACY_VSYSCALL_NONE; then
+ ewarn "You do not have vsyscall emulation enabled."
+ ewarn "This will prevent some boinc projects from running."
+ ewarn "Please enable vsyscall emulation:"
+ ewarn " CONFIG_LEGACY_VSYSCALL_EMULATE=y"
+ ewarn "in /usr/src/linux/.config, to be found at"
+ ewarn " Processor type and features --->"
+ ewarn " vsyscall table for legacy applications (None) --->"
+ ewarn " (X) Emulate"
+ ewarn "Alternatively, you can enable CONFIG_LEGACY_VSYSCALL_NATIVE."
+ ewarn "However, this has security implications and is not recommended."
+ fi
+ fi
+}
+
+src_prepare() {
+ default
+
+ # prevent bad changes in compile flags, bug 286701
+ sed -i -e "s:BOINC_SET_COMPILE_FLAGS::" configure.ac || die "sed failed"
+
+ eautoreconf
+}
+
+src_configure() {
+ use X && setup-wxwidgets
+
+ append-libs -L"${ESYSROOT}"/usr/$(get_libdir) -L"${ESYSROOT}"/$(get_libdir)
+
+ local myeconfargs=(
+ --disable-fcgi
+ --disable-server
+ --disable-static
+ --enable-client
+ --enable-dynamic-client-linkage
+ --enable-libraries
+ --enable-unicode
+ --with-ssl
+ $(use_with X x)
+ $(use_enable X manager)
+ $(usex X --with-wx-config="${WX_CONFIG}" --without-wxdir)
+ )
+ econf "${myeconfargs[@]}"
+}
+
+src_install() {
+ default
+
+ keepdir /var/lib/${PN}
+
+ if use X; then
+ # Create new icons. bug 593362
+ local s SIZES=(16 22 24 32 36 48 64 72 96 128 192 256)
+ for s in "${SIZES[@]}"; do
+ # The convert command is not checked, because it will issue warnings and exit with
+ # an error code if imagemagick is used and was merged with USE="-xml", although the
+ # conversion has worked. See #766093
+ # Instead, newicon will fail if the conversion did not produce the icon.
+ convert "${DISTDIR}"/${PN}.tif -resize ${s}x${s} "${WORKDIR}"/boinc_${s}.png
+ newicon -s $s "${WORKDIR}"/boinc_${s}.png boinc.png
+ done
+ make_desktop_entry boincmgr "${PN}" "${PN}" "Math;Science" "Path=/var/lib/${PN}"
+
+ # Rename the desktop file to boincmgr.desktop to (hot)fix bug 599910
+ mv "${ED}"/usr/share/applications/boincmgr{-${PN},}.desktop || \
+ die "Failed to rename desktop file"
+ fi
+
+ # cleanup cruft
+ rm -r "${ED}"/etc || die "rm failed"
+ find "${D}" -name '*.la' -delete || die "Removing .la files failed"
+
+ newinitd "${FILESDIR}"/${PN}.init ${PN}
+ newconfd "${FILESDIR}"/${PN}.conf ${PN}
+}
+
+pkg_postinst() {
+ if use X; then
+ xdg_desktop_database_update
+ xdg_mimeinfo_database_update
+ xdg_icon_cache_update
+ fi
+
+ elog
+ elog "You are using the source compiled version of boinc."
+ use X && elog "The graphical manager can be found at /usr/bin/boincmgr"
+ elog
+ elog "You need to attach to a project to do anything useful with boinc."
+ elog "You can do this by running /etc/init.d/boinc attach"
+ elog "The howto for configuration is located at:"
+ elog "http://boinc.berkeley.edu/wiki/Anonymous_platform"
+ elog
+ # Add warning about the new password for the client, bug 121896.
+ if use X; then
+ elog "If you need to use the graphical manager the password is in:"
+ elog "/var/lib/boinc/gui_rpc_auth.cfg"
+ elog "Where /var/lib/ is default RUNTIMEDIR, that can be changed in:"
+ elog "/etc/conf.d/boinc"
+ elog "You should change this password to something more memorable (can be even blank)."
+ elog "Remember to launch init script before using manager. Or changing the password."
+ elog
+ fi
+ elog "To be able to use CUDA or OpenCL you should add the boinc user to the video group."
+ elog "Run as root:"
+ elog "gpasswd -a boinc video"
+ elog
+
+ optfeature_header "If you want to run ATLAS native tasks by LHC@home, you need to install:"
+ optfeature "CERN VM filesystem support" net-fs/cvmfs
+}
+
+pkg_postrm() {
+ if use X; then
+ xdg_desktop_database_update
+ xdg_mimeinfo_database_update
+ xdg_icon_cache_update
+ fi
+}
diff --git a/sci-misc/boinc/files/boinc.conf b/sci-misc/boinc/files/boinc.conf
new file mode 100644
index 0000000..856be30
--- /dev/null
+++ b/sci-misc/boinc/files/boinc.conf
@@ -0,0 +1,25 @@
+# Config file for /etc/init.d/boinc
+
+# Owner of BOINC process (must be existing)
+USER="boinc"
+# Group of the BOINC process. Defaults to the user's primary group if
+# not set.
+#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"
+
+# Location of the boinc_client pid file
+BOINC_PIDFILE="/var/run/boinc_client.pid"
+
+# Location of the boinccmd command
+BOINCCMD="/usr/bin/boinccmd"
+
+# 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..c95b498
--- /dev/null
+++ b/sci-misc/boinc/files/boinc.init
@@ -0,0 +1,172 @@
+#!/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
+}
diff --git a/sci-misc/boinc/metadata.xml b/sci-misc/boinc/metadata.xml
new file mode 100644
index 0000000..d144ab5
--- /dev/null
+++ b/sci-misc/boinc/metadata.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>sci@gentoo.org</email>
+ <name>Gentoo Science Project</name>
+ </maintainer>
+ <maintainer type="person" proxied="yes">
+ <email>sven.eden@prydeworx.com</email>
+ <name>Sven Eden</name>
+ </maintainer>
+ <maintainer type="project" proxied="proxy">
+ <email>proxy-maint@gentoo.org</email>
+ <name>Proxy Maintainers</name>
+ </maintainer>
+ <longdescription lang="en">
+ BOINC (Berkeley Open Infrastructure for Network Computing) is a software
+ platform for distributed computing using volunteered computer resources.
+ </longdescription>
+ <upstream>
+ <remote-id type="github">BOINC/boinc</remote-id>
+ </upstream>
+</pkgmetadata>