From bd245c07d7bfe758c6483d0333968d4b918f7233 Mon Sep 17 00:00:00 2001 From: Natanael Copa Date: Thu, 6 Nov 2008 16:08:30 +0000 Subject: [PATCH] implement new way of doing subpackages subpackages contains a list of (full) names of the sub packages splitfuncs contains a list of corresponding function names to be called --- abuild | 47 ++++++++++++++++++++++++++++++----------------- 1 file changed, 30 insertions(+), 17 deletions(-) diff --git a/abuild b/abuild index b479b94..36830f3 100755 --- a/abuild +++ b/abuild @@ -29,8 +29,8 @@ all_cmds="checksum fetch unpack rootpkg build package cleancache clean srcpkg" # functions msg() { local sub= - [ -n "$INSUB" ] && sub="(sub)" - [ -z "$quiet" ] && echo ">>> $pkgname $sub:" "$@" >&2 + [ -n "$subpkgname" ] && sub="(sub)" + [ -z "$quiet" ] && echo ">>> ${subpkgname:-$pkgname} $sub:" "$@" >&2 } warning() { @@ -55,6 +55,14 @@ sanitycheck() { [ -z "$url" ] && die "Missing url in APKBUILD" [ -z "$license" ] && die "Missing license in APKBULID" + if [ "$(echo $source | wc -l)" -ne "$(echo $md5sums | wc -l)" ]; then + die "Number of md5sums does not correspond to number of sources" + fi + + if [ "$(echo $subpackages | wc -w)" -ne "$(echo $splitfuncs | wc -w)" ]; then + die "Number of subpackages does not correspond to number of splitfuncs" + fi + # common spelling errors [ -n "$depend" ] && die "APKBUILD contains 'depend'. It should be depends" [ -n "$makedepend" ] && die "APKBUILD contains 'makedepend'. It should be makedepends" @@ -154,11 +162,10 @@ cleancache() { } cleanpkg() { - local p="$pkgname-$pkgver-$pkgrel" - rm -f "$PKGDEST/$p.apk" "$PKGDEST/$p.src.tar.gz" local i - for i in $splitfuncs; do - INSUB=1 subpkgdir="$pkgdir-$i" $0 $i cleanpkg + for i in $pkgname $subpackages; do + local p="$i-$pkgver-$pkgrel" + rm -f "$PKGDEST/$p.apk" "$PKGDEST/$p.src.tar.gz" done } @@ -174,18 +181,24 @@ build() { } subpkg() { - [ -z "$splitfuncs" ] && return 0 + if [ -z "$splitfuncs" ] && [ -z "$subpackages" ]; then + return 0 + fi local i cd "$startdir" - for i in $splitfuncs; do - INSUB=1 subpkgdir="$pkgdir-$i" $0 $i package || return 1 + set $splitfuncs + for i in $subpackages; do + subpkgdir="$startdir/pkg-$1" subpkgname="$i" $0 $1 package \ + || return 1 + shift done } package_apk() { - [ -z "${pkgname##* *}" ] && die "pkgname contains spaces" + local name=${subpkgname:-$pkgname} + [ -z "${name##* *}" ] && die "package name contains spaces" local dir=${subpkgdir:-$pkgdir} - local pkg="$pkgname-$pkgver-$pkgrel.apk" + local pkg="$name-$pkgver-$pkgrel.apk" [ ! -d "$dir" ] && die "Missing $dir" cd "$dir" @@ -199,7 +212,7 @@ package_apk() { fi echo "# $(date -u)" >> .PKGINFO cat >> .PKGINFO </dev/null) \ usr/include usr/lib/pkgconfig usr/share/aclocal; do @@ -377,8 +387,11 @@ shift $(( $OPTIND - 1 )) [ -f "$APKBUILD" ] || die "Could not find $APKBUILD (PWD=$PWD)" . "$APKBUILD" -# If we are handling a sub package then reset splitfuncs -[ -n "$INSUB" ] && splitfuncs= +# If we are handling a sub package then reset splitfuncs and subpackages +if [ -n "$subpkgname" ]; then + splitfuncs= + subpackages= +fi trap 'die "Aborted by user"' INT