diff options
-rwxr-xr-x | buildrepo | 43 |
1 files changed, 38 insertions, 5 deletions
@@ -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 |