[pacman-dev] [PATCH] Add check() function for testsuites.

Jeff jeff at kcaccess.com
Fri Jun 18 18:04:34 EDT 2010


If this is an accepted feature, I can resend the patch with manpage
updates.

Signed-off-by: Jeff C <jeff at kcaccess.com>
---
 etc/makepkg.conf.in   |    5 +++--
 scripts/makepkg.sh.in |   24 ++++++++++++++++++++++--
 2 files changed, 25 insertions(+), 4 deletions(-)

diff --git a/etc/makepkg.conf.in b/etc/makepkg.conf.in
index f0d1c44..b3c4b4c 100644
--- a/etc/makepkg.conf.in
+++ b/etc/makepkg.conf.in
@@ -58,7 +58,7 @@ BUILDENV=(fakeroot !distcc color !ccache)
 #   These are default values for the options=() settings
 #########################################################################
 #
-# Default: OPTIONS=(strip docs libtool emptydirs zipman purge)
+# Default: OPTIONS=(strip docs libtool emptydirs zipman purge !check)
 #  A negated option will do the opposite of the comments below.
 #
 #-- strip:     Strip symbols from binaries/libraries in STRIP_DIRS
@@ -67,8 +67,9 @@ BUILDENV=(fakeroot !distcc color !ccache)
 #-- emptydirs: Leave empty directories in packages
 #-- zipman:    Compress manual (man and info) pages in MAN_DIRS with gzip
 #-- purge:     Remove files specified by PURGE_TARGETS
+#-- check:     Run the check() function if it exists.
 #
-OPTIONS=(strip docs libtool emptydirs zipman purge)
+OPTIONS=(strip docs libtool emptydirs zipman purge !check)
 
 #-- File integrity checks to use. Valid: md5, sha1, sha256, sha384, sha512
 INTEGRITY_CHECK=(md5)
diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
index 678359f..2a659e6 100644
--- a/scripts/makepkg.sh.in
+++ b/scripts/makepkg.sh.in
@@ -44,7 +44,7 @@ startdir="$PWD"
 srcdir="$startdir/src"
 pkgdir="$startdir/pkg"
 
-packaging_options=('strip' 'docs' 'libtool' 'emptydirs' 'zipman' 'purge')
+packaging_options=('strip' 'docs' 'libtool' 'emptydirs' 'zipman' 'purge' 'check')
 other_options=('ccache' 'distcc' 'makeflags' 'force')
 splitpkg_overrides=('pkgver' 'pkgrel' 'pkgdesc' 'arch' 'license' 'groups' \
                     'depends' 'optdepends' 'provides' 'conflicts' 'replaces' \
@@ -71,6 +71,7 @@ SOURCEONLY=0
 IGNOREARCH=0
 HOLDVER=0
 BUILDFUNC=0
+CHECKFUNC=0
 PKGFUNC=0
 SPLITPKG=0
 PKGLIST=""
@@ -143,6 +144,9 @@ clean_up() {
 			if (( BUILDFUNC )); then
 				rm -f "${pkgbase}-${pkgver}-${pkgrel}-${CARCH}-build.log"*
 			fi
+			if (( CHECKFUNC )); then
+				rm -f "${pkgbase}-${pkgver}-${pkgrel}-${CARCH}-check.log"*
+			fi
 			if (( PKGFUNC )); then
 				rm -f "${pkgbase}-${pkgver}-${pkgrel}-${CARCH}-package.log"*
 			elif (( SPLITPKG )); then
@@ -735,7 +739,11 @@ run_function() {
 	fi
 
 	msg "$(gettext "Starting %s()...")" "$pkgfunc"
-	cd "$srcdir"
+	if [[ -d "$srcdir"/"$pkgname"-"$pkgver" ]]; then
+		cd "$srcdir"/"$pkgname"-"$pkgver"
+	else
+		cd "$srcdir"
+	fi
 
 	# ensure all necessary build variables are exported
 	export CFLAGS CXXFLAGS LDFLAGS MAKEFLAGS CHOST
@@ -798,6 +806,10 @@ run_build() {
 	run_function "build"
 }
 
+run_check() {
+	[[ $(check_option check) = "y" ]] && run_function "check"
+}
+
 run_package() {
 	if [[ -z $1 ]]; then
 		pkgfunc="package"
@@ -1772,6 +1784,9 @@ fi
 if [[ $(type -t build) = "function" ]]; then
 	BUILDFUNC=1
 fi
+if [[ $(type -t check) = "function" ]]; then
+	CHECKFUNC=1
+fi
 if [[ $(type -t package) = "function" ]]; then
 	PKGFUNC=1
 elif [[ $SPLITPKG -eq 0 && $(type -t package_${pkgname}) = "function" ]]; then
@@ -1835,6 +1850,9 @@ if (( INFAKEROOT )); then
 			if (( ! REPKG )); then
 				if (( BUILDFUNC )); then
 					run_build
+				  if (( CHECKFUNC )); then
+						run_check
+					fi
 					tidy_install
 				fi
 			else
@@ -1960,6 +1978,7 @@ else
 		if (( ! REPKG )); then
 			devel_update
 			(( BUILDFUNC )) && run_build
+			(( CHECKFUNC )) && run_check
 		fi
 		if (( ! SPLITPKG )); then
 			if (( PKGFUNC )); then
@@ -1991,6 +2010,7 @@ else
 		if (( ! REPKG && ( PKGFUNC || SPLITPKG ) )); then
 			devel_update
 			(( BUILDFUNC )) && run_build
+			(( CHECKFUNC )) && run_check
 			cd "$startdir"
 		fi
 
-- 
1.7.1



More information about the pacman-dev mailing list