#!/bin/sh ## User config UPSTREAM_SOURCE="srcdir" ## End of user config usage () { cat </dev/null; then echo "You need makepkg to run this script." exit 1 fi HAS_ABS=false HAS_YAOURT=false command -v abs >/dev/null && HAS_ABS=true command -v yaourt >/dev/null && HAS_YAOURT=true if ! $HAS_ABS && ! $HAS_YAOURT; then echo "Please install either an ABS-tree or yaourt." exit 1 fi if $HAS_ABS && [ -f "/etc/abs.conf" ]; then . "/etc/abs.conf" [ "$ABSROOT" = "" ] && ABSROOT="/var/abs/" fi ################################################################################ abs_pkgbuild () { pacman -Si $1 >/dev/null 2>&1 if [ $? -eq 0 ] && $HAS_ABS && [ -d "$ABSROOT" ]; then cp -r /var/abs/*/$1 . else yaourt -G "$1" --noconfirm fi } abs_source () { (cd "$1" && \ mkdir -p "$UPSTREAM_SOURCE" && \ SRCDEST="$UPSTREAM_SOURCE" makepkg -o) } ## TODO: unused function. Add 'build all deps from source' parameter? abs_builddeps () { DEPLIST=$(awk -F"'" '/^(make)?depends *= *\(/,/\)/ {for (n=2 ; n/dev/null) } abs_install () { sudo sh -c ' (cd "$0" && pacman '$PACMAN_OPT' --noconfirm -U *.pkg.tar.xz) for i; do (cd "$i" && pacman '$PACMAN_OPT' --noconfirm -U *.pkg.tar.xz) done ' "$@" } for i ; do echo "==> Processing $i." ## Fetch PKGBUILD. if [ ! -f "$i/PKGBUILD" ] || $OPT_FORCE; then abs_pkgbuild "$i" fi ## Skip because $i does not exist. [ ! -d "$i" ] && continue ## Fetch source code. if $OPT_SOURCE; then abs_source "$i" fi ## Build. if $OPT_BUILD || ($OPT_INSTALL && [ ! -f $i/*.pkg.tar.xz ]); then abs_build "$i" fi ## Clean build folder. if $OPT_CLEAN; then abs_clean "$i" fi ## Remove archives. if $OPT_MRPROPER; then abs_mrproper "$i" fi done ## Install packages. We put the install part outside the loop so that we prompt ## for password one time only. if $OPT_INSTALL; then abs_install "$@" fi