diff options
Diffstat (limited to 'fullpkg')
-rwxr-xr-x | fullpkg | 47 |
1 files changed, 40 insertions, 7 deletions
@@ -1,8 +1,8 @@ #!/bin/bash # TODO -# * Do version checking # * Detect circular builds # * Detect pkgnames by provides, replaces, etc. instead of dir tree +# * Detect package repo [[ ! -r PKGBUILD ]] && { echo "This isn't a build directory" @@ -11,7 +11,9 @@ tmp_dir=$(mktemp -d /tmp/$(basename $PWD).XXXXXX) queue_file=$(mktemp /tmp/queue.XXXXXX) +ban_file=$(mktemp) [[ ! -w $queue_file ]] && exit 1 +[[ ! -w $ban_file ]] && exit 1 source /etc/makepkg.conf source /etc/abs.conf @@ -77,6 +79,18 @@ check_queue() { return 0 } +# Checks if the package is banned from building +is_banned() { + rsync -e ssh -aq $PARABOLAHOST:mips64el/ban $ban_file >/dev/null 2>&1 || { + echo ":: Failed to get ban list" + return 0 + } + + grep -w $1 $ban_file >/dev/null 2>&1 + + return $? +} + # TODO keep track of spawned fullpkgs quit() { @@ -86,10 +100,19 @@ quit() { } source PKGBUILD -msg "Building ${pkgbase} ${pkgname[@]}" +msg ":: Building ${pkgbase:-${pkgname[@]}}" + +is_built "${pkgbase:-${pkgname[0]}}>=${pkgver}" && exit 0 + +#sudo pacman -Sy trap "quit" SIGTERM SIGKILL +if is_banned ${pkgbase:-$pkgname}; then + echo "This package is banned from building. Check the ban list" + exit 1 +fi + check_queue || exit 1 failed=() @@ -113,15 +136,25 @@ deps=$(echo "${depends[@]} ${makedepends[@]} ${pkgdeps[@]}" | \ msg "Checking dependencies" plain "${deps[@]}" -msg "Syncing database" -sudo pacman -Sy +#msg "Syncing database" +#sudo pacman -Sy for _dep in ${deps[@]}; do - is_built $_dep && continue + is_banned $_dep && continue for _repo in ${REPOS[@]}; do # TODO find split packages [[ -e "$ABSROOT/${_repo}/$_dep/PKGBUILD" ]] && { + source "$ABSROOT/${_repo}/$_dep/PKGBUILD" + msg "Checking for $_dep>=$pkgver" + +# If this version is built, continue with the next dep + + if is_built "$_dep>=$pkgver"; then + msg "No need to build this one" + break + fi + cp -r "$ABSROOT/$_repo/$_dep" $tmp_dir/ || { error "Can't copy $_dep to the work dir." exit 1 @@ -173,12 +206,12 @@ pushd $tmp_dir/$(basename $PWD) >/dev/null msg "Syncing database" sudo pacman -Sy - -makepkg --noconfirm -sLcr ; r=$? +makepkg --noconfirm -sLcr $@ ; r=$? case $r in 0) msg "The build was succesful." mipsrelease *.pkg.tar.* + sudo pacman -Sy ;; 1) error "There were errors while trying to build the package." |