diff --git a/buildrepo b/buildrepo
index 42e055942f95d2eb201d8c379cd5e9ea17986d3f..95360f360ab5a4c83271c729380b1acf3a692e90 100755
--- a/buildrepo
+++ b/buildrepo
@@ -7,13 +7,16 @@ repodir=${REPODIR:-$HOME/packages}
 
 
 usage() {
-	echo "usage: $program [-a APORTSDIR] [-d REPODIR] [-hp] [-l LOGPREFIX ] REPOSITORY..."
+	echo "usage: $program [-a APORTSDIR] [-d REPODIR] [-hp] [-l LOGPREFIX ]"
+	echo "                [-r DEPREPO] 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"
+	echo " -r  Dependencies are found in DEPREPO"
 	exit 1
 }
 
@@ -47,20 +50,26 @@ build() {
 		) || return 1
 	done
 	cd "$repodir/$repo"
+	echo ">>> Generating Index..."
 	md5sum *.apk | gzip -9 > INDEX.md5.gz
 	if which apk >/dev/null; then
-		apk index *.apk | gzip -9 > APK_INDEX.gz
+		local deps
+		for i in $deprepo; do
+			deps="--repo $repodir/$i"
+		done
+		apk $deps index *.apk | gzip -9 > APK_INDEX.gz
 	fi
 	purge "$repo"
 }
 
-while getopts "a:d:hl:p" opt; do
+while getopts "a:d:hl:pr:" opt; do
 	case "$opt" in
 		a) aportsdir=$OPTARG;;
 		d) repodir=$OPTARG;;
 		h) usage >&2;;
 		l) logprefix=$OPTARG;;
 		p) dopurge=1;;
+		r) deprepo="$deprepo $OPTARG";;
 	esac
 done
 shift $(($OPTIND - 1))