diff mbox series

[v2] Makefile: use shell to calculate map_size

Message ID 20240304203909.63796-1-leon@georgemail.de
State Superseded
Delegated to: Tom Rini
Headers show
Series [v2] Makefile: use shell to calculate map_size | expand

Commit Message

Leon M. Busch-George March 4, 2024, 8:38 p.m. UTC
From: "Leon M. Busch-George" <leon@georgemail.eu>

The error message "bc: command not found" is easily missed since the
build continues.
bc is not a part of coreutils or base-devel. POSIX sh can also do the
calculation.

Signed-off-by: Leon M. Busch-George <leon@georgemail.eu>
---
 Makefile | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

Comments

Leon Busch-George March 5, 2024, 4:40 p.m. UTC | #1
A colleague made me aware that the '[ -n "$$end" ]' is not necessary since 'read' already returns an exit code.

v3 inc

On Mon,  4 Mar 2024 21:38:56 +0100
"Leon M. Busch-George" <leon@georgemail.de> wrote:

> From: "Leon M. Busch-George" <leon@georgemail.eu>
> 
> The error message "bc: command not found" is easily missed since the
> build continues.
> bc is not a part of coreutils or base-devel. POSIX sh can also do the
> calculation.
> 
> Signed-off-by: Leon M. Busch-George <leon@georgemail.eu>
> ---
>  Makefile | 13 +++++++++----
>  1 file changed, 9 insertions(+), 4 deletions(-)
> 
> diff --git a/Makefile b/Makefile
> index a2bc9d5903..e8e794368e 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -1275,10 +1275,15 @@ OBJCOPYFLAGS_u-boot-nodtb.bin := -O binary \
>  binary_size_check: u-boot-nodtb.bin FORCE
>  	@file_size=$(shell wc -c u-boot-nodtb.bin | awk '{print
> $$1}') ; \ map_size=$(shell cat u-boot.map | \
> -		awk '/_image_copy_start/ {start = $$1}
> /_image_binary_end/ {end = $$1} END {if (start != "" && end != "")
> print "ibase=16; " toupper(end) " - " toupper(start)}' \
> -		| sed 's/0X//g' \
> -		| bc); \
> -	if [ "" != "$$map_size" ]; then \
> +		awk ' \
> +			/_image_copy_start/ { start = $$1 } \
> +			/_image_binary_end/ { end = $$1 } \
> +			END { \
> +				if (start != "" && end != "") \
> +					print end " " start; \
> +			}' \
> +		| sh -c 'read end start; [ -n "$$end" ] && echo
> $$((end - start))'); \
> +	if [ -n "$$map_size" ]; then \
>  		if test $$map_size -ne $$file_size; then \
>  			echo "u-boot.map shows a binary size of
> $$map_size" >&2 ; \ echo "  but u-boot-nodtb.bin shows $$file_size"
> >&2 ; \
Dragan Simic March 10, 2024, 10:12 a.m. UTC | #2
Hello Leon,

On 2024-03-04 21:44, Dragan Simic wrote:
> On 2024-03-04 21:38, Leon M. Busch-George wrote:
>> From: "Leon M. Busch-George" <leon@georgemail.eu>
>> 
>> The error message "bc: command not found" is easily missed since the
>> build continues.
>> bc is not a part of coreutils or base-devel. POSIX sh can also do the
>> calculation.
>> 
>> Signed-off-by: Leon M. Busch-George <leon@georgemail.eu>

The v2 is looking good to me.  I also did some testing of the awk code
by hand, outside of the actual Makefile, and it worked as expected.

See also one small nitpick below, and please feel free to include:

Reviewed-by: Dragan Simic <dsimic@manjaro.org>

>> ---
>>  Makefile | 13 +++++++++----
>>  1 file changed, 9 insertions(+), 4 deletions(-)
>> 
>> diff --git a/Makefile b/Makefile
>> index a2bc9d5903..e8e794368e 100644
>> --- a/Makefile
>> +++ b/Makefile
>> @@ -1275,10 +1275,15 @@ OBJCOPYFLAGS_u-boot-nodtb.bin := -O binary \
>>  binary_size_check: u-boot-nodtb.bin FORCE
>>  	@file_size=$(shell wc -c u-boot-nodtb.bin | awk '{print $$1}') ; \

Perhaps a couple of spaces could be added around "print $$1" in the
line above, to nicely round off the code cleanups.

>>  	map_size=$(shell cat u-boot.map | \
>> -		awk '/_image_copy_start/ {start = $$1} /_image_binary_end/ {end =
>> $$1} END {if (start != "" && end != "") print "ibase=16; "
>> toupper(end) " - " toupper(start)}' \
>> -		| sed 's/0X//g' \
>> -		| bc); \
>> -	if [ "" != "$$map_size" ]; then \
>> +		awk ' \
>> +			/_image_copy_start/ { start = $$1 } \
>> +			/_image_binary_end/ { end = $$1 } \
>> +			END { \
>> +				if (start != "" && end != "") \
>> +					print end " " start; \
>> +			}' \
>> +		| sh -c 'read end start; [ -n "$$end" ] && echo $$((end - 
>> start))'); \
>> +	if [ -n "$$map_size" ]; then \
>>  		if test $$map_size -ne $$file_size; then \
>>  			echo "u-boot.map shows a binary size of $$map_size" >&2 ; \
>>  			echo "  but u-boot-nodtb.bin shows $$file_size" >&2 ; \
diff mbox series

Patch

diff --git a/Makefile b/Makefile
index a2bc9d5903..e8e794368e 100644
--- a/Makefile
+++ b/Makefile
@@ -1275,10 +1275,15 @@  OBJCOPYFLAGS_u-boot-nodtb.bin := -O binary \
 binary_size_check: u-boot-nodtb.bin FORCE
 	@file_size=$(shell wc -c u-boot-nodtb.bin | awk '{print $$1}') ; \
 	map_size=$(shell cat u-boot.map | \
-		awk '/_image_copy_start/ {start = $$1} /_image_binary_end/ {end = $$1} END {if (start != "" && end != "") print "ibase=16; " toupper(end) " - " toupper(start)}' \
-		| sed 's/0X//g' \
-		| bc); \
-	if [ "" != "$$map_size" ]; then \
+		awk ' \
+			/_image_copy_start/ { start = $$1 } \
+			/_image_binary_end/ { end = $$1 } \
+			END { \
+				if (start != "" && end != "") \
+					print end " " start; \
+			}' \
+		| sh -c 'read end start; [ -n "$$end" ] && echo $$((end - start))'); \
+	if [ -n "$$map_size" ]; then \
 		if test $$map_size -ne $$file_size; then \
 			echo "u-boot.map shows a binary size of $$map_size" >&2 ; \
 			echo "  but u-boot-nodtb.bin shows $$file_size" >&2 ; \