diff --git a/community/boinc/PKGBUILD b/community/boinc/PKGBUILD new file mode 100644 index 000000000..6495b0185 --- /dev/null +++ b/community/boinc/PKGBUILD @@ -0,0 +1,136 @@ +# $Id$ +# Maintainer: Felix Yan +# Contributor: Jaroslav Lichtblau +# Contributor: Michal Krenek + +# ALARM: Kevin Mihelich +# - set boinc alternate platform to match their platforms: +# https://boinc.berkeley.edu/trac/wiki/BoincPlatforms + +pkgbase=boinc +pkgname=(boinc boinc-nox) +pkgver=7.6.12 +_tag="client_release/7.6/$pkgver" +pkgrel=1.1 +arch=('i686' 'x86_64') +url="http://boinc.berkeley.edu/" +license=('LGPL') +makedepends=('libxslt' 'perl-xml-sax' 'git' 'libxss' 'libnotify' 'wxgtk' 'webkitgtk2' 'sqlite3' 'curl' 'inetutils' 'libxmu' 'freeglut' 'glu' 'mesa') +install=$pkgbase.install +options=('!staticlibs') +source=("git+https://github.com/BOINC/boinc.git#tag=$_tag" + boinc.bash + boinc.desktop + boinc.service + boinc.sysusers + boinc-AM_CONDITIONAL.patch) +md5sums=('SKIP' + '4d00e1aa4090a3f51feb20f5a541b9ee' + 'db62de2f08117e6379a3c613b58fa7ff' + '3d5cbab785cc8b004661b17c65883fd5' + '240f952d38c5814cc3d8cd1668fe2154' + 'e27047518dec54d4db38816487a28661') + +prepare() { + cd "$srcdir/$pkgbase" + patch -Np1 -i "${srcdir}/boinc-AM_CONDITIONAL.patch" + + ./_autosetup + + cp -r "$srcdir/$pkgbase" "$srcdir/$pkgbase-nox" +} + +build() { + if [[ $CARCH == "arm" ]]; then + CONFIG="--with-boinc-alt-platform=arm-linux-gnueabisf" + else + CONFIG="--with-boinc-alt-platform=arm-linux-gnueabihf" + fi + + cd "$srcdir/$pkgbase" + LDFLAGS='-lX11' ./configure \ + --prefix=/usr \ + --enable-libraries \ + --enable-unicode \ + --enable-shared \ + --enable-dynamic-client-linkage \ + --enable-client \ + --enable-manager \ + --disable-static \ + --disable-server \ + --with-ssl \ + --with-x \ + --with-wxdir=/usr/lib \ + --with-wx-config=$(which wx-config) \ + ${CONFIG} + make + + # Build boinc-nox + cd "$srcdir/$pkgbase-nox" + PKG_CONFIG=/usr/bin/pkg-config ./configure \ + --prefix=/usr \ + --enable-libraries \ + --enable-unicode \ + --enable-shared \ + --enable-dynamic-client-linkage \ + --enable-client \ + --disable-server \ + --disable-xss \ + --disable-static \ + --disable-manager \ + --with-ssl \ + --without-wxdir \ + --without-x \ + ${CONFIG} + make +} + +package_boinc() { + pkgdesc="Berkeley Open Infrastructure for Network Computing for desktop" + depends=("libxss" "libnotify" "wxgtk" "webkitgtk2" "curl" "sqlite3") + + cd $pkgbase + + make DESTDIR="$pkgdir" install + + #install systemd unit + install -Dm644 "${srcdir}/$pkgbase.service" "${pkgdir}/usr/lib/systemd/system/$pkgbase.service" + + #install sysusers conf + install -Dm644 "${srcdir}/$pkgbase.sysusers" "${pkgdir}/usr/lib/sysusers.d/$pkgbase.conf" + + #install bash-completion + install -Dm644 "${srcdir}/$pkgbase.bash" "${pkgdir}/usr/share/bash-completion/completions/$pkgbase" + + #install .desktop File + install -Dm644 "${srcdir}/${pkgbase}.desktop" "${pkgdir}/usr/share/applications/${pkgbase}.desktop" + + #install icons + install -Dm644 "${srcdir}/${pkgbase}/packages/generic/sea/boincmgr.48x48.png" "${pkgdir}/usr/share/pixmaps/$pkgbase.png" + + #remove initscripts stuff + rm -rf "$pkgdir/etc" +} + +package_boinc-nox() { + pkgdesc="Berkeley Open Infrastructure for Network Computing for desktop without Xorg dependencies" + depends=("curl" "libjpeg-turbo") + provides=("boinc") + conflicts=("boinc") + + cd $pkgbase-nox + + make DESTDIR="$pkgdir" install + + #install systemd unit + install -Dm644 "${srcdir}/$pkgbase.service" "${pkgdir}/usr/lib/systemd/system/$pkgbase.service" + + #install sysusers conf + install -Dm644 "${srcdir}/$pkgbase.sysusers" "${pkgdir}/usr/lib/sysusers.d/$pkgbase.conf" + + #install bash-completion + install -Dm644 "${srcdir}/$pkgbase.bash" "${pkgdir}/usr/share/bash-completion/completions/$pkgbase" + + #remove initscripts stuff + rm -rf "$pkgdir/etc" +} 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..ea0aab2e1 --- /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=boinc +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..cd288530b --- /dev/null +++ b/community/boinc/boinc.install @@ -0,0 +1,5 @@ +post_install() { + systemd-sysusers boinc.conf + mkdir -p var/lib/boinc + chown -R boinc:boinc var/lib/boinc +} 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 diff --git a/community/boinc/boinc.sysusers b/community/boinc/boinc.sysusers new file mode 100644 index 000000000..2895d60b0 --- /dev/null +++ b/community/boinc/boinc.sysusers @@ -0,0 +1,2 @@ +u boinc - "BOINC Daemon" /var/lib/boinc +g boinc - \ No newline at end of file