#!/bin/bash getdep() { local deps="" depends="" makedepends="" ret=0 dep="" pre+="--" # grep all dependencies from PKGBUILD of given package (dirty as it doesn't handle line breaks in the array) eval $(grep depends "$1"/PKGBUILD) # create array with only the names of all needed dependencies deps=($(echo "${depends[@]} ${makedepends[@]}" | sed 's/[>=<][>=<]*[^ ]*//g')) for dep in ${deps[@]} do echo "${pre}>${dep}" >&2 # check whether dependency already is in a repository if pacman -Si "$dep" >/dev/null 2>&1 then [ $ret -eq 0 ] && ret=2 # check whether an AUR-package exists elif cower -i "$dep" >/dev/null 2>&1 || [ -d "$dep" ] then # download package if it is not already there if ! [ -d "$dep" ] then cower -d "$dep" >/dev/null 2>&1 fi # remove all unneeded deplendencies as they are already integrated in ruby sed -i "s/['\"(]rubygems[)'\"]//g;s/['\"(]ruby-rake[)'\"]//g;s/['\"(]ruby-rdoc[)'\"]//g" "$dep"/PKGBUILD # check for dependencies of the dependency getdep "$dep" ret=$? echo "${pre}>$ret" >&2 if [ $ret -eq 2 ] then if ! pacman -Si "$dep" >/dev/null 2>&1 then # replace/create md5sum for the package grep 'md5sums=()' "$dep"/PKGBUILD >/dev/null 2>&1 && sed -i "s/md5sums=()/$(makepkg -g)/g" "$dep"/PKGBUILD grep 'md5sums=' "$dep"/PKGBUILD >/dev/null 2>&1 || { cd "$dep" && makepkg -g >> PKGBUILD; cd .. ; } # build and add the package to own repository makerepopkg.sh -Bp i686,x86_64 -P "$dep"/PKGBUILD >&2 if [ $? -eq 0 ] then # sync modified repository files to repo-server echo -e 'y\n' | unison -auto repo >&2 # update local repository databases sudo pacman -Sy >&2 sudo arch-nspawn /data/repo/x86_64/root pacman -Sy >&2 sudo linux32 arch-nspawn /data/repo/i686/root pacman -Sy >&2 ret=3 else ret=1 fi fi fi else echo "$dep" && ret=1 fi done unset pre return $ret } for pkg in * do echo "$pkg"; getdep "$pkg" if [ $? -eq 2 ] then if ! pacman -Si "$pkg" >/dev/null 2>&1 then # replace/create md5sum for the package grep 'md5sums=()' "$pkg"/PKGBUILD >/dev/null 2>&1 && sed -i "s/md5sums=()/$(makepkg -g)/g" "$pkg"/PKGBUILD grep 'md5sums=' "$pkg"/PKGBUILD >/dev/null 2>&1 || { cd "$pkg" && makepkg -g >> PKGBUILD; cd .. ; } # build and add the package to own repository makerepopkg.sh -Bp i686,x86_64 -P "$pkg"/PKGBUILD >&2 if [ $? -eq 0 ] then # sync modified repository files to repo-server echo -e 'y\n' | unison -auto repo >&2 # update local repository databases sudo pacman -Sy >&2 sudo arch-nspawn /data/repo/x86_64/root pacman -Sy >&2 sudo linux32 arch-nspawn /data/repo/i686/root pacman -Sy >&2 else echo "Couldn't build $pkg." fi fi fi done