]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
DEV: makefile: fix POSIX compatibility for "range" target
authorAurelien DARRAGON <adarragon@haproxy.com>
Wed, 16 Aug 2023 16:16:16 +0000 (18:16 +0200)
committerWilly Tarreau <w@1wt.eu>
Wed, 16 Aug 2023 22:09:05 +0000 (00:09 +0200)
make "range" which was introduced with 06d34d4 ("DEV: makefile: add a
new "range" target to iteratively build all commits") does not work with
POSIX shells (namely: bourne shell), and will fail with this kind of
errors:

   |/bin/sh: 6: Syntax error: "(" unexpected (expecting ")")
   |make: *** [Makefile:1226: range] Error 2

This is because arrays and arithmetic expressions which are used for the
"range" target are not supported by sh (unlike bash and other "modern"
interpreters).

However the make "all" target already complies with POSIX, so in this
commit we try to make "range" target POSIX compliant to ensure that the
makefile works as expected on systems where make uses /bin/sh as default
intepreter and where /bin/sh points to POSIX shell.

Makefile

index 19b6b01749637159f8818b7e16e3788bed188cbe..d17f17e94339ececd472761153ba596e5f0588cc 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1234,17 +1234,17 @@ range:
                BRANCH=$$(git branch --show-current HEAD 2>/dev/null); \
                [ -n "$$BRANCH" ] || { echo "Fatal: \"make $@\" may only be used inside a checked out branch."; exit 1; }; \
                [ -z "$${RANGE##*..*}" ] || RANGE="master..$${RANGE}"; \
-               COMMITS=( $$(git rev-list --abbrev-commit --reverse "$${RANGE}") ); \
-               index=1; count=$${#COMMITS[@]}; \
+               COMMITS=$$(git rev-list --abbrev-commit --reverse "$${RANGE}"); \
+               index=1; count=$$(echo $$COMMITS | wc -w); \
                [ "$${count}" -gt 0 ] || { echo "## Fatal: no commit(s) found in range $${RANGE}."; exit 1; }; \
                echo "Found $${count} commit(s) in range $${RANGE}." ; \
                echo "Current branch is $$BRANCH"; \
                echo "Starting to building now..."; \
-               for commit in $${COMMITS[@]}; do \
+               for commit in $$COMMITS; do \
                        echo "[ $$index/$$count ]   $$commit #############################"; \
                        git checkout -q $$commit || die 1; \
                        $(MAKE) all || die 1; \
-                       ((index++)); \
+                       index=$$((index + 1)); \
                done; \
                echo;echo "Done! $${count} commit(s) built successfully for RANGE $${RANGE}" ; \
                git checkout -q "$$BRANCH"; \