-
Notifications
You must be signed in to change notification settings - Fork 2.1k
makefiles/utils/strings.mk: Fix version_is_greater_or_equal [backport 2023.01] #19135
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
makefiles/utils/strings.mk: Fix version_is_greater_or_equal [backport 2023.01] #19135
Conversation
The Makefile function `version_is_greater_or_equal` is used to check if a version of GNU Make is at least the required one. However, it has the built-in assumption the version numbers have to format x.y.z, but Alpine Linux currently ships GNU Make 4.4. This results in `$(call _pad_number,3,)` which runs `printf '$03d' ''` in the shell, which is not valid. This fixes the issue by making `_pad_number` more robust by fall back to printing `0` with the given padding, if the number given to print is empty. (cherry picked from commit 8c055f0)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
backport-ACK.
bors merge
🕐 Waiting for PR status (GitHub check) to be set, probably by CI. Bors will automatically try to run when all required PR statuses are set. |
bors merge |
Already running a review |
bors cancel |
Canceled. |
bors merge |
Already running a review |
19135: makefiles/utils/strings.mk: Fix version_is_greater_or_equal [backport 2023.01] r=benpicco a=maribu # Backport of #19133 ### Contribution description The Makefile function `version_is_greater_or_equal` is used to check if a version of GNU Make is at least the required one. However, it has the built-in assumption the version numbers have to format x.y.z, but Alpine Linux currently ships GNU Make 4.4. This results in `$(call _pad_number,3,)` which runs `printf '$03d' ''` in the shell, which is not valid. This fixes the issue by making `_pad_number` more robust by fall back to printing `0` with the given padding, if the number given to print is empty. ### Testing procedure Append ```Makefile $(info A=$(call version_is_greater_or_equal,4.2.0,4.2.0)) $(info B=$(call version_is_greater_or_equal,4.2,4.2.0)) $(info C=$(call version_is_greater_or_equal,4.1,4.2.0)) $(info D=$(call version_is_greater_or_equal,4.1.9,4.2.0)) $(info E=$(call version_is_greater_or_equal,5.1.9,4.2.0)) $(info F=$(call version_is_greater_or_equal,5.0.0,4.2.0)) $(info G=$(call version_is_greater_or_equal,4.2.1,4.2.0)) $(info H=$(call version_is_greater_or_equal,4.3.1,4.2.0)) ``` e.g. to `makefiles/utils/strings.mk`, build something and observe the info output. This yields ``` A=1 B=1 C= D= E=1 F=1 G=1 H=1 ``` for me and does not complain about invalid `printf` invocations. ### Issues/PRs references None Co-authored-by: Marian Buschsieweke <marian.buschsieweke@ovgu.de>
bors cancel |
Canceled. |
Build succeeded: |
Backport of #19133
Contribution description
The Makefile function
version_is_greater_or_equal
is used to check if a version of GNU Make is at least the required one. However, it has the built-in assumption the version numbers have to format x.y.z, but Alpine Linux currently ships GNU Make 4.4. This results in$(call _pad_number,3,)
which runsprintf '$03d' ''
in the shell, which is not valid.This fixes the issue by making
_pad_number
more robust by fall back to printing0
with the given padding, if the number given to print is empty.Testing procedure
Append
e.g. to
makefiles/utils/strings.mk
, build something and observe the info output.This yields
for me and does not complain about invalid
printf
invocations.Issues/PRs references
None