sci-misc/boinc: add 8.0.2, update live

* Drop "cuda" and "opencl" USE flags, make them optfeatures instead.

* Drop possibly outdated CURL_SSL depends.

* Add "gui" USE flag distinct from "X".

* Remove outdated app-admin/quickswitch blocker.

* Remove --disable-static from configure args (implicitly passed in EAPI
  8).

* Set ownership for /var/lib/boinc during the install.

* Symlink /var/lib/boinc/ca-bundle.crt during the install.

* Remove static libraries during the install.

* Install bash completions for boinccmd.

* Use upstream-provided icons and the desktop file instead of outdated
  ours.

* Update the OpenRC service:

	* use supervise-daemon and declarative service syntax;
	* remove unnecessary variables (BOINCBIN, BOINCCMD,
	  BOINC_PIDFILE);
	* rename ALLOW_REMOTE_RPC -> ALLOW_REMOTE_GUI_RPC to avoid
	  surprises with switching the choice from yes/no to set/unset;
	* make "retry" configurable;

Closes: https://bugs.gentoo.org/938972
Closes: https://bugs.gentoo.org/822771
Closes: https://bugs.gentoo.org/948143
Bug: https://bugs.gentoo.org/955172
Signed-off-by: Anna (cybertailor) Vyalkova <cyber+gentoo@sysrq.in>
Part-of: https://github.com/gentoo/gentoo/pull/42187
Signed-off-by: Nowa Ammerlaan <nowa@gentoo.org>
This commit is contained in:
Anna (cybertailor) Vyalkova
2025-05-21 18:20:00 +05:00
committed by Nowa Ammerlaan
parent be382e11d9
commit 22c9a573ea
7 changed files with 366 additions and 102 deletions

View File

@@ -668,7 +668,8 @@ net-misc/networkmanager wext
# Marius Brehler <marfbre@linux.sungazer.de> (2015-08-13)
# missing keyword
>=sci-misc/boinc-7.4.42-r1 X
<sci-misc/boinc-8.0.2 X
>=sci-misc/boinc-8.0.2 gui
# Pacho Ramos <pacho@gentoo.org> (2015-06-13)
# Missing keywords, bug #513108

View File

@@ -1,2 +1,3 @@
DIST boinc-7.24.1.tar.gz 46747399 BLAKE2B 872cf16a67a69c297aa3096c44b8272c039e913991253c7e52847f438050c0f87088c9cb84a5761877c9acb6bcb73dfdfbc7452e7ae98a0aeee55916838fbc93 SHA512 7dad36900c13b69a89b5a173fc283130bc4cf15c781ed31ed72ce0b6ba0db4895a12314d0f302c7a91c2762333b7c162f20f32e67ed5e2e7a4099e1f2238c255
DIST boinc-8.0.2.tar.gz 46978849 BLAKE2B 6af8836f9ce5ab295685d573c11878971edb85191d757228ba1b05931ca25dc1eabab7c39107eda8ff501eeff1d390931da40300612bdb70fe76b586b0809d27 SHA512 ed6c90a40e74d891e28fdb99c684f004b90e9fecc22584e61d67a325c0f61039ea7dc823baf321ff4a84fafc96470d6cd903d9b0268c8ff42b3eb54f8c565426
DIST boinc.tif 288208 BLAKE2B 156a99f08dcabc62a46874830600b9d237e64b650b8edf35db67b82006a67039a3965707194e8f0b25cfd65138b8700c0bfb877507418393b9cd3df32e94d260 SHA512 548e19b87fd70dbeb05687320b86aad39981c161b5b5b7e02fc3ce886d4c464c9bb763d5652d9895dd505ce247c7ff4490caa3d407e28f54ce889ffbab22d046

View File

@@ -0,0 +1,182 @@
# Copyright 2023-2025 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 bash-completion-r1 linux-info optfeature wxwidgets xdg-utils
DESCRIPTION="The Berkeley Open Infrastructure for Network Computing"
HOMEPAGE="https://boinc.berkeley.edu/"
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"
S="${WORKDIR}/${PN}-client_release-${MY_PV}-${PV}"
# We don't mark "stable" and "alpha" release channels in any special way but
# use stable/testing keywords instead.
#
# "Alpha" versions are only named as such, they are actually more like beta
# versions or release candidates.
# https://github.com/BOINC/boinc/wiki/AlphaInstructions
#
# The current versions for each of release channels can be found at:
# https://boinc.berkeley.edu/linux_install.php
KEYWORDS="~amd64 ~arm64 ~ppc ~ppc64 ~sparc ~x86"
fi
LICENSE="LGPL-3+"
SLOT="0"
# - "X" builds idle tracking via XScrnSaver and the libboinc_graphics2 library
# - "gui" builds the manager app and the screensaver
IUSE="X gui"
DEPEND="
acct-user/boinc
app-misc/ca-certificates
dev-libs/openssl:=
net-misc/curl[ssl]
sys-libs/zlib:=
X? (
media-libs/freeglut
media-libs/libjpeg-turbo:=
x11-libs/libX11
x11-libs/libXScrnSaver
)
gui? (
dev-libs/glib:2
x11-libs/gtk+:3
x11-libs/libnotify
x11-libs/libxcb:=
x11-libs/wxGTK:${WX_GTK_VER}=[opengl,webkit]
x11-libs/xcb-util
)
"
RDEPEND="${DEPEND}"
BDEPEND="
app-text/docbook-xml-dtd:4.4
app-text/docbook2X
virtual/pkgconfig
"
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 gui && setup-wxwidgets
local myeconfargs=(
--disable-server
--enable-client
--enable-dynamic-client-linkage
--enable-unicode
--with-ssl
$(usex X "" ax_cv_check_glut_libglut="no")
$(use_with X x)
$(use_enable gui manager)
$(usex gui --with-wx-config="${WX_CONFIG}" --without-wxdir)
)
econf "${myeconfargs[@]}"
}
src_install() {
default
# cleanup cruft
rm -r "${ED}"/etc || die "rm failed"
find "${D}/usr/$(get_libdir)" -name '*.la' -delete || die "Removing .la files failed"
find "${D}/usr/$(get_libdir)" -name '*.a' -delete || die "Removing static libs failed"
newbashcomp client/scripts/boinc.bash boinc
bashcomp_alias boinc boinccmd
keepdir /var/lib/boinc
fowners boinc:boinc /var/lib/boinc
fperms 750 /var/lib/boinc
dosym -r /etc/ssl/certs/ca-certificates.crt /var/lib/boinc/ca-bundle.crt
exeinto /etc/X11/xinit/xinitrc.d
newexe packages/generic/36x11-common_xhost-boinc 95-boinc
newinitd "${FILESDIR}"/boinc.initd-r1 boinc
newconfd "${FILESDIR}"/boinc.confd-r1 boinc
}
pkg_postinst() {
if use gui; then
xdg_desktop_database_update
xdg_mimeinfo_database_update
xdg_icon_cache_update
fi
elog
elog "You need to attach to a project to do anything useful with boinc."
elog "You can do this by running:"
elog "# rc-service boinc attach"
elog "The user manual is located at:"
elog "https://github.com/BOINC/boinc/wiki/User-manual"
elog
# Add warning about the new password for the client, bug 121896.
if use gui; 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/boinc 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
# OpenCL and CUDA libraries are loaded with dlopen(),
# no headers used at build time and no linking occurs.
optfeature "CUDA applications support" x11-drivers/nvidia-drivers
optfeature "OpenCL applications support" virtual/opencl
optfeature "VirtualBox applications support" app-emulation/virtualbox
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 gui; then
xdg_desktop_database_update
xdg_mimeinfo_database_update
xdg_icon_cache_update
fi
}

View File

@@ -1,80 +1,59 @@
# Copyright 1999-2025 Gentoo Authors
# Copyright 2023-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
# For live ebuilds this should be set to the latest available patch in ${FILESDIR}
# It does not need to reflect the actual internal version reported by BOINC unless that patch is broken.
MY_PV=7.18
MY_PV=$(ver_cut 1-2)
WX_GTK_VER=3.2-gtk3
inherit autotools desktop flag-o-matic linux-info optfeature wxwidgets xdg-utils
inherit autotools bash-completion-r1 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"
SRC_URI="https://github.com/BOINC/boinc/archive/client_release/${MY_PV}/${PV}.tar.gz -> ${P}.tar.gz"
KEYWORDS="~amd64 ~arm64 ~ppc ~ppc64 ~sparc ~x86"
S="${WORKDIR}/${PN}-client_release-${MY_PV}-${PV}"
fi
LICENSE="LGPL-3"
LICENSE="LGPL-3+"
SLOT="0"
IUSE="X cuda curl_ssl_gnutls +curl_ssl_openssl opencl"
# - "X" builds idle tracking via XScrnSaver and the libboinc_graphics2 library
# - "gui" builds the manager app and the screensaver
IUSE="X gui"
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
cuda? (
x11-drivers/nvidia-drivers
)
opencl? (
virtual/opencl
)
dev-libs/openssl:=
net-misc/curl[curl_ssl_gnutls(-)=,curl_ssl_openssl(-)=,-curl_ssl_axtls(-),-curl_ssl_cyassl(-)]
sys-apps/util-linux
sys-libs/zlib
net-misc/curl[ssl]
sys-libs/zlib:=
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
)
gui? (
dev-libs/glib:2
x11-libs/gtk+:3
x11-libs/libnotify
x11-libs/libxcb:=
x11-libs/wxGTK:${WX_GTK_VER}=[X,opengl,webkit]
x11-libs/wxGTK:${WX_GTK_VER}=[opengl,webkit]
x11-libs/xcb-util
)
"
BDEPEND="app-text/docbook-xml-dtd:4.4
RDEPEND="${DEPEND}"
BDEPEND="
app-text/docbook-xml-dtd:4.4
app-text/docbook2X
sys-devel/gettext
X? ( virtual/imagemagick-tools[png,tiff] )
virtual/pkgconfig
"
RDEPEND="
${DEPEND}
sys-apps/util-linux
!app-admin/quickswitch
"
PATCHES=(
# >=x11-libs/wxGTK-3.0.2.0-r3 has webview removed, bug 587462
"${FILESDIR}"/${PN}-${MY_PV}-fix_webview.patch
)
pkg_setup() {
# Bug 578750
@@ -109,89 +88,79 @@ src_prepare() {
}
src_configure() {
use X && setup-wxwidgets
use gui && setup-wxwidgets
append-libs -L"${ESYSROOT}"/usr/$(get_libdir) -L"${ESYSROOT}"/$(get_libdir)
econf --disable-server \
--enable-client \
--enable-dynamic-client-linkage \
--disable-static \
--enable-unicode \
--with-ssl \
$(use_with X x) \
$(use_enable X manager) \
$(usex X --with-wx-config="${WX_CONFIG}" --without-wxdir)
local myeconfargs=(
--disable-server
--enable-client
--enable-dynamic-client-linkage
--enable-unicode
--with-ssl
$(usex X "" ax_cv_check_glut_libglut="no")
$(use_with X x)
$(use_enable gui manager)
$(usex gui --with-wx-config="${WX_CONFIG}" --without-wxdir)
)
econf "${myeconfargs[@]}"
}
src_install() {
default
keepdir /var/lib/${PN}
newbashcomp client/scripts/boinc.bash boinc
bashcomp_alias boinc boinccmd
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}"
keepdir /var/lib/boinc
fowners boinc:boinc /var/lib/boinc
# 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
dosym -r /etc/ssl/certs/ca-certificates.crt /var/lib/boinc/ca-bundle.crt
# cleanup cruft
rm -r "${ED}"/etc || die "rm failed"
find "${D}" -name '*.la' -delete || die "Removing .la files failed"
find "${D}/usr/$(get_libdir)" -name '*.la' -delete || die "Removing .la files failed"
find "${D}/usr/$(get_libdir)" -name '*.a' -delete || die "Removing static libs failed"
newinitd "${FILESDIR}"/${PN}.init ${PN}
newconfd "${FILESDIR}"/${PN}.conf ${PN}
newinitd "${FILESDIR}"/boinc.initd-r1 boinc
newconfd "${FILESDIR}"/boinc.confd-r1 boinc
}
pkg_postinst() {
if use X; then
if use gui; 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 "You can do this by running:"
elog "# rc-service boinc attach"
elog "The user manual is located at:"
elog "https://github.com/BOINC/boinc/wiki/User-manual"
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:"
if use gui; 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 "Where /var/lib/boinc 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
# OpenCL and CUDA libraries are loaded with dlopen(),
# no headers used at build time and no linking occurs.
optfeature "CUDA applications support" x11-drivers/nvidia-drivers
optfeature "OpenCL applications support" virtual/opencl
optfeature "VirtualBox applications support" app-emulation/virtualbox
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
if use gui; then
xdg_desktop_database_update
xdg_mimeinfo_database_update
xdg_icon_cache_update

View File

@@ -1,13 +0,0 @@
This patch is an update to the existing fix_webview.patch for 7.18
--- a/configure.ac
+++ b/configure.ac
@@ -1262,7 +1262,7 @@ else
CLIENTGUIFLAGS="${CLIENTGUIFLAGS} -DNDEBUG"
fi
-CLIENTGUILIBS="${WX_LIBS}"
+CLIENTGUILIBS="${WX_LIBS} $($WX_CONFIG_WITH_ARGS --libs webview)"
if test "${enable_client_release}" = "yes" ; then
if test "x${WX_LIBS_STATIC}" = "x" ; then

View File

@@ -0,0 +1,22 @@
# Config file for /etc/init.d/boinc
# Owner of BOINC process (must be existing)
#USER="boinc"
# Group of the BOINC process
#GROUP="boinc"
# Directory with runtime data: Work units, project binaries, user info etc.
#RUNTIMEDIR="/var/lib/boinc"
# Allow remote gui RPC, uncomment to enable
#ALLOW_REMOTE_GUI_RPC=1
# Additional args for BOINC client
#ARGS=""
# nice level
#SSD_NICELEVEL="19"
# The termination timeout ensures that the service will be terminated within a
# given time (60 + 30 + 30 seconds per default) when you are stopping the service
#retry="SIGTERM/60/SIGTERM/30/SIGKILL/30"

View File

@@ -0,0 +1,102 @@
#!/sbin/openrc-run
# Copyright 2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
#
# shellcheck shell=sh
: "${RUNTIMEDIR:="/var/lib/boinc"}"
: "${USER:=boinc}"
: "${GROUP:=boinc}"
extra_started_commands="attach resume suspend"
description_attach="Attach to a project"
description_resume="Resume all projects"
description_suspend="Suspend all projects"
description="BOINC client daemon"
supervisor="supervise-daemon"
command="/usr/bin/boinc_client"
command_args="--dir ${RUNTIMEDIR} --redirectio ${ALLOW_REMOTE_GUI_RPC+--allow_remote_gui_rpc} ${ARGS}"
command_user="${USER}:${GROUP}"
pidfile="/run/boinc_client.pid"
required_files="${RUNTIMEDIR}/ca-bundle.crt"
healthcheck_timer="60"
: "${retry:="SIGTERM/60/SIGTERM/30/SIGKILL/30"}"
depend() {
use dns net ntp-client ntpd
}
eboinccmd() {
runuser -u "${USER}" -g "${GROUP}" -- /usr/bin/boinccmd "${@}"
}
start_pre() {
checkpath -d -o "${command_user}" -m 0750 "${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 '${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
}
stop_pre() {
cd "${RUNTIMEDIR}" || return 0
eboinccmd --quit
return 0
}
healthcheck() {
cd "${RUNTIMEDIR}" || return 1
eboinccmd --get_state >/dev/null
}
attach() {
local url=""
local key=""
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
cd "${RUNTIMEDIR}" || return 1
ebegin "${RC_SVCNAME}: Attaching to project"
eboinccmd --project_attach "${url}" "${key}"
eend $?
sleep 10
tail "${RUNTIMEDIR}/stdoutdae.txt"
}
resume() {
cd "${RUNTIMEDIR}" || return 1
for url in $(eboinccmd --get_project_status | \
sed -n 's/\s*master URL: //p'); do
ebegin "Resuming ${url}"
eboinccmd --project "${url}" resume
eend $?
done
}
suspend() {
cd "${RUNTIMEDIR}" || return 1
for url in $(eboinccmd --get_project_status | \
sed -n 's/\s*master URL: //p'); do
ebegin "Suspending ${url}"
eboinccmd --project "${url}" suspend
eend $?
done
}