diff options
| author | root <root@alpha.trunkmasters.com> | 2026-06-04 05:48:38 -0500 |
|---|---|---|
| committer | root <root@alpha.trunkmasters.com> | 2026-06-04 05:48:38 -0500 |
| commit | bfd9c39e4712ebdb442d4ca0673061faed1e70e1 (patch) | |
| tree | 0d7a74b4463ee387f9cf9368ceb1b757f694f72a /sci-misc/boinc | |
| parent | f716a9fe6455d39eef01e718aae68dae61c19704 (diff) | |
| download | baldeagleos-repo-bfd9c39e4712ebdb442d4ca0673061faed1e70e1.tar.gz baldeagleos-repo-bfd9c39e4712ebdb442d4ca0673061faed1e70e1.tar.xz baldeagleos-repo-bfd9c39e4712ebdb442d4ca0673061faed1e70e1.zip | |
Revert "Adding metadata"
This reverts commit f716a9fe6455d39eef01e718aae68dae61c19704.
Diffstat (limited to 'sci-misc/boinc')
| -rw-r--r-- | sci-misc/boinc/Manifest | 4 | ||||
| -rw-r--r-- | sci-misc/boinc/boinc-7.24.1-r2.ebuild | 194 | ||||
| -rw-r--r-- | sci-misc/boinc/boinc-8.0.2.ebuild | 182 | ||||
| -rw-r--r-- | sci-misc/boinc/boinc-8.2.4.ebuild | 188 | ||||
| -rw-r--r-- | sci-misc/boinc/boinc-9999.ebuild | 188 | ||||
| -rw-r--r-- | sci-misc/boinc/files/boinc.conf | 25 | ||||
| -rw-r--r-- | sci-misc/boinc/files/boinc.confd-r1 | 22 | ||||
| -rw-r--r-- | sci-misc/boinc/files/boinc.init | 172 | ||||
| -rw-r--r-- | sci-misc/boinc/files/boinc.initd-r1 | 102 | ||||
| -rw-r--r-- | sci-misc/boinc/metadata.xml | 23 |
10 files changed, 1100 insertions, 0 deletions
diff --git a/sci-misc/boinc/Manifest b/sci-misc/boinc/Manifest new file mode 100644 index 000000000000..e3d43cfdd6f9 --- /dev/null +++ b/sci-misc/boinc/Manifest @@ -0,0 +1,4 @@ +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-8.2.4.tar.gz 47582706 BLAKE2B 7b798e5367628ce75f26ec5e76065d54e26ef503ab5e904865d958ed6e708e547bd314139417595f8edcbd9d82d2ab8a288b750d2c0567357fa3707c56a5cc4e SHA512 aa3814d4d17954704644a99e9367decfdbefe9eeb1cc4a77f80f86c0b8760c6f93d44a6accac3a51a255a18f2464ac288936db4733378418a1248147db63261e +DIST boinc.tif 288208 BLAKE2B 156a99f08dcabc62a46874830600b9d237e64b650b8edf35db67b82006a67039a3965707194e8f0b25cfd65138b8700c0bfb877507418393b9cd3df32e94d260 SHA512 548e19b87fd70dbeb05687320b86aad39981c161b5b5b7e02fc3ce886d4c464c9bb763d5652d9895dd505ce247c7ff4490caa3d407e28f54ce889ffbab22d046 diff --git a/sci-misc/boinc/boinc-7.24.1-r2.ebuild b/sci-misc/boinc/boinc-7.24.1-r2.ebuild new file mode 100644 index 000000000000..3db0cac9f4ae --- /dev/null +++ b/sci-misc/boinc/boinc-7.24.1-r2.ebuild @@ -0,0 +1,194 @@ +# 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 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 ~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(-)] + virtual/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-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) + ) + 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/boinc-8.0.2.ebuild b/sci-misc/boinc/boinc-8.0.2.ebuild new file mode 100644 index 000000000000..e6856ddd59c7 --- /dev/null +++ b/sci-misc/boinc/boinc-8.0.2.ebuild @@ -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] + virtual/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 +} diff --git a/sci-misc/boinc/boinc-8.2.4.ebuild b/sci-misc/boinc/boinc-8.2.4.ebuild new file mode 100644 index 000000000000..0aa23baa6690 --- /dev/null +++ b/sci-misc/boinc/boinc-8.2.4.ebuild @@ -0,0 +1,188 @@ +# Copyright 2023-2026 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 selinux" + +DEPEND=" + >=acct-user/boinc-1 + app-misc/ca-certificates + dev-libs/openssl:= + net-misc/curl[ssl] + virtual/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} + selinux? ( sec-policy/selinux-boinc ) +" +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 "Docker applications support" \ + "app-containers/podman app-containers/podman-compose" \ + "app-containers/docker app-containers/docker-compose:2" + 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 +} diff --git a/sci-misc/boinc/boinc-9999.ebuild b/sci-misc/boinc/boinc-9999.ebuild new file mode 100644 index 000000000000..4ec9668b4c14 --- /dev/null +++ b/sci-misc/boinc/boinc-9999.ebuild @@ -0,0 +1,188 @@ +# Copyright 2023-2026 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 selinux" + +DEPEND=" + >=acct-user/boinc-1 + app-misc/ca-certificates + dev-libs/openssl:= + net-misc/curl[ssl] + virtual/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} + selinux? ( sec-policy/selinux-boinc ) +" +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 "Docker applications support" \ + "app-containers/podman app-containers/podman-compose" \ + "app-containers/docker app-containers/docker-compose:2" + 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 +} diff --git a/sci-misc/boinc/files/boinc.conf b/sci-misc/boinc/files/boinc.conf new file mode 100644 index 000000000000..856be30a2402 --- /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.confd-r1 b/sci-misc/boinc/files/boinc.confd-r1 new file mode 100644 index 000000000000..82276fedcc9b --- /dev/null +++ b/sci-misc/boinc/files/boinc.confd-r1 @@ -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" diff --git a/sci-misc/boinc/files/boinc.init b/sci-misc/boinc/files/boinc.init new file mode 100644 index 000000000000..c95b49825fbe --- /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/files/boinc.initd-r1 b/sci-misc/boinc/files/boinc.initd-r1 new file mode 100644 index 000000000000..64d72312f1d6 --- /dev/null +++ b/sci-misc/boinc/files/boinc.initd-r1 @@ -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 docker +} + +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 +} diff --git a/sci-misc/boinc/metadata.xml b/sci-misc/boinc/metadata.xml new file mode 100644 index 000000000000..d144ab568bc2 --- /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> |
