From a0da10f4fa3c7e74aab1726c8f450e103a6abaf3 Mon Sep 17 00:00:00 2001 From: Sven Eden Date: Sun, 21 Apr 2024 12:25:29 +0200 Subject: sci-misc/boinc: new package, add 8.0.1 Signed-off-by: Sven Eden --- profiles/package.mask/boinc | 4 + sci-misc/boinc/Manifest | 6 ++ sci-misc/boinc/boinc-8.0.1.ebuild | 196 ++++++++++++++++++++++++++++++++++++++ sci-misc/boinc/files/boinc.conf | 25 +++++ sci-misc/boinc/files/boinc.init | 172 +++++++++++++++++++++++++++++++++ sci-misc/boinc/metadata.xml | 23 +++++ 6 files changed, 426 insertions(+) create mode 100644 profiles/package.mask/boinc create mode 100644 sci-misc/boinc/Manifest create mode 100644 sci-misc/boinc/boinc-8.0.1.ebuild create mode 100644 sci-misc/boinc/files/boinc.conf create mode 100644 sci-misc/boinc/files/boinc.init create mode 100644 sci-misc/boinc/metadata.xml diff --git a/profiles/package.mask/boinc b/profiles/package.mask/boinc new file mode 100644 index 0000000..a2bbb3c --- /dev/null +++ b/profiles/package.mask/boinc @@ -0,0 +1,4 @@ +# This version is marked as pre-release by upstream. +# Use at your own risk! +# 2024-04-24 - sed - EdenWorX +=sci-misc/boinc-8.0.1 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 @@ + + + + + sci@gentoo.org + Gentoo Science Project + + + sven.eden@prydeworx.com + Sven Eden + + + proxy-maint@gentoo.org + Proxy Maintainers + + + BOINC (Berkeley Open Infrastructure for Network Computing) is a software + platform for distributed computing using volunteered computer resources. + + + BOINC/boinc + + -- cgit v1.2.3-65-gdbad