[packages/rpm-build-tools/teeboth: 4/4] use sparky's teeboth wrapper to log and print stderr in color

glen glen at pld-linux.org
Sat Jan 12 11:53:18 CET 2013


commit 12da9e3d7724a0ef69239325ae50ea859c3f3ae4
Author: Elan Ruusamäe <glen at delfi.ee>
Date:   Sat Jan 12 12:52:08 2013 +0200

    use sparky's teeboth wrapper to log and print stderr in color

 builder.sh | 71 +++++++++++++++++++++++++++++++++++++++++++-------------------
 1 file changed, 49 insertions(+), 22 deletions(-)
---
diff --git a/builder.sh b/builder.sh
index db42d87..5bbbfc9 100755
--- a/builder.sh
+++ b/builder.sh
@@ -84,6 +84,10 @@ TARGET=$(rpm -E %{_target})
 # Yes, you can use variable name! Note _single_ quotes!
 LOGFILE=''
 
+# use teeboth Perl wrapper
+# temporary option to disable if broken
+USE_TEEBOTH=yes
+
 LOGDIR=""
 LOGDIROK=""
 LOGDIRFAIL=""
@@ -241,6 +245,7 @@ fi
 POLDEK_INDEX_DIR="$($RPM --eval %_rpmdir)/"
 POLDEK_CMD="$SU_SUDO /usr/bin/poldek --noask"
 
+# TODO: add teeboth
 run_poldek() {
 	RES_FILE=$(tempfile)
 	if [ -n "$LOGFILE" ]; then
@@ -249,6 +254,7 @@ run_poldek() {
 			echo "LASTLOG=$LOG" > $LASTLOG_FILE
 		fi
 		(${NICE_COMMAND} ${POLDEK_CMD} `while test $# -gt 0; do echo "$1 ";shift;done` ; echo $? > ${RES_FILE})|tee -a $LOG
+		# FIXME $exit_pldk undefined
 		return $exit_pldk
 	else
 		(${NICE_COMMAND} ${POLDEK_CMD} `while test $# -gt 0; do echo "$1 ";shift;done` ; echo $? > ${RES_FILE}) 1>&2 >/dev/null
@@ -493,6 +499,29 @@ insert_gitlog() {
 	echo $specdir
 }
 
+# @param string logfile
+# @param varargs... commands to execute
+teeboth() {
+	local rc
+	# use teeboth from toys/cleanbuild, if available and enabled
+	if [ "$USE_TEEBOTH" = "yes" ] && [ -x $APPDIR/teeboth ]; then
+		$APPDIR/teeboth "$@"
+		rc=$?
+	else
+		local efile rc logfile=$1; shift
+		if [ "$logfile" ]; then
+			efile=$(tempfile)
+			{ "$@" < /dev/null 2>&1; echo $? > $efile; } | tee -a $logfile
+			rc=$(< $efile)
+			rm -f $efile
+		else
+			"$@" < /dev/null
+			rc=$?
+		fi
+	fi
+	return $rc
+}
+
 # change dependency to specname
 # common changes:
 # - perl(Package::Name) -> perl-Package-Name
@@ -1555,36 +1584,34 @@ build_package() {
 	esac
 
 	update_shell_title "build_package: $COMMAND"
+	local logfile retval
 	if [ -n "$LOGFILE" ]; then
-		LOG=`eval echo $LOGFILE`
-		if [ -d "$LOG" ]; then
-			echo "Log file $LOG is a directory."
+		logfile=`eval echo $LOGFILE`
+		if [ -d "$logfile" ]; then
+			echo "Log file $logfile is a directory."
 			echo "Parse error in the spec?"
 			Exit_error err_build_fail
 		fi
 		if [ -n "$LASTLOG_FILE" ]; then
-			echo "LASTLOG=$LOG" > $LASTLOG_FILE
+			echo "LASTLOG=$logfile" > $LASTLOG_FILE
 		fi
-		RES_FILE=$(tempfile)
-		local specdir=$(insert_gitlog $SPECFILE)
-
-		(time eval PATH=$CLEAN_PATH ${NICE_COMMAND} $RPMBUILD $TARGET_SWITCH $BUILD_SWITCH -v $QUIET $CLEAN $RPMOPTS $RPMBUILDOPTS $BCOND --define \'_specdir $PACKAGE_DIR\' --define \'_sourcedir $PACKAGE_DIR\' $specdir/$SPECFILE; echo $? > $RES_FILE) 2>&1 |tee $LOG
-		RETVAL=`cat $RES_FILE`
-		rm -r $RES_FILE $specdir
-		if [ -n "$LOGDIROK" ] && [ -n "$LOGDIRFAIL" ]; then
-			if [ "$RETVAL" -eq "0" ]; then
-				mv $LOG $LOGDIROK
-			else
-				mv $LOG $LOGDIRFAIL
-			fi
+	fi
+
+	local specdir=$(insert_gitlog $SPECFILE)
+	# FIXME: eval here is exactly why?
+	PATH=$CLEAN_PATH eval teeboth "'$logfile'" ${NICE_COMMAND} $RPMBUILD $TARGET_SWITCH $BUILD_SWITCH -v $QUIET $CLEAN $RPMOPTS $RPMBUILDOPTS $BCOND --define \'_specdir $PACKAGE_DIR\' --define \'_sourcedir $PACKAGE_DIR\' $specdir/$SPECFILE
+	retval=$?
+	rm -r $specdir
+
+	if [ -n "$logfile" ] && [ -n "$LOGDIROK" ] && [ -n "$LOGDIRFAIL" ]; then
+		if [ "$retval" -eq "0" ]; then
+			mv $logfile $LOGDIROK
+		else
+			mv $logfile $LOGDIRFAIL
 		fi
-	else
-		local specdir=$(insert_gitlog $SPECFILE)
-		eval PATH=$CLEAN_PATH ${NICE_COMMAND} $RPMBUILD $TARGET_SWITCH $BUILD_SWITCH -v $QUIET $CLEAN $RPMOPTS $RPMBUILDOPTS $BCOND --define \'_specdir $PACKAGE_DIR\' --define \'_sourcedir $PACKAGE_DIR\' $specdir/$SPECFILE
-		RETVAL=$?
-		rm -r $specdir
 	fi
-	if [ "$RETVAL" -ne "0" ]; then
+
+	if [ "$retval" -ne "0" ]; then
 		if [ -n "$TRY_UPGRADE" ]; then
 			echo "\nUpgrade package to new version failed."
 			if [ "$REVERT_BROKEN_UPGRADE" = "yes" ]; then
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/rpm-build-tools.git/commitdiff/12da9e3d7724a0ef69239325ae50ea859c3f3ae4



More information about the pld-cvs-commit mailing list