summaryrefslogtreecommitdiff
path: root/fullpkg
diff options
context:
space:
mode:
authorJoshua Ismael Haase Hernández <josht@stravy.(none)>2011-04-14 23:14:37 -0500
committerJoshua Ismael Haase Hernández <josht@stravy.(none)>2011-04-14 23:14:37 -0500
commit01f55a1a7e979ab38e6d6d5b169507ab34f73ddb (patch)
treefa9cf5da2e5ed0df72dfbe603e90b885b050d07d /fullpkg
parent4a585ee091e98d980c7f2ae8cc3e507dd4ee1a18 (diff)
parent47970ad081939c1024a2a9358e647ed2358f6de6 (diff)
Merge branch 'master' of vparabola:~/projects/libretoolsv20110416
Diffstat (limited to 'fullpkg')
-rwxr-xr-xfullpkg47
1 files changed, 40 insertions, 7 deletions
diff --git a/fullpkg b/fullpkg
index 794b191..c3c44a8 100755
--- a/fullpkg
+++ b/fullpkg
@@ -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."