mail archive of the barebox mailing list
 help / color / mirror / Atom feed
* [PATCH 1/2] MAKEALL: allow users to increase verbosity and sidestep logging
@ 2024-11-25 15:12 Ahmad Fatoum
  2024-11-25 15:12 ` [PATCH 2/2] ci: don't run make in silent mode Ahmad Fatoum
  2024-11-28  9:30 ` [PATCH 1/2] MAKEALL: allow users to increase verbosity and sidestep logging Sascha Hauer
  0 siblings, 2 replies; 3+ messages in thread
From: Ahmad Fatoum @ 2024-11-25 15:12 UTC (permalink / raw)
  To: barebox; +Cc: Ahmad Fatoum

MAKEALL always logs into a LOGDIR, but the output is not very talkative,
because for compiling, make is always called with -s (silent) option,
which prevents both V=0 and V=1 from affecting the output.

To make the output of MAKEALL more usefuly from CI, we want V=0 to have
an effect (i.e. print messages like `CC     version.o') and all output
to go to stdout/stderr, because it's more user friendly to have the
output directly in the Github Actions log instead of being in a zip file
that needs to be downloaded.

The former, we achieve by removing -s whenever V= is set and the latter
we achieve by allowing logging to be disabled by setting an empty string
as log directory.

Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de>
---
 MAKEALL | 98 +++++++++++++++++++++++++++++++++++++--------------------
 1 file changed, 64 insertions(+), 34 deletions(-)

diff --git a/MAKEALL b/MAKEALL
index 3b93bfe5660b..b43a134b06bc 100755
--- a/MAKEALL
+++ b/MAKEALL
@@ -12,6 +12,7 @@ nb_defconfigs=0
 nb_tests=0
 nb_tests_failed=0
 exitcode=0
+logdir="log"
 
 time_start=$(date +%s)
 
@@ -56,6 +57,7 @@ usage() {
 	echo "LOGDIR      -l      log dir"
 	echo "REGEX       -e      regex"
 	echo "KCONFIG_ADD -k      kconfig fragment"
+	echo "V           -v      verbosity"
 	echo "INCREMENTAL -i"
 	echo ""
 }
@@ -92,16 +94,36 @@ check_pipe_status() {
 	return 0
 }
 
+with_logs_collected() {
+	local log_report="${logdir}/${target}/report.log"
+	local log_err="${logdir}/${target}/errors.log"
+
+	if [ -n "${logdir}" ]; then
+		"$@" 2>&1 > "${log_report}" | tee "${log_err}"
+	else
+		"$@"
+	fi
+}
+
+report() {
+	local log_report="${logdir}/${target}/report.log"
+
+	if [ -n "${logdir}" ]; then
+		printf "$@" | tee -a "${log_report}"
+	else
+		printf "$@"
+	fi
+}
+
 do_build_target() {
 	local arch=$1
 	local target=$2
 	local target_time_start=$(date +%s)
-	local log_report="${LOGDIR}/${target}/report.log"
-	local log_err="${LOGDIR}/${target}/errors.log"
+	local log_err="${logdir}/${target}/errors.log"
 	local err=0
 
 	[ "$INCREMENTAL" != "1" ] && rm -rf "${BUILDDIR}"
-	mkdir -p "${LOGDIR}/${target}"
+	[ -n "$logdir" ] && mkdir -p "${logdir}/${target}"
 
 	MAKE="make -j${JOBS} ARCH=${arch} O=${BUILDDIR}"
 	${MAKE} ${target} &>/dev/null
@@ -127,59 +149,62 @@ do_build_target() {
 		fi
 	fi
 
-	printf "Building ${arch} ${target} \n" >&2 | tee -a "${log_report}"
-	MAKE="${MAKE} CROSS_COMPILE=${cross_compile}"
-	${MAKE} ${target} 2>&1 > "${log_report}" | tee "${log_err}"
+	[ -z "$V" ] && silent_flag=-s
+
+	report "Building ${arch} ${target} \n" >&2
+	MAKE="${MAKE} $silent_flag CROSS_COMPILE=${cross_compile}"
+	with_logs_collected ${MAKE} ${target}
 	for i in ${KCONFIG_ADD}; do
-		./scripts/kconfig/merge_config.sh -m -O \
-			${BUILDDIR} ${BUILDDIR}/.config $i \
-			2>&1 > "${log_report}" | tee "${log_err}"
+		with_logs_collected ./scripts/kconfig/merge_config.sh -m -O \
+			${BUILDDIR} ${BUILDDIR}/.config $i
 	done
-	${MAKE} olddefconfig 2>&1 > "${log_report}" | tee "${log_err}"
+	with_logs_collected ${MAKE} $silent_flag olddefconfig
 
 	check_pipe_status
 	configure_result="$?"
 
-	printf "Configure: " | tee -a "${log_report}"
+	report "Configure: "
 
 	if [ "$configure_result" = "0" ]; then
-		printf "OK     \n" | tee -a "${log_report}"
+		report "OK     \n"
 
-		${MAKE} -s 2>&1 >> "${log_report}" | tee -a "${log_err}"
+		with_logs_collected ${MAKE} $silent_flag
 
 		check_pipe_status
 		compile_result="$?"
 
-		printf "Compile: " ${target} | tee -a "${log_report}"
+		report "Compile: " ${target}
 
 		if [ "$compile_result" = "0" ]; then
-			printf "OK     \n" | tee -a "${log_report}"
+			report "OK     \n"
 		else
-			printf "FAILED \n" | tee -a "${log_report}"
+			report "FAILED \n"
 			nb_errors=$((nb_errors + 1))
 			errors_list="${errors_list} ${target}"
 			err=1
 			exitcode=1
 		fi
 	else
-		printf "FAILED \n" | tee -a "${log_report}"
-		printf "Compile: ------ \n" | tee -a "${log_report}"
+		report "FAILED \n"
+		report "Compile: ------ \n"
 		err=1
 		exitcode=1
 	fi
 
-	if [ -s "${log_err}" ] ; then
-		nb_warnings=$((nb_warnings + 1))
-		warnings_list="${warnings_list} ${target}"
-	else
-		rm "${log_err}"
+	if [ -n "$logdir" ]; then
+		if [ -s "${log_err}" ] ; then
+			nb_warnings=$((nb_warnings + 1))
+			warnings_list="${warnings_list} ${target}"
+		else
+			rm "${log_err}"
+		fi
 	fi
 
 	nb_defconfigs=$((nb_defconfigs + 1))
 
 	target_time_stop=$(date +%s)
 	target_time_diff=$((${target_time_stop} - ${target_time_start}))
-	printf "Compiled in %4is\n" ${target_time_diff} | tee -a "${log_report}"
+	report "Compiled in %4is\n" ${target_time_diff}
 
 	return $err
 }
@@ -193,20 +218,19 @@ do_test_target() {
 	local target=$2
 	shift 2
 	local target_time_start=$(date +%s)
-	local log_report="${LOGDIR}/${target}/report.log"
 	local err=0
 
-	LG_BUILDDIR=$BUILDDIR pytest --lg-env $yaml "$@" 2>&1 >> "${log_report}"
+	LG_BUILDDIR=$BUILDDIR with_logs_collected pytest --lg-env $yaml "$@"
 
 	check_pipe_status
 	compile_result="$?"
 
-	printf "Test: " ${yaml} | tee -a "${log_report}"
+	report "Test: " ${yaml}
 
 	if [ "$compile_result" = "0" ]; then
-		printf "OK     \n" | tee -a "${log_report}"
+		report "OK     \n"
 	else
-		printf "FAILED \n" | tee -a "${log_report}"
+		report "FAILED \n"
 		nb_tests_failed=$((nb_tests_failed + 1))
 		test_errors_list="${test_errors_list} ${yaml}"
 		exitcode=1
@@ -217,7 +241,7 @@ do_test_target() {
 
 	target_time_stop=$(date +%s)
 	target_time_diff=$((${target_time_stop} - ${target_time_start}))
-	printf "Tested in %4is\n" ${target_time_diff} | tee -a "${log_report}"
+	report "Tested in %4is\n" ${target_time_diff}
 
 	return $err
 }
@@ -251,7 +275,7 @@ do_build_all() {
 	return $build_target
 }
 
-while getopts "hc:j:O:l:a:e:k:i" Option
+while getopts "hc:j:O:l:a:e:k:v:i" Option
 do
 case $Option in
 	a )
@@ -275,6 +299,9 @@ case $Option in
 	k )
 		KCONFIG_ADD="${KCONFIG_ADD} ${OPTARG}"
 		;;
+	v )
+		export V=${OPTARG}
+		;;
 	i )
 		INCREMENTAL=1
 		;;
@@ -299,9 +326,9 @@ if [ ! "${JOBS}" ] ; then
 	JOBS=$((${nb_cpu} * 2))
 fi
 
-if [ ! "${LOGDIR}" ]
+if [ -v LOGDIR ];
 then
-	LOGDIR="log"
+	logdir="$LOGDIR"
 fi
 
 if [ ! "${BUILDDIR}" ]
@@ -321,7 +348,10 @@ then
 	. "${CONFIG}"
 fi
 
-[ -d "${LOGDIR}" ] || mkdir ${LOGDIR} || exit 1
+if [ -n "$logdir" ] && [ ! -d "${logdir}" ]
+then
+	mkdir "${logdir}" || exit 1
+fi
 
 if [ ! "${REGEX}" ]
 then
-- 
2.39.5




^ permalink raw reply	[flat|nested] 3+ messages in thread

* [PATCH 2/2] ci: don't run make in silent mode
  2024-11-25 15:12 [PATCH 1/2] MAKEALL: allow users to increase verbosity and sidestep logging Ahmad Fatoum
@ 2024-11-25 15:12 ` Ahmad Fatoum
  2024-11-28  9:30 ` [PATCH 1/2] MAKEALL: allow users to increase verbosity and sidestep logging Sascha Hauer
  1 sibling, 0 replies; 3+ messages in thread
From: Ahmad Fatoum @ 2024-11-25 15:12 UTC (permalink / raw)
  To: barebox; +Cc: Ahmad Fatoum

By setting the log directory to an empty string, all log output goes to
the console and can thus be easily seen in the Github Actions CI output.

Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de>
---
 .github/workflows/build-defconfigs.yml    | 2 +-
 .github/workflows/test-labgrid-pytest.yml | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/.github/workflows/build-defconfigs.yml b/.github/workflows/build-defconfigs.yml
index f8cb7c2a5929..c95c56b6ba88 100644
--- a/.github/workflows/build-defconfigs.yml
+++ b/.github/workflows/build-defconfigs.yml
@@ -39,7 +39,7 @@ jobs:
 
         ./test/generate-dummy-fw.sh
 
-        ./MAKEALL -O build-${{matrix.arch}} \
+        ./MAKEALL -O build-${{matrix.arch}} -l "" -v 0 \
                 -k common/boards/configs/disable_size_check.config \
                 -k common/boards/configs/disable_target_tools.config \
                 -k common/boards/configs/enable_werror.config \
diff --git a/.github/workflows/test-labgrid-pytest.yml b/.github/workflows/test-labgrid-pytest.yml
index 5cf726854b6e..2a9f7a53aced 100644
--- a/.github/workflows/test-labgrid-pytest.yml
+++ b/.github/workflows/test-labgrid-pytest.yml
@@ -63,7 +63,7 @@ jobs:
       run: |
         export ARCH=${{matrix.arch}}
 
-        ./MAKEALL -O build-${{matrix.arch}} \
+        ./MAKEALL -O build-${{matrix.arch}} -l "" -v 0 \
                 -k common/boards/configs/enable_self_test.config \
                 -k common/boards/configs/disable_target_tools.config \
                 ${{matrix.defconfig}}
-- 
2.39.5




^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH 1/2] MAKEALL: allow users to increase verbosity and sidestep logging
  2024-11-25 15:12 [PATCH 1/2] MAKEALL: allow users to increase verbosity and sidestep logging Ahmad Fatoum
  2024-11-25 15:12 ` [PATCH 2/2] ci: don't run make in silent mode Ahmad Fatoum
@ 2024-11-28  9:30 ` Sascha Hauer
  1 sibling, 0 replies; 3+ messages in thread
From: Sascha Hauer @ 2024-11-28  9:30 UTC (permalink / raw)
  To: barebox, Ahmad Fatoum


On Mon, 25 Nov 2024 16:12:45 +0100, Ahmad Fatoum wrote:
> MAKEALL always logs into a LOGDIR, but the output is not very talkative,
> because for compiling, make is always called with -s (silent) option,
> which prevents both V=0 and V=1 from affecting the output.
> 
> To make the output of MAKEALL more usefuly from CI, we want V=0 to have
> an effect (i.e. print messages like `CC     version.o') and all output
> to go to stdout/stderr, because it's more user friendly to have the
> output directly in the Github Actions log instead of being in a zip file
> that needs to be downloaded.
> 
> [...]

Applied, thanks!

[1/2] MAKEALL: allow users to increase verbosity and sidestep logging
      https://git.pengutronix.de/cgit/barebox/commit/?id=6006ae2abf0b (link may not be stable)
[2/2] ci: don't run make in silent mode
      https://git.pengutronix.de/cgit/barebox/commit/?id=6f2d8157e2a6 (link may not be stable)

Best regards,
-- 
Sascha Hauer <s.hauer@pengutronix.de>




^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2024-11-28  9:30 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-11-25 15:12 [PATCH 1/2] MAKEALL: allow users to increase verbosity and sidestep logging Ahmad Fatoum
2024-11-25 15:12 ` [PATCH 2/2] ci: don't run make in silent mode Ahmad Fatoum
2024-11-28  9:30 ` [PATCH 1/2] MAKEALL: allow users to increase verbosity and sidestep logging Sascha Hauer

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox