summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNatanael Copa <ncopa@alpinelinux.org>2009-02-11 14:08:50 +0000
committerNatanael Copa <ncopa@alpinelinux.org>2009-02-11 14:08:50 +0000
commit611255796399a0655760187da363616c8df500d1 (patch)
tree979a8e82a8afa59dc2fc60f31abe079bcec53427
parentbcb440d4fea5f5b3be83a6878cec7a700415d4aa (diff)
downloadabuild-611255796399a0655760187da363616c8df500d1.tar.bz2
abuild-611255796399a0655760187da363616c8df500d1.tar.xz
buildrepo: copy files from aports if already built.
and dont build index if its not needed
-rwxr-xr-xbuildrepo43
1 files 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