buildrepo: copy files from aports if already built.

and dont build index if its not needed
This commit is contained in:
Natanael Copa 2009-02-11 14:08:50 +00:00
parent bcb440d4fe
commit 6112557963

View File

@ -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