summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWilliam Pitcock <nenolod@dereferenced.org>2017-01-29 09:47:25 +0000
committerWilliam Pitcock <nenolod@dereferenced.org>2017-01-29 09:47:25 +0000
commitea1db36f1f62889ddcf4dbf8ca85409619d4424c (patch)
tree8ef3ede0497b386f1f4341a93e3463dccce25b96
parent89d62e9d4d82156177b8b27dea6f0dbc8d887363 (diff)
downloadabuild-ea1db36f1f62889ddcf4dbf8ca85409619d4424c.tar.bz2
abuild-ea1db36f1f62889ddcf4dbf8ca85409619d4424c.tar.xz
abuild: implement check and $checkdepends support.
The check() function is an APKBUILD overridable function which runs a testsuite. The packages listed in $checkdepends are packages which will be installed at build time only if check() will be run.
-rw-r--r--abuild.in32
1 files changed, 28 insertions, 4 deletions
diff --git a/abuild.in b/abuild.in
index 2b2d23b..aa1fe09 100644
--- a/abuild.in
+++ b/abuild.in
@@ -66,6 +66,12 @@ cross_compiling() {
test "$CBUILD" != "$CHOST" -a -n "$CBUILDROOT"
}
+want_check() {
+ cross_compiling && return 1
+ options_has "!check" && return 1
+ return 0
+}
+
cleanup() {
local i=
[ -z "$subpkgdir" ] && set_xterm_title ""
@@ -199,6 +205,7 @@ default_sanitycheck() {
[ -n "$pkguser" ] && spell_error pkguser pkgusers
[ -n "$pkggroup" ] && spell_error pkggroup pkggroups
[ -n "$subpackage" ] && spell_error subpackage subpackages
+ [ -n "$checkdepend" ] && spell_error checkdepend checkdepends
check_maintainer || die "Provide a valid RFC822 maintainer address"
@@ -1365,18 +1372,21 @@ create_apks() {
}
build_abuildrepo() {
- local d apk _build=build
+ local d apk _build=build _check=check
if ! is_function package; then
# if package() is missing then build is called from rootpkg
_build=true
fi
+ if ! want_check; then
+ _check=true
+ fi
if ! apk_up2date || [ -n "$force" ]; then
# check early if we have abuild key
abuild-sign --installed || return 1
logcmd "building $repo/$pkgname-$pkgver-r$pkgrel"
sanitycheck && builddeps && clean && fetch && unpack \
- && prepare && mkusers && $_build && rootpkg \
- && cleanup $CLEANUP \
+ && prepare && mkusers && $_build && $_check \
+ && rootpkg && cleanup $CLEANUP \
|| return 1
fi
update_abuildrepo_index
@@ -1417,6 +1427,15 @@ update_abuildrepo_index() {
done
}
+# predefined function check
+default_check() {
+ warning "APKBUILD does not run any tests - define a check() function!"
+}
+
+check() {
+ default_check
+}
+
# predefined splitfunc doc
default_doc() {
depends="$depends_doc"
@@ -1715,11 +1734,14 @@ parse_aports_makedepends() {
subpackages=
depends=
makedepends=
+ checkdepends=
. $i
dir=${i%/APKBUILD}
deps=
# filter out conflicts from deps and version info
- for j in $depends $makedepends; do
+ wantdepends="$depends $makedepends"
+ want_check && wantdepends="$wantdepends $checkdepends"
+ for j in $wantdepends; do
case "$j" in
!*) continue;;
esac
@@ -1792,6 +1814,7 @@ calcdeps() {
done
else
[ -z "$makedepends" ] && makedepends="$makedepends_build $makedepends_host"
+ want_check && makedepends="$makedepends $checkdepends"
for i in $1 $depends $makedepends; do
[ "$pkgname" = "${i%%[<>=]*}" ] && continue
list_has $i $builddeps && continue
@@ -2147,6 +2170,7 @@ usage() {
Commands:
build Compile and install package into \$pkgdir
+ check Run any defined tests concerning the package
checksum Generate checksum to be included in APKBUILD
clean Remove temp build and install dirs
cleancache Remove downloaded files from \$SRCDEST