summaryrefslogtreecommitdiff
path: root/community/boinc
diff options
context:
space:
mode:
Diffstat (limited to 'community/boinc')
-rw-r--r--community/boinc/PKGBUILD74
-rw-r--r--community/boinc/boinc-AM_CONDITIONAL.patch19
-rw-r--r--community/boinc/boinc.bash99
-rw-r--r--community/boinc/boinc.desktop16
-rw-r--r--community/boinc/boinc.install23
-rw-r--r--community/boinc/boinc.rc52
-rw-r--r--community/boinc/boinc.service10
7 files changed, 293 insertions, 0 deletions
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 <felixonmars@gmail.com>
+# Contributor: Jaroslav Lichtblau <dragonlord@aur.archlinux.org>
+# Contributor: Michal Krenek <mikos@sg1.cz>
+
+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 <fst@debian.org>.
+# 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