From 5dd7ed82e788ebad2e920e0f2db7468cc6547cfe Mon Sep 17 00:00:00 2001 From: root Date: Sat, 29 Dec 2012 02:13:48 -0800 Subject: Sat Dec 29 02:10:20 PST 2012 --- community/boinc/PKGBUILD | 74 ++++++++++++++++++++++ community/boinc/boinc-AM_CONDITIONAL.patch | 19 ++++++ community/boinc/boinc.bash | 99 ++++++++++++++++++++++++++++++ community/boinc/boinc.desktop | 16 +++++ community/boinc/boinc.install | 23 +++++++ community/boinc/boinc.rc | 52 ++++++++++++++++ community/boinc/boinc.service | 10 +++ 7 files changed, 293 insertions(+) create mode 100644 community/boinc/PKGBUILD create mode 100644 community/boinc/boinc-AM_CONDITIONAL.patch create mode 100644 community/boinc/boinc.bash create mode 100644 community/boinc/boinc.desktop create mode 100644 community/boinc/boinc.install create mode 100644 community/boinc/boinc.rc create mode 100644 community/boinc/boinc.service (limited to 'community/boinc') diff --git a/community/boinc/PKGBUILD b/community/boinc/PKGBUILD new file mode 100644 index 000000000..7e24b51c0 --- /dev/null +++ b/community/boinc/PKGBUILD @@ -0,0 +1,74 @@ +# $Id: PKGBUILD 79673 2012-11-11 01:08:11Z fyan $ +# Maintainer: Felix Yan +# Contributor: Jaroslav Lichtblau +# Contributor: Michal Krenek + +pkgname=boinc +pkgver=7.0.28 +pkgrel=1 +pkgdesc="Berkeley Open Infrastructure for Network Computing for desktop with X" +arch=('i686' 'x86_64') +url="http://boinc.berkeley.edu/" +license=('LGPL') +depends=('curl' 'wxgtk' 'libnotify' 'libxss' 'sqlite') +makedepends=('curl' 'libxslt' 'perl-xml-sax' 'subversion' 'wxgtk' 'libnotify') +options=('!libtool') +install=$pkgname.install +source=(boinc.rc boinc.bash boinc.desktop boinc.service boinc-AM_CONDITIONAL.patch) + +_svnroot="http://boinc.berkeley.edu/svn/tags" +_svnmod="boinc_core_release_${pkgver//./_}" + +build() { + cd ${srcdir} + + msg "Connecting to boinc.berkeley.edu SVN server..." + svn co ${_svnroot}/${_svnmod} || (error "SVN checkout failed" && return 1) + msg "SVN checkout done or server timeout" + + msg "Starting make..." + rm -fr ${_svnmod}-build + cp -r $_svnmod $_svnmod-build + cd $_svnmod-build + + patch -p1 -i ${srcdir}/boinc-AM_CONDITIONAL.patch + + ./_autosetup + + ./configure --prefix=/usr --disable-server --enable-unicode --with-ssl \ + --with-wxdir=/usr/lib --with-wx-config=$(which wx-config) \ + --disable-static --enable-client --enable-manager --with-x LDFLAGS='-lX11' + make +} + +package() { + cd ${srcdir}/$_svnmod-build + + make DESTDIR=${pkgdir} install + +#install rc-script + install -D -m755 ${srcdir}/$pkgname.rc ${pkgdir}/etc/rc.d/$pkgname + +#install systemd unit + install -D -m644 ${srcdir}/$pkgname.service ${pkgdir}/usr/lib/systemd/system/$pkgname.service + +#install bash-completion + install -D -m644 ${srcdir}/$pkgname.bash ${pkgdir}/usr/share/bash-completion/completions/$pkgname + +#install .desktop File + install -D -m644 ${srcdir}/${pkgname}.desktop \ + ${pkgdir}/usr/share/applications/${pkgname}.desktop + +#install icons + install -D -m644 ${srcdir}/${_svnmod}-build/clientgui/res/boincmgr.48x48.png \ + ${pkgdir}/usr/share/pixmaps/$pkgname.png + +#killing /etc/init.d directory + rm -rf ${pkgdir}/etc/init.d +} + +md5sums=('c6dadc333f982ea7b548602a70bd1e93' + '4d00e1aa4090a3f51feb20f5a541b9ee' + '17969d849f3cf27c2100b20a7b7a7e64' + '3d5cbab785cc8b004661b17c65883fd5' + 'e27047518dec54d4db38816487a28661') diff --git a/community/boinc/boinc-AM_CONDITIONAL.patch b/community/boinc/boinc-AM_CONDITIONAL.patch new file mode 100644 index 000000000..3ebf7c887 --- /dev/null +++ b/community/boinc/boinc-AM_CONDITIONAL.patch @@ -0,0 +1,19 @@ +--- A/configure.ac ++++ B/configure.ac +@@ -39,6 +39,7 @@ AC_PROG_CC + AC_PROG_CXX + AC_PROG_F77 + AC_PROG_CPP ++AC_PROG_OBJCXX + AC_PROG_MAKE_SET + SAH_LINKS + AC_LANG_PUSH(C) +@@ -744,6 +745,8 @@ AM_CONDITIONAL(ENABLE_LIBRARIES, [test " + AM_CONDITIONAL(INSTALL_HEADERS, [test "${enable_install_headers}" = yes]) + AM_CONDITIONAL(HAVE_CUDA_LIB, [test "${enable_client}" = yes -a -f ./coprocs/CUDA/posix/${boinc_platform}/libcudart.so]) + ++PKG_CHECK_MODULES([GTK2], [gtk+-2.0]) ++ + dnl ====================================================================== + dnl some more vodoo required for building portable client-binary (client, clientgui) + dnl ====================================================================== diff --git a/community/boinc/boinc.bash b/community/boinc/boinc.bash new file mode 100644 index 000000000..b614dd54c --- /dev/null +++ b/community/boinc/boinc.bash @@ -0,0 +1,99 @@ +# Source this file in BASH to get command completion (using tab) for +# boinc and boinccmd. Written by Frank S. Thomas . +# See also: http://boinc.berkeley.edu/trac/wiki/BashCommandCompletion + +_boinc() +{ + local cur prev opts + COMPREPLY=() + cur="${COMP_WORDS[COMP_CWORD]}" + prev="${COMP_WORDS[COMP_CWORD-1]}" + + opts="$(boinc_client --help | \ + sed -n -r 's/^[[:space:]]*(--[a-z_]*).*/\1/p')" + + # Handle options that require one or more arguments. + case "$prev" in + --attach_project|--detach_project|--reset_project|--update_prefs|\ + --gui_rpc_port) + return 0 + ;; + esac + + # Handle options that require two arguments. + if [[ COMP_CWORD -gt 1 ]]; then + pprev="${COMP_WORDS[COMP_CWORD-2]}" + + case "$pprev" in + --attach_project) + return 0 + ;; + esac + fi + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $(compgen -W "$opts" -- "$cur") ) + return 0 + fi +} +complete -F _boinc -o default boinc_client + +_boinccmd() +{ + local cur prev opts cmds + COMPREPLY=() + cur="${COMP_WORDS[COMP_CWORD]}" + prev="${COMP_WORDS[COMP_CWORD-1]}" + + opts="--host --passwd -h --help -V --version" + cmds="$(boinc_cmd --help 2>&1 | \ + sed -n -r 's/^[[:space:]]*(--[a-z_]*).*/\1/p')" + + # The following construct assures that: + # - no command follows if one of $opts or $cmds was given + # - after --host follows only one command or --passwd and one command + # - after --passwd follows only one command + if [[ $COMP_CWORD -eq 1 ]]; then + COMPREPLY=( $(compgen -W "$opts $cmds" -- "$cur") ) + return 0 + else + if [[ "${COMP_WORDS[@]}" =~ ".* --host .* --passwd .*" ]]; then + if [[ $COMP_CWORD -eq 5 ]]; then + COMPREPLY=( $(compgen -W "$cmds" -- "$cur") ) + fi + elif [[ "${COMP_WORDS[@]}" =~ ".* --passwd .*" ]]; then + if [[ $COMP_CWORD -eq 3 ]]; then + COMPREPLY=( $(compgen -W "$cmds" -- "$cur") ) + fi + elif [[ "${COMP_WORDS[@]}" =~ ".* --host .*" ]]; then + if [[ $COMP_CWORD -eq 3 ]]; then + COMPREPLY=( $(compgen -W "--passwd $cmds" -- "$cur") ) + fi + fi + fi + + # Handle options/commands that require one or more arguments. + case "$prev" in + --get_messages|--passwd) + return 0 + ;; + + --host) + _known_hosts + return 0 + ;; + + --set_run_mode|--set_network_mode) + COMPREPLY=( $(compgen -W "always auto never" -- "$cur") ) + return 0 + ;; + + --set_screensaver_mode) + COMPREPLY=( $(compgen -W "on off" -- "$cur") ) + return 0 + ;; + esac +} +complete -F _boinccmd boinc_cmd + +# vim: syntax=sh \ No newline at end of file diff --git a/community/boinc/boinc.desktop b/community/boinc/boinc.desktop new file mode 100644 index 000000000..267d56d6d --- /dev/null +++ b/community/boinc/boinc.desktop @@ -0,0 +1,16 @@ +[Desktop Entry] +Type=Application +Version=1.0 +Exec=/usr/bin/boincmgr +Path=/var/lib/boinc +Icon=boincmgr +Categories=System;Monitor;GTK; +Name=BOINC Manager +GenericName=BOINC monitor and control utility +GenericName[cs]=Monitorovací a ovládací nástroj pro BOINC +GenericName[de]=BOINC Überwachungs- und Kontrollprogramm +GenericName[pt]=Monitorização BOINC e utilitário de controlo +Comment=Configure or monitor a BOINC core client +Comment[cs]=Monitoruje a nastavuje klienta BOINC +Comment[de]=BOINC Basis Client konfigurieren oder überwachen +Comment[pt]=Configurar ou monitorizar o cliente básico do BOINC diff --git a/community/boinc/boinc.install b/community/boinc/boinc.install new file mode 100644 index 000000000..b54002ada --- /dev/null +++ b/community/boinc/boinc.install @@ -0,0 +1,23 @@ +# arg 1: the new package version +post_install() { + /usr/sbin/groupadd boinc 2>/dev/null || true + /usr/sbin/useradd -s /bin/bash -g boinc -d /var/lib/boinc boinc 2>/dev/null || true + + if [ ! -d /var/lib/boinc ]; then + install -d /var/lib/boinc + fi + chown -R boinc:boinc /var/lib/boinc + + echo '>>> Client RPC password can be found in /var/lib/boinc/gui_rpc_auth.cfg' + echo '>>> (this file is generated after first run of /etc/rc.d/boinc start).' + echo '>>> Remove it from gui_rpc_auth.cfg if you do not want to use password.' + echo '>>> See more details on the Arch Linux BOINC wiki page.' +} + +# arg 1: the old package version +post_remove() { + /usr/sbin/userdel boinc + /usr/sbin/groupdel boinc + + echo '>>> If you really do not want to run Boinc in the future, you may completely remove the directory "/var/lib/boinc".' +} diff --git a/community/boinc/boinc.rc b/community/boinc/boinc.rc new file mode 100644 index 000000000..160043a04 --- /dev/null +++ b/community/boinc/boinc.rc @@ -0,0 +1,52 @@ +#!/bin/bash + +. /etc/rc.conf +. /etc/rc.d/functions + + +BOINCUSER="boinc" +BOINCDIR="/var/lib/boinc" +PID=`pidof -o %PPID /usr/bin/boinc_client` +case "$1" in + attach) + echo "Enter the Project URL: " + read url + echo "Enter your Account Key: " + read key + echo "Attaching to project" + cd $BOINCDIR + su $BOINCUSER -c "boinccmd --project_attach $url $key" +;; + start) + stat_busy "Starting boinc" + if [ -z "$PID" ]; then + su $BOINCUSER -c "nice -n 19 /usr/bin/boinc_client --daemon --dir ${BOINCDIR} --redirectio" + else + false + fi + if [ $? -gt 0 ]; then + stat_fail + else + add_daemon boinc + stat_done + fi + ;; + stop) + stat_busy "Stopping boinc" + [ ! -z "$PID" ] && kill $PID &> /dev/null + if [ $? -gt 0 ]; then + stat_fail + else + rm_daemon boinc + stat_done + fi + ;; + restart) + $0 stop + sleep 2 + $0 start + ;; + *) + echo "usage: $0 {attach|start|stop|restart}" +esac +exit 0 diff --git a/community/boinc/boinc.service b/community/boinc/boinc.service new file mode 100644 index 000000000..12634ff5a --- /dev/null +++ b/community/boinc/boinc.service @@ -0,0 +1,10 @@ +[Unit] +Description=BOINC Daemon + +[Service] +User=boinc +Nice=19 +ExecStart=/usr/bin/boinc_client --dir /var/lib/boinc --redirectio + +[Install] +WantedBy=multi-user.target -- cgit v1.2.3-54-g00ecf