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 |
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 ; \
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 --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 ; \