From 611255796399a0655760187da363616c8df500d1 Mon Sep 17 00:00:00 2001 From: Natanael Copa Date: Wed, 11 Feb 2009 14:08:50 +0000 Subject: buildrepo: copy files from aports if already built. and dont build index if its not needed --- buildrepo | 43 ++++++++++++++++++++++++++++++++++++++----- 1 file changed, 38 insertions(+), 5 deletions(-) diff --git a/buildrepo b/buildrepo index 33f08e5..524aaa6 100755 --- a/buildrepo +++ b/buildrepo @@ -40,18 +40,48 @@ purge() { } build() { - local repo="$1" i + local repo="$1" i indexupdate needbuild cd "$aportsdir/$repo" || return 1 mkdir -p "$repodir/$repo" + # first we try copy everything possible and find out which we need + # to rebuild. By doing this we might save us for rebuilding + # needed when running 'abuild -R' for i in */APKBUILD; do - ( cd ${i%/*} || return 1 - REPODEST="$repodir" abuild -k -r || return 1 - ) || return 1 + export REPODEST="$repodir" + cd "$aportsdir/$repo"/${i%/*} || return 1 + if abuild -k -q up2date 2>/dev/null; then + continue + fi + + # try link or copy the files if they are in the ports dir + pkgs=$(abuild listpkg) + if cp -p -l $pkgs "$repodir/$repo"/ 2>/dev/null \ + || cp -p $pkgs "$repodir/$repo"/ 2>/dev/null; then + echo ">>> Copying " $pkgs + else + needbuild="$needbuild $i" + fi + indexupdate="$indexupdate $i" done + + if [ -z "$indexupdate" ] && [ -z "$needbuild" ]; then + echo ">>> Repository $repo is up-to-date." + return 0 + fi + + # build the postponed packages if any + if [ -n "$needbuild" ]; then + for i in $needbuild; do + cd "$aportsdir/$repo"/${i%/*} || return 1 + abuild -k -R || return 1 + done + fi + + # generate the repository index cd "$repodir/$repo" - echo ">>> Generating Index..." + echo ">>> Generating Index for $repo..." md5sum *.apk | gzip -9 > INDEX.md5.gz if which apk >/dev/null; then local deps @@ -60,6 +90,8 @@ build() { done apk $deps index *.apk | gzip -9 > APK_INDEX.gz fi + + # kill old packages in repo purge "$repo" } @@ -83,6 +115,7 @@ while [ $# -gt 0 ]; do else build $1 || exit 1 fi + deprepo="$deprepo $1" shift done -- cgit v1.2.3-70-g09d2