sci-misc/boinc-wrapper: fix deps & task suspending

1. Apply a patch to revert upstream switch to SIGTSTP signal for task
   suspending, which never works.

2. Skip OpenGL check, so libboinc_graphics is never built.

Closes: https://bugs.gentoo.org/939899
Closes: https://bugs.gentoo.org/939902
Signed-off-by: Anna (cybertailor) Vyalkova <cyber+gentoo@sysrq.in>
This commit is contained in:
Anna (cybertailor) Vyalkova
2024-10-07 05:17:04 +05:00
parent 1ff4530c9f
commit 42e0a8a1ee
2 changed files with 82 additions and 0 deletions

View File

@@ -0,0 +1,54 @@
# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
inherit autotools edo
DESCRIPTION="Wrapper to use non-BOINC apps with BOINC"
HOMEPAGE="https://boinc.berkeley.edu/trac/wiki/WrapperApp"
SRC_URI="https://github.com/BOINC/boinc/archive/refs/tags/wrapper/${PV}.tar.gz -> ${P}.tar.gz"
LICENSE="Info-ZIP LGPL-3+ regexp-UofT"
SLOT="0"
KEYWORDS="~amd64 ~arm64 ~x86"
DOCS=( job.xml )
PATCHES=( "${FILESDIR}"/${PN}-26018-sigstop.patch )
src_prepare() {
default
eautoreconf
}
src_configure() {
edo bash generate_svn_version.sh
local myeconfargs=(
# build libraries only
--enable-pkg-devel
--disable-fcgi
# link with libboinc_api statically
--disable-shared
--enable-static
# do not build libboinc_graphics
--without-x
ax_cv_check_gl_libgl=no
)
econf "${myeconfargs[@]}"
}
src_compile() {
emake
emake -C samples/wrapper
}
src_install() {
cd samples/wrapper || die
einstalldocs
newbin wrapper boinc-wrapper
}

View File

@@ -0,0 +1,28 @@
Smaller version of a patch merged upstream in
https://github.com/BOINC/boinc/pull/3045, not released yet.
Author: Benn Snyder <benn.snyder@gmail.com>
Bug: https://bugs.gentoo.org/939902
diff --git a/lib/proc_control.cpp b/lib/proc_control.cpp
index 71f783d02f..090574ca4b 100644
--- a/lib/proc_control.cpp
+++ b/lib/proc_control.cpp
@@ -256,7 +256,7 @@ void suspend_or_resume_descendants(bool resume) {
int pid = getpid();
get_descendants(pid, descendants);
for (unsigned int i=0; i<descendants.size(); i++) {
- kill(descendants[i], resume?SIGCONT:SIGTSTP);
+ kill(descendants[i], resume?SIGCONT:SIGSTOP);
}
#endif
}
@@ -269,7 +269,7 @@ void suspend_or_resume_process(int pid, bool resume) {
pids.push_back(pid);
suspend_or_resume_threads(pids, 0, resume, false);
#else
- ::kill(pid, resume?SIGCONT:SIGTSTP);
+ ::kill(pid, resume?SIGCONT:SIGSTOP);
#endif
}