From 22c9a573ea1ae8d23c65941a8a9a25487ac5aeb4 Mon Sep 17 00:00:00 2001 From: "Anna (cybertailor) Vyalkova" Date: Wed, 21 May 2025 18:20:00 +0500 Subject: [PATCH] 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 Part-of: https://github.com/gentoo/gentoo/pull/42187 Signed-off-by: Nowa Ammerlaan --- profiles/arch/sparc/package.use.mask | 3 +- sci-misc/boinc/Manifest | 1 + sci-misc/boinc/boinc-8.0.2.ebuild | 182 ++++++++++++++++++ sci-misc/boinc/boinc-9999.ebuild | 145 ++++++-------- .../boinc/files/boinc-7.18-fix_webview.patch | 13 -- sci-misc/boinc/files/boinc.confd-r1 | 22 +++ sci-misc/boinc/files/boinc.initd-r1 | 102 ++++++++++ 7 files changed, 366 insertions(+), 102 deletions(-) create mode 100644 sci-misc/boinc/boinc-8.0.2.ebuild delete mode 100644 sci-misc/boinc/files/boinc-7.18-fix_webview.patch create mode 100644 sci-misc/boinc/files/boinc.confd-r1 create mode 100644 sci-misc/boinc/files/boinc.initd-r1 diff --git a/profiles/arch/sparc/package.use.mask b/profiles/arch/sparc/package.use.mask index 67f29ae842c28..65f9ce45dadf2 100644 --- a/profiles/arch/sparc/package.use.mask +++ b/profiles/arch/sparc/package.use.mask @@ -668,7 +668,8 @@ net-misc/networkmanager wext # Marius Brehler (2015-08-13) # missing keyword ->=sci-misc/boinc-7.4.42-r1 X +=sci-misc/boinc-8.0.2 gui # Pacho Ramos (2015-06-13) # Missing keywords, bug #513108 diff --git a/sci-misc/boinc/Manifest b/sci-misc/boinc/Manifest index 2b65757fcaea6..fd1a866558786 100644 --- a/sci-misc/boinc/Manifest +++ b/sci-misc/boinc/Manifest @@ -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 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 0000000000000..162bff3cc0edd --- /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] + 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 +} diff --git a/sci-misc/boinc/boinc-9999.ebuild b/sci-misc/boinc/boinc-9999.ebuild index 8f55b573d1107..31f5fa57ee1d0 100644 --- a/sci-misc/boinc/boinc-9999.ebuild +++ b/sci-misc/boinc/boinc-9999.ebuild @@ -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 diff --git a/sci-misc/boinc/files/boinc-7.18-fix_webview.patch b/sci-misc/boinc/files/boinc-7.18-fix_webview.patch deleted file mode 100644 index 0b1f82e1f6281..0000000000000 --- a/sci-misc/boinc/files/boinc-7.18-fix_webview.patch +++ /dev/null @@ -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 diff --git a/sci-misc/boinc/files/boinc.confd-r1 b/sci-misc/boinc/files/boinc.confd-r1 new file mode 100644 index 0000000000000..82276fedcc9b8 --- /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.initd-r1 b/sci-misc/boinc/files/boinc.initd-r1 new file mode 100644 index 0000000000000..2a71c7f5f079b --- /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 +} + +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 +}