Re: [PATCH v2] Makefile: use shell to calculate map_size
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" wrote: > From: "Leon M. Busch-George" > > 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 > --- > 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 ; \
Re: [PATCH] Makefile: use shell to calculate map_size
Oops! That should have went to the list as well... On Mon, 4 Mar 2024 15:40:07 +0100 Leon Busch-George wrote: > Hi Dragan :-) > > Thanks for your reply! > > On Sat, 02 Mar 2024 22:13:08 +0100 > Dragan Simic wrote: > > > > + awk '/_image_copy_start/ {start = $$1} > > > /_image_binary_end/ {end = $$1} END {if (start != "" && end != "") > > > print "echo $$((0x" toupper(end) " - 0x" toupper(start) "))"}' \ > > > | sed 's/0X//g' \ > > > - | bc); \ > > > + | sh); \ > > > > Maybe "sh -s" could be used instead, just for some additional > > strictness. > > -s is the default already but I see no reason against adding it. > Allow me to offer another idea to improve strictness (I'll send a v2): > > awk '.. print end " " start ..' | sh -c 'read end start; echo > $((end - start))' > > That gets rid off sed and the interface between awk and sh is much > cleaner (only the two numbers on one line rather than shell code). > Sadly, the sed 's/0X//g' was introduced without an explanation in > 3ce7a4fefa and but, looking at it more, I'm farly confident it was > only for bc. > > kind regards, > Leon