buildrepo: new file
This commit is contained in:
parent
ff55ae9e1c
commit
a73568f5ff
|
@ -0,0 +1,80 @@
|
|||
#!/bin/sh
|
||||
|
||||
program=${0##*/}
|
||||
|
||||
aportsdir=${APORTSDIR:-$HOME/aports}
|
||||
repodir=${REPODIR:-$HOME/packages}
|
||||
|
||||
|
||||
usage() {
|
||||
echo "usage: $program [-a APORTSDIR] [-d REPODIR] [-hp] [-l LOGPREFIX ] REPOSITORY..."
|
||||
echo "options:"
|
||||
echo " -a Set the aports base dir to APORTSDIR instead of $aportsdir"
|
||||
echo " -d Set destination repository base dir to REPODIR instead of $repodir"
|
||||
echo " -h Show this help and exit"
|
||||
echo " -l Send build to logfile, prefixed by LOGPREFIX"
|
||||
echo " -p Purge obsolete packages from REPODIR after build"
|
||||
exit 1
|
||||
}
|
||||
|
||||
|
||||
listpackages() {
|
||||
cd "$aportsdir/$1"
|
||||
for i in */APKBUILD; do
|
||||
APKBUILD=$i abuild listpkg
|
||||
done
|
||||
}
|
||||
|
||||
# purge obsolete packages
|
||||
purge() {
|
||||
[ -z "$dopurge" ] && return 0
|
||||
local tmp=$(mktemp /tmp/$program-XXXXXX)
|
||||
cd "$repodir/$1" || return 1
|
||||
trap 'rm -f "$tmp"; exit 1' INT
|
||||
( listpackages "$1") >$tmp
|
||||
ls *.apk 2>/dev/null | grep -v -w -f $tmp | xargs rm 2>/dev/null
|
||||
}
|
||||
|
||||
build() {
|
||||
local repo="$1" i
|
||||
|
||||
cd "$aportsdir/$repo" || return 1
|
||||
mkdir -p "$repodir/$repo"
|
||||
|
||||
for i in */APKBUILD; do
|
||||
( cd ${i%/*} || return 1
|
||||
build $1 || exit 1
|
||||
purge $1 || exit 1
|
||||
PKGDEST="$repodir/$repo" abuild -r || return 1
|
||||
) || return 1
|
||||
done
|
||||
cd "$repodir/$repo"
|
||||
md5sum *.apk | gzip -9 > INDEX.md5.gz
|
||||
if which apk >/dev/null; then
|
||||
apk index *.apk | gzip -9 > APK_INDEX.gz
|
||||
fi
|
||||
purge "$repo"
|
||||
}
|
||||
|
||||
while getopts "a:d:hl:p" opt; do
|
||||
case "$opt" in
|
||||
a) aportsdir=$OPTARG;;
|
||||
d) repodir=$OPTARG;;
|
||||
h) usage >&2;;
|
||||
l) logprefix=$OPTARG;;
|
||||
p) dopurge=1;;
|
||||
esac
|
||||
done
|
||||
shift $(($OPTIND - 1))
|
||||
|
||||
[ $# -eq 0 ] && usage >&2
|
||||
|
||||
while [ $# -gt 0 ]; do
|
||||
if [ -n "$logprefix" ]; then
|
||||
build $1 >$logprefix.$1.log 2>&1 || exit 1
|
||||
else
|
||||
build $1 || exit 1
|
||||
fi
|
||||
shift
|
||||
done
|
||||
|
Loading…
Reference in New Issue