From 2e1256f586edfdfae022945f278e3d28ac997ecf Mon Sep 17 00:00:00 2001 From: Sven Eden Date: Tue, 6 Jun 2017 19:20:12 +0200 Subject: sci-misc/boinc: Fix bashisms in init script and enhance OpenCL support This commit fixes the following issues: - https://bugs.gentoo.org/show_bug.cgi?id=620818 The previous init script consisted of many bashisms that have been removed. - BOINC supports OpenCL unconditionally. This commit adds an informational text about its support to the ebuilds. - For OpenCL to work, the currently used libOpenCL.so must be symlinked into the BOINC working directory, just like libcudart.so. The init script has been updated to take care of symlinking libOpenCL.so. Closes: https://github.com/gentoo/gentoo/pull/4887 Package-Manager: Portage-2.3.6, Repoman-2.3.2 --- sci-misc/boinc/boinc-7.2.44-r4.ebuild | 166 ---------------------- sci-misc/boinc/boinc-7.2.44-r5.ebuild | 175 +++++++++++++++++++++++ sci-misc/boinc/boinc-7.4.52-r4.ebuild | 171 ----------------------- sci-misc/boinc/boinc-7.4.52-r5.ebuild | 180 ++++++++++++++++++++++++ sci-misc/boinc/boinc-7.6.33-r4.ebuild | 171 ----------------------- sci-misc/boinc/boinc-7.6.33-r5.ebuild | 181 ++++++++++++++++++++++++ sci-misc/boinc/files/boinc.init | 230 ------------------------------ sci-misc/boinc/files/boinc.init.in | 254 ++++++++++++++++++++++++++++++++++ sci-misc/boinc/metadata.xml | 2 +- 9 files changed, 791 insertions(+), 739 deletions(-) delete mode 100644 sci-misc/boinc/boinc-7.2.44-r4.ebuild create mode 100644 sci-misc/boinc/boinc-7.2.44-r5.ebuild delete mode 100644 sci-misc/boinc/boinc-7.4.52-r4.ebuild create mode 100644 sci-misc/boinc/boinc-7.4.52-r5.ebuild delete mode 100644 sci-misc/boinc/boinc-7.6.33-r4.ebuild create mode 100644 sci-misc/boinc/boinc-7.6.33-r5.ebuild delete mode 100644 sci-misc/boinc/files/boinc.init create mode 100644 sci-misc/boinc/files/boinc.init.in (limited to 'sci-misc') diff --git a/sci-misc/boinc/boinc-7.2.44-r4.ebuild b/sci-misc/boinc/boinc-7.2.44-r4.ebuild deleted file mode 100644 index 58ea2259b585..000000000000 --- a/sci-misc/boinc/boinc-7.2.44-r4.ebuild +++ /dev/null @@ -1,166 +0,0 @@ -# Copyright 1999-2017 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 - -EAPI=6 - -WX_GTK_VER=2.8 - -inherit autotools eutils linux-info systemd user versionator wxwidgets - -MY_PV=$(get_version_component_range 1-2) - -DESCRIPTION="The Berkeley Open Infrastructure for Network Computing" -HOMEPAGE="http://boinc.ssl.berkeley.edu/" -SRC_URI="https://github.com/BOINC/boinc/archive/client_release/${MY_PV}/${PV}.tar.gz -> ${P}.tar.gz - X? ( http://boinc.berkeley.edu/logo/boinc_glossy2_512_F.tif -> ${PN}.tif )" -RESTRICT="mirror" - -LICENSE="LGPL-2.1" -SLOT="0" -KEYWORDS="~amd64 ~ia64 ~ppc ~ppc64 ~sparc ~x86" -IUSE="X cuda curl_ssl_gnutls curl_ssl_libressl +curl_ssl_openssl static-libs" - -REQUIRED_USE="^^ ( curl_ssl_gnutls curl_ssl_libressl 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. -RDEPEND=" - !sci-misc/boinc-bin - !app-admin/quickswitch - >=app-misc/ca-certificates-20080809 - net-misc/curl[curl_ssl_gnutls(-)=,curl_ssl_libressl(-)=,-curl_ssl_nss(-),curl_ssl_openssl(-)=,-curl_ssl_axtls(-),-curl_ssl_cyassl(-)] - sys-apps/util-linux - sys-libs/zlib - cuda? ( - >=dev-util/nvidia-cuda-toolkit-2.1 - >=x11-drivers/nvidia-drivers-180.22 - ) - X? ( - dev-db/sqlite:3 - media-libs/freeglut - sys-libs/glibc:2.2 - virtual/jpeg:0= - x11-libs/gtk+:2 - >=x11-libs/libnotify-0.7 - x11-libs/wxGTK:${WX_GTK_VER}[X,opengl] - ) -" -DEPEND="${RDEPEND} - sys-devel/gettext - app-text/docbook-xml-dtd:4.4 - app-text/docbook2X - X? ( virtual/imagemagick-tools[png,tiff] ) -" - -S="${WORKDIR}/${PN}-client_release-${MY_PV}-${PV}" - -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 - - use X && need-wxwidgets unicode -} - -src_configure() { - 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) -} - -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 - convert "${DISTDIR}"/${PN}.tif -resize ${s}x${s} "${WORKDIR}"/boinc_${s}.png || die - 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 -rf "${ED%/}"/etc || die "rm failed" - - newinitd "${FILESDIR}"/${PN}.init ${PN} - newconfd "${FILESDIR}"/${PN}.conf ${PN} - systemd_dounit "${FILESDIR}"/${PN}.service -} - -pkg_preinst() { - enewgroup ${PN} - # note this works only for first install so we have to - # elog user about the need of being in video group - local groups="${PN}" - if use cuda; then - groups+=",video" - fi - enewuser ${PN} -1 -1 /var/lib/${PN} "${groups}" -} - -pkg_postinst() { - 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 - if use cuda; then - elog "To be able to use CUDA you should add boinc user to video group." - elog "Run as root:" - elog "gpasswd -a boinc video" - fi -} diff --git a/sci-misc/boinc/boinc-7.2.44-r5.ebuild b/sci-misc/boinc/boinc-7.2.44-r5.ebuild new file mode 100644 index 000000000000..a5b8a0a8c2dc --- /dev/null +++ b/sci-misc/boinc/boinc-7.2.44-r5.ebuild @@ -0,0 +1,175 @@ +# Copyright 1999-2017 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +EAPI=6 + +WX_GTK_VER=2.8 + +inherit autotools eutils linux-info systemd user versionator wxwidgets + +MY_PV=$(get_version_component_range 1-2) + +DESCRIPTION="The Berkeley Open Infrastructure for Network Computing" +HOMEPAGE="http://boinc.ssl.berkeley.edu/" +SRC_URI="https://github.com/BOINC/boinc/archive/client_release/${MY_PV}/${PV}.tar.gz -> ${P}.tar.gz + X? ( http://boinc.berkeley.edu/logo/boinc_glossy2_512_F.tif -> ${PN}.tif )" +RESTRICT="mirror" + +LICENSE="LGPL-2.1" +SLOT="0" +KEYWORDS="~amd64 ~ia64 ~ppc ~ppc64 ~sparc ~x86" +IUSE="X cuda curl_ssl_gnutls curl_ssl_libressl +curl_ssl_openssl static-libs" + +REQUIRED_USE="^^ ( curl_ssl_gnutls curl_ssl_libressl 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. +RDEPEND=" + !sci-misc/boinc-bin + !app-admin/quickswitch + >=app-misc/ca-certificates-20080809 + net-misc/curl[curl_ssl_gnutls(-)=,curl_ssl_libressl(-)=,-curl_ssl_nss(-),curl_ssl_openssl(-)=,-curl_ssl_axtls(-),-curl_ssl_cyassl(-)] + sys-apps/util-linux + sys-libs/zlib + cuda? ( + >=dev-util/nvidia-cuda-toolkit-2.1 + >=x11-drivers/nvidia-drivers-180.22 + ) + X? ( + dev-db/sqlite:3 + media-libs/freeglut + sys-libs/glibc:2.2 + virtual/jpeg:0= + x11-libs/gtk+:2 + >=x11-libs/libnotify-0.7 + x11-libs/wxGTK:${WX_GTK_VER}[X,opengl] + ) +" +DEPEND="${RDEPEND} + sys-devel/gettext + app-text/docbook-xml-dtd:4.4 + app-text/docbook2X + X? ( virtual/imagemagick-tools[png,tiff] ) +" + +S="${WORKDIR}/${PN}-client_release-${MY_PV}-${PV}" + +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 + + use X && need-wxwidgets unicode +} + +src_configure() { + 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) +} + +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 + convert "${DISTDIR}"/${PN}.tif -resize ${s}x${s} "${WORKDIR}"/boinc_${s}.png || die + 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 -rf "${ED%/}"/etc || die "rm failed" + + sed -e "s/@libdir@/$(get_libdir)/" "${FILESDIR}"/${PN}.init.in > ${PN}.init || die + newinitd ${PN}.init ${PN} + newconfd "${FILESDIR}"/${PN}.conf ${PN} + systemd_dounit "${FILESDIR}"/${PN}.service +} + +pkg_preinst() { + enewgroup ${PN} + # note this works only for first install so we have to + # elog user about the need of being in video group + local groups="${PN}" + if use cuda; then + groups+=",video" + fi + enewuser ${PN} -1 -1 /var/lib/${PN} "${groups}" +} + +pkg_postinst() { + 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 + if use cuda; then + elog "To be able to use CUDA you should add boinc user to video group." + elog "Run as root:" + elog "gpasswd -a boinc video" + fi + # Add information about BOINC supporting OpenCL + elog "BOINC supports OpenCL. To use it you have to eselect" + if use cuda; then + elog "nvidia as the OpenCL implementation, as you are using CUDA." + else + elog "the correct OpenCL implementation for your graphic card." + fi + elog +} diff --git a/sci-misc/boinc/boinc-7.4.52-r4.ebuild b/sci-misc/boinc/boinc-7.4.52-r4.ebuild deleted file mode 100644 index eacfd2ea8624..000000000000 --- a/sci-misc/boinc/boinc-7.4.52-r4.ebuild +++ /dev/null @@ -1,171 +0,0 @@ -# Copyright 1999-2017 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 - -EAPI=6 - -WX_GTK_VER=3.0 - -inherit autotools eutils linux-info systemd user versionator wxwidgets - -MY_PV=$(get_version_component_range 1-2) - -DESCRIPTION="The Berkeley Open Infrastructure for Network Computing" -HOMEPAGE="http://boinc.ssl.berkeley.edu/" -SRC_URI="https://github.com/BOINC/boinc/archive/client_release/${MY_PV}/${PV}.tar.gz -> ${P}.tar.gz - X? ( http://boinc.berkeley.edu/logo/boinc_glossy2_512_F.tif -> ${PN}.tif )" -RESTRICT="mirror" - -LICENSE="LGPL-2.1" -SLOT="0" -KEYWORDS="~amd64 ~ia64 ~ppc ~ppc64 ~sparc ~x86" -IUSE="X cuda curl_ssl_gnutls curl_ssl_libressl +curl_ssl_openssl static-libs" - -REQUIRED_USE="^^ ( curl_ssl_gnutls curl_ssl_libressl 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. -RDEPEND=" - !sci-misc/boinc-bin - !app-admin/quickswitch - >=app-misc/ca-certificates-20080809 - net-misc/curl[curl_ssl_gnutls(-)=,curl_ssl_libressl(-)=,-curl_ssl_nss(-),curl_ssl_openssl(-)=,-curl_ssl_axtls(-),-curl_ssl_cyassl(-)] - sys-apps/util-linux - sys-libs/zlib - cuda? ( - >=dev-util/nvidia-cuda-toolkit-2.1 - >=x11-drivers/nvidia-drivers-180.22 - ) - X? ( - dev-db/sqlite:3 - media-libs/freeglut - sys-libs/glibc:2.2 - virtual/jpeg:0= - x11-libs/gtk+:2 - >=x11-libs/libnotify-0.7 - x11-libs/wxGTK:${WX_GTK_VER}[X,opengl,webkit] - ) -" -DEPEND="${RDEPEND} - sys-devel/gettext - app-text/docbook-xml-dtd:4.4 - app-text/docbook2X - X? ( virtual/imagemagick-tools[png,tiff] ) -" - -PATCHES=( - # >=x11-libs/wxGTK-3.0.2.0-r3 has webview removed, bug 587462 - "${FILESDIR}"/fix_webview.patch -) - -S="${WORKDIR}/${PN}-client_release-${MY_PV}-${PV}" - -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 - - use X && need-wxwidgets unicode -} - -src_configure() { - 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) -} - -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 - convert "${DISTDIR}"/${PN}.tif -resize ${s}x${s} "${WORKDIR}"/boinc_${s}.png || die - 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 -rf "${ED%/}"/etc || die "rm failed" - - newinitd "${FILESDIR}"/${PN}.init ${PN} - newconfd "${FILESDIR}"/${PN}.conf ${PN} - systemd_dounit "${FILESDIR}"/${PN}.service -} - -pkg_preinst() { - enewgroup ${PN} - # note this works only for first install so we have to - # elog user about the need of being in video group - local groups="${PN}" - if use cuda; then - groups+=",video" - fi - enewuser ${PN} -1 -1 /var/lib/${PN} "${groups}" -} - -pkg_postinst() { - 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 - if use cuda; then - elog "To be able to use CUDA you should add boinc user to video group." - elog "Run as root:" - elog "gpasswd -a boinc video" - fi -} diff --git a/sci-misc/boinc/boinc-7.4.52-r5.ebuild b/sci-misc/boinc/boinc-7.4.52-r5.ebuild new file mode 100644 index 000000000000..55454c00e456 --- /dev/null +++ b/sci-misc/boinc/boinc-7.4.52-r5.ebuild @@ -0,0 +1,180 @@ +# Copyright 1999-2017 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +EAPI=6 + +WX_GTK_VER=3.0 + +inherit autotools eutils linux-info systemd user versionator wxwidgets + +MY_PV=$(get_version_component_range 1-2) + +DESCRIPTION="The Berkeley Open Infrastructure for Network Computing" +HOMEPAGE="http://boinc.ssl.berkeley.edu/" +SRC_URI="https://github.com/BOINC/boinc/archive/client_release/${MY_PV}/${PV}.tar.gz -> ${P}.tar.gz + X? ( http://boinc.berkeley.edu/logo/boinc_glossy2_512_F.tif -> ${PN}.tif )" +RESTRICT="mirror" + +LICENSE="LGPL-2.1" +SLOT="0" +KEYWORDS="~amd64 ~ia64 ~ppc ~ppc64 ~sparc ~x86" +IUSE="X cuda curl_ssl_gnutls curl_ssl_libressl +curl_ssl_openssl static-libs" + +REQUIRED_USE="^^ ( curl_ssl_gnutls curl_ssl_libressl 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. +RDEPEND=" + !sci-misc/boinc-bin + !app-admin/quickswitch + >=app-misc/ca-certificates-20080809 + net-misc/curl[curl_ssl_gnutls(-)=,curl_ssl_libressl(-)=,-curl_ssl_nss(-),curl_ssl_openssl(-)=,-curl_ssl_axtls(-),-curl_ssl_cyassl(-)] + sys-apps/util-linux + sys-libs/zlib + cuda? ( + >=dev-util/nvidia-cuda-toolkit-2.1 + >=x11-drivers/nvidia-drivers-180.22 + ) + X? ( + dev-db/sqlite:3 + media-libs/freeglut + sys-libs/glibc:2.2 + virtual/jpeg:0= + x11-libs/gtk+:2 + >=x11-libs/libnotify-0.7 + x11-libs/wxGTK:${WX_GTK_VER}[X,opengl,webkit] + ) +" +DEPEND="${RDEPEND} + sys-devel/gettext + app-text/docbook-xml-dtd:4.4 + app-text/docbook2X + X? ( virtual/imagemagick-tools[png,tiff] ) +" + +PATCHES=( + # >=x11-libs/wxGTK-3.0.2.0-r3 has webview removed, bug 587462 + "${FILESDIR}"/fix_webview.patch +) + +S="${WORKDIR}/${PN}-client_release-${MY_PV}-${PV}" + +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 + + use X && need-wxwidgets unicode +} + +src_configure() { + 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) +} + +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 + convert "${DISTDIR}"/${PN}.tif -resize ${s}x${s} "${WORKDIR}"/boinc_${s}.png || die + 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 -rf "${ED%/}"/etc || die "rm failed" + + sed -e "s/@libdir@/$(get_libdir)/" "${FILESDIR}"/${PN}.init.in > ${PN}.init || die + newinitd ${PN}.init ${PN} + newconfd "${FILESDIR}"/${PN}.conf ${PN} + systemd_dounit "${FILESDIR}"/${PN}.service +} + +pkg_preinst() { + enewgroup ${PN} + # note this works only for first install so we have to + # elog user about the need of being in video group + local groups="${PN}" + if use cuda; then + groups+=",video" + fi + enewuser ${PN} -1 -1 /var/lib/${PN} "${groups}" +} + +pkg_postinst() { + 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 + if use cuda; then + elog "To be able to use CUDA you should add boinc user to video group." + elog "Run as root:" + elog "gpasswd -a boinc video" + fi + # Add information about BOINC supporting OpenCL + elog "BOINC supports OpenCL. To use it you have to eselect" + if use cuda; then + elog "nvidia as the OpenCL implementation, as you are using CUDA." + else + elog "the correct OpenCL implementation for your graphic card." + fi + elog +} diff --git a/sci-misc/boinc/boinc-7.6.33-r4.ebuild b/sci-misc/boinc/boinc-7.6.33-r4.ebuild deleted file mode 100644 index eacfd2ea8624..000000000000 --- a/sci-misc/boinc/boinc-7.6.33-r4.ebuild +++ /dev/null @@ -1,171 +0,0 @@ -# Copyright 1999-2017 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 - -EAPI=6 - -WX_GTK_VER=3.0 - -inherit autotools eutils linux-info systemd user versionator wxwidgets - -MY_PV=$(get_version_component_range 1-2) - -DESCRIPTION="The Berkeley Open Infrastructure for Network Computing" -HOMEPAGE="http://boinc.ssl.berkeley.edu/" -SRC_URI="https://github.com/BOINC/boinc/archive/client_release/${MY_PV}/${PV}.tar.gz -> ${P}.tar.gz - X? ( http://boinc.berkeley.edu/logo/boinc_glossy2_512_F.tif -> ${PN}.tif )" -RESTRICT="mirror" - -LICENSE="LGPL-2.1" -SLOT="0" -KEYWORDS="~amd64 ~ia64 ~ppc ~ppc64 ~sparc ~x86" -IUSE="X cuda curl_ssl_gnutls curl_ssl_libressl +curl_ssl_openssl static-libs" - -REQUIRED_USE="^^ ( curl_ssl_gnutls curl_ssl_libressl 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. -RDEPEND=" - !sci-misc/boinc-bin - !app-admin/quickswitch - >=app-misc/ca-certificates-20080809 - net-misc/curl[curl_ssl_gnutls(-)=,curl_ssl_libressl(-)=,-curl_ssl_nss(-),curl_ssl_openssl(-)=,-curl_ssl_axtls(-),-curl_ssl_cyassl(-)] - sys-apps/util-linux - sys-libs/zlib - cuda? ( - >=dev-util/nvidia-cuda-toolkit-2.1 - >=x11-drivers/nvidia-drivers-180.22 - ) - X? ( - dev-db/sqlite:3 - media-libs/freeglut - sys-libs/glibc:2.2 - virtual/jpeg:0= - x11-libs/gtk+:2 - >=x11-libs/libnotify-0.7 - x11-libs/wxGTK:${WX_GTK_VER}[X,opengl,webkit] - ) -" -DEPEND="${RDEPEND} - sys-devel/gettext - app-text/docbook-xml-dtd:4.4 - app-text/docbook2X - X? ( virtual/imagemagick-tools[png,tiff] ) -" - -PATCHES=( - # >=x11-libs/wxGTK-3.0.2.0-r3 has webview removed, bug 587462 - "${FILESDIR}"/fix_webview.patch -) - -S="${WORKDIR}/${PN}-client_release-${MY_PV}-${PV}" - -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 - - use X && need-wxwidgets unicode -} - -src_configure() { - 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) -} - -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 - convert "${DISTDIR}"/${PN}.tif -resize ${s}x${s} "${WORKDIR}"/boinc_${s}.png || die - 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 -rf "${ED%/}"/etc || die "rm failed" - - newinitd "${FILESDIR}"/${PN}.init ${PN} - newconfd "${FILESDIR}"/${PN}.conf ${PN} - systemd_dounit "${FILESDIR}"/${PN}.service -} - -pkg_preinst() { - enewgroup ${PN} - # note this works only for first install so we have to - # elog user about the need of being in video group - local groups="${PN}" - if use cuda; then - groups+=",video" - fi - enewuser ${PN} -1 -1 /var/lib/${PN} "${groups}" -} - -pkg_postinst() { - 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 - if use cuda; then - elog "To be able to use CUDA you should add boinc user to video group." - elog "Run as root:" - elog "gpasswd -a boinc video" - fi -} diff --git a/sci-misc/boinc/boinc-7.6.33-r5.ebuild b/sci-misc/boinc/boinc-7.6.33-r5.ebuild new file mode 100644 index 000000000000..59a13dfeba92 --- /dev/null +++ b/sci-misc/boinc/boinc-7.6.33-r5.ebuild @@ -0,0 +1,181 @@ +# Copyright 1999-2017 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +EAPI=6 + +WX_GTK_VER=3.0 + +inherit autotools eutils linux-info systemd user versionator wxwidgets + +MY_PV=$(get_version_component_range 1-2) + +DESCRIPTION="The Berkeley Open Infrastructure for Network Computing" +HOMEPAGE="http://boinc.ssl.berkeley.edu/" +SRC_URI="https://github.com/BOINC/boinc/archive/client_release/${MY_PV}/${PV}.tar.gz -> ${P}.tar.gz + X? ( http://boinc.berkeley.edu/logo/boinc_glossy2_512_F.tif -> ${PN}.tif )" +RESTRICT="mirror" + +LICENSE="LGPL-2.1" +SLOT="0" +KEYWORDS="~amd64 ~ia64 ~ppc ~ppc64 ~sparc ~x86" +IUSE="X cuda curl_ssl_gnutls curl_ssl_libressl +curl_ssl_openssl static-libs" + +REQUIRED_USE="^^ ( curl_ssl_gnutls curl_ssl_libressl 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. +RDEPEND=" + !sci-misc/boinc-bin + !app-admin/quickswitch + >=app-misc/ca-certificates-20080809 + net-misc/curl[curl_ssl_gnutls(-)=,curl_ssl_libressl(-)=,-curl_ssl_nss(-),curl_ssl_openssl(-)=,-curl_ssl_axtls(-),-curl_ssl_cyassl(-)] + sys-apps/util-linux + sys-libs/zlib + cuda? ( + >=dev-util/nvidia-cuda-toolkit-2.1 + >=x11-drivers/nvidia-drivers-180.22 + ) + X? ( + dev-db/sqlite:3 + media-libs/freeglut + sys-libs/glibc:2.2 + virtual/jpeg:0= + x11-libs/gtk+:2 + >=x11-libs/libnotify-0.7 + x11-libs/wxGTK:${WX_GTK_VER}[X,opengl,webkit] + ) +" +DEPEND="${RDEPEND} + sys-devel/gettext + app-text/docbook-xml-dtd:4.4 + app-text/docbook2X + X? ( virtual/imagemagick-tools[png,tiff] ) +" + +PATCHES=( + # >=x11-libs/wxGTK-3.0.2.0-r3 has webview removed, bug 587462 + "${FILESDIR}"/fix_webview.patch +) + +S="${WORKDIR}/${PN}-client_release-${MY_PV}-${PV}" + +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 + + use X && need-wxwidgets unicode +} + +src_configure() { + 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) +} + +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 + convert "${DISTDIR}"/${PN}.tif -resize ${s}x${s} "${WORKDIR}"/boinc_${s}.png || die + 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 -rf "${ED%/}"/etc || die "rm failed" + + sed -e "s/@libdir@/$(get_libdir)/" "${FILESDIR}"/${PN}.init.in > ${PN}.init || die + newinitd ${PN}.init ${PN} + newconfd "${FILESDIR}"/${PN}.conf ${PN} + systemd_dounit "${FILESDIR}"/${PN}.service +} + +pkg_preinst() { + enewgroup ${PN} + # note this works only for first install so we have to + # elog user about the need of being in video group + local groups="${PN}" + if use cuda; then + groups+=",video" + fi + enewuser ${PN} -1 -1 /var/lib/${PN} "${groups}" +} + +pkg_postinst() { + 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 + if use cuda; then + elog "To be able to use CUDA you should add boinc user to video group." + elog "Run as root:" + elog "gpasswd -a boinc video" + elog + fi + # Add information about BOINC supporting OpenCL + elog "BOINC supports OpenCL. To use it you have to eselect" + if use cuda; then + elog "nvidia as the OpenCL implementation, as you are using CUDA." + else + elog "the correct OpenCL implementation for your graphic card." + fi + elog +} diff --git a/sci-misc/boinc/files/boinc.init b/sci-misc/boinc/files/boinc.init deleted file mode 100644 index 23450a6857cc..000000000000 --- a/sci-misc/boinc/files/boinc.init +++ /dev/null @@ -1,230 +0,0 @@ -#!/sbin/openrc-run -# Copyright 1999-2016 Gentoo Foundation -# 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() { - if [[ ! -d "${RUNTIMEDIR}" ]]; then - einfo "Directory ${RUNTIMEDIR} does not exist, creating now." - mkdir -p "${RUNTIMEDIR}" - if [[ ! -d "${RUNTIMEDIR}" ]]; then - eeror "Directory ${RUNTIMEDIR} could not be created!" - return 1 - fi - - # ensure proper ownership - chown "${USER}:${GROUP}" "${RUNTIMEDIR}" - fi - - if [[ ! -e "${RUNTIMEDIR}"/ca-bundle.crt ]]; then - ln -s /etc/ssl/certs/ca-certificates.crt "${RUNTIMEDIR}"/ca-bundle.crt - fi - - return 0 -} - - -cuda_check() { - local libtarget="${RUNTIMEDIR}/libcudart.so" - local libsource="$(ls -t /opt/cuda/lib*/libcudart.so 2>/dev/null | head -n 1)" - - # Remove a broken symlink - if [[ -h "${libtarget}" ]] \ - && [[ "${libsource}" != "$(readlink "${libtarget}")" ]]; then - rm -f "${libtarget}" - fi - - # symlink the correct path - if [[ -n "${libsource}" ]] \ - && [[ -f "${libsource}" ]] \ - && [[ ! -h "${libtarget}" ]]; then - ln -snf "$libsource" "${libtarget}" - fi -} - - -env_check() { - # Make sure the configuration is sane - : ${USER:="boinc"} - : ${GROUP:="boinc"} - : ${RUNTIMEDIR:="/var/lib/boinc"} - : ${BOINCBIN:="$(which boinc_client)"} - : ${BOINC_PIDFILE:="/var/run/boinc_client.pid"} - : ${BOINCCMD:="$(which /usr/bin/boinccmd)"} - : ${ALLOW_REMOTE_RPC:="yes"} - : ${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 -} - - -need_passwd_arg() { - local vers=$(${BOINCBIN} --version | tr -d .) - [ -z "$vers" ] && vers="00" - [ $(expr substr "$vers" 1 2) -lt 74 ] && return 0 - - # From version 7.4 on, the default is to read - # gui_rpc_auth.cfg for the password. - - return 1 -} - - -start_pre() { - env_check || return 1 - create_work_directory || return 1 - cuda_check - - 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 password="" - 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 - - if need_passwd_arg; then - password="--passwd \"$(cat "${RUNTIMEDIR}/gui_rpc_auth.cfg")\"" - fi - - ebegin "${RC_SVCNAME}: Attaching to project" - start-stop-daemon --user "${USER}:${GROUP}" --quiet \ - --chdir "${RUNTIMEDIR}" --exec "${BOINCCMD}" \ - -- ${password} --project_attach ${url} ${key} - eend $? - - sleep 10s - tail "${RUNTIMEDIR}/stdoutdae.txt" -} - - -stop() { - local password="" - local stop_timeout="SIGTERM/60/SIGTERM/30/SIGKILL/30" - - env_check || return 1 - - if need_passwd_arg; then - password="--passwd \"$(cat "${RUNTIMEDIR}/gui_rpc_auth.cfg")\"" - fi - - ebegin "Stopping ${RC_SVCNAME}" - start-stop-daemon --stop --quiet --progress \ - --retry $stop_timeout \ - --pidfile "${BOINC_PIDFILE}" - eend $? -} - - -resume() { - env_check || return 1 - - local password="" - - if need_passwd_arg; then - password="--passwd \"$(cat "${RUNTIMEDIR}/gui_rpc_auth.cfg")\"" - fi - - local master_urls=( \ - $(cd "${RUNTIMEDIR}" ; \ - "${BOINCCMD}" ${password} --get_project_status | \ - sed -n 's/\s*master URL: //p') \ - ) - - for url in "${master_urls[@]}"; do - ebegin "Resuming $url" - start-stop-daemon --user "${USER}:${GROUP}" --quiet \ - --chdir "${RUNTIMEDIR}" --exec "${BOINCCMD}" \ - -- ${password} --project ${url} resume - eend $? - done -} - - -suspend() { - env_check || return 1 - - local password="" - - if need_passwd_arg; then - password="--passwd \"$(cat "${RUNTIMEDIR}/gui_rpc_auth.cfg")\"" - fi - - local master_urls=( \ - $(cd "${RUNTIMEDIR}" ; \ - "${BOINCCMD}" ${password} --get_project_status | \ - sed -n 's/\s*master URL: //p') \ - ) - - for url in "${master_urls[@]}"; do - ebegin "Suspending $url" - start-stop-daemon --user "${USER}:${GROUP}" --quiet \ - --chdir "${RUNTIMEDIR}" --exec "${BOINCCMD}" \ - -- ${password} --project ${url} suspend - eend $? - done -} diff --git a/sci-misc/boinc/files/boinc.init.in b/sci-misc/boinc/files/boinc.init.in new file mode 100644 index 000000000000..a5ea8dd13bb5 --- /dev/null +++ b/sci-misc/boinc/files/boinc.init.in @@ -0,0 +1,254 @@ +#!/sbin/openrc-run +# Copyright 1999-2017 Gentoo Foundation +# 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 + eeror "Directory ${RUNTIMEDIR} could not be created!" + return 1 + fi + + # ensure proper ownership + if ! chown "${USER}:${GROUP}" "${RUNTIMEDIR}"; then + eeror "Changing ownership of '${RUNTIMEDIR}' to '${USER}:${GROUP}' failed!" + return 1 + fi + 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 + eeror "Symlinking '${sslcrt}' failed!" + return 1 + fi + fi + + return 0 +} + +fix_lib_symlinks() { + local src="$1" + local tgt="$2" + + # If the source does not exist, we can not do anything + if [ ! -f "${src}" ] ; then + return 1 + fi + + # Check whether the symlink is already there and in order + if [ -L "${tgt}" ] ; then + if [ -f "${tgt}" ] ; then + return 0 + fi + + # Remove broken symlink + if ! rm -f "${tgt}"; then + eeror "Removing '${tgt}' failed!" + return 1 + fi + fi + + # symlink the correct path + if ! ln -snf "${src}" "${tgt}"; then + eeror "Symlinking '${src}' to '${tgt}' failed!" + return 1 + fi + + return 0 +} + +cuda_check() { + local libsource="/opt/cuda/@libdir@/libcudart.so" + local libtarget="${RUNTIMEDIR}/libcudart.so" + + fix_lib_symlinks "${libsource}" "${libtarget}" || return 1 + return 0 +} + +opencl_check() { + local libsource="/usr/@libdir@/libOpenCL.so" + local libtarget="${RUNTIMEDIR}/libOpenCL.so" + + fix_lib_symlinks "${libsource}" "${libtarget}" || return 1 + return 0 +} + +env_check() { + # Make sure the configuration is sane + : ${USER:="boinc"} + : ${GROUP:="boinc"} + : ${RUNTIMEDIR:="/var/lib/boinc"} + : ${BOINCBIN:="$(which boinc_client)"} + : ${BOINC_PIDFILE:="/var/run/boinc_client.pid"} + : ${BOINCCMD:="$(which /usr/bin/boinccmd)"} + : ${ALLOW_REMOTE_RPC:="yes"} + : ${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 +} + +need_passwd_arg() { + local vers=$(${BOINCBIN} --version | tr -d .) + [ -z "${vers}" ] && vers="00" + [ $(expr substr "${vers}" 1 2) -lt 74 ] && return 0 + + # From version 7.4 on, the default is to read + # gui_rpc_auth.cfg for the password. + + return 1 +} + +start_pre() { + env_check || return 1 + create_work_directory || return 1 + cuda_check || einfo "CUDA not supported" + opencl_check || einfo "OpenCL not supported" + + 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 password="" + 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 + + if need_passwd_arg; then + password="--passwd \"$(cat "${RUNTIMEDIR}/gui_rpc_auth.cfg")\"" + fi + + ebegin "${RC_SVCNAME}: Attaching to project" + start-stop-daemon --user "${USER}:${GROUP}" --quiet \ + --chdir "${RUNTIMEDIR}" --exec "${BOINCCMD}" \ + -- ${password} --project_attach ${url} ${key} + eend $? + + sleep 10 + tail "${RUNTIMEDIR}/stdoutdae.txt" +} + +stop() { + local password="" + local stop_timeout="SIGTERM/60/SIGTERM/30/SIGKILL/30" + + env_check || return 1 + + if need_passwd_arg; then + password="--passwd \"$(cat "${RUNTIMEDIR}/gui_rpc_auth.cfg")\"" + fi + + ebegin "Stopping ${RC_SVCNAME}" + start-stop-daemon --stop --quiet --progress \ + --retry ${stop_timeout} \ + --pidfile "${BOINC_PIDFILE}" + eend $? +} + +resume() { + env_check || return 1 + + local password="" + + if need_passwd_arg; then + password="--passwd \"$(cat "${RUNTIMEDIR}/gui_rpc_auth.cfg")\"" + fi + + for url in $(cd "${RUNTIMEDIR}" ; \ + "${BOINCCMD}" ${password} --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}" \ + -- ${password} --project ${url} resume + eend $? + done +} + +suspend() { + env_check || return 1 + + local password="" + + if need_passwd_arg; then + password="--passwd \"$(cat "${RUNTIMEDIR}/gui_rpc_auth.cfg")\"" + fi + + for url in $(cd "${RUNTIMEDIR}" ; \ + "${BOINCCMD}" ${password} --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}" \ + -- ${password} --project ${url} suspend + eend $? + done +} diff --git a/sci-misc/boinc/metadata.xml b/sci-misc/boinc/metadata.xml index c65c76f57f7a..5e74c0cc24c0 100644 --- a/sci-misc/boinc/metadata.xml +++ b/sci-misc/boinc/metadata.xml @@ -19,7 +19,7 @@ Use nvidia cuda toolkit for speeding up computations. NOTE: works only for subset of nvidia graphic cards so make sure your card is supported before opening a bug about it. - + BOINC/boinc -- cgit v1.2.3-65-gdbad