From: Chris Johns <chr...@rtems.org> - If the left and right values are numbers make the check numeric.
Update #4631 --- source-builder/sb/config.py | 59 ++++++++++++++++++------------------- 1 file changed, 28 insertions(+), 31 deletions(-) diff --git a/source-builder/sb/config.py b/source-builder/sb/config.py index 5bc96e2..e79c9c3 100644 --- a/source-builder/sb/config.py +++ b/source-builder/sb/config.py @@ -68,6 +68,13 @@ def _check_nil(value): istrue = False return istrue +def _check_number(value): + try: + float(value) + return True + except ValueError: + return False + class package: def __init__(self, name, arch, config): @@ -996,37 +1003,27 @@ class file: ifls = (' '.join(ifls[:op_pos]), op, ' '.join(ifls[op_pos + 1:])) break if len(ifls) != 3: - self._error('malformed if: ' + reduce(add, ls, '')) - if ifls[1] == '==': - if ifls[0] == ifls[2]: - istrue = True - else: - istrue = False - elif ifls[1] == '!=' or ifls[1] == '=!': - if ifls[0] != ifls[2]: - istrue = True - else: - istrue = False - elif ifls[1] == '>': - if ifls[0] > ifls[2]: - istrue = True - else: - istrue = False - elif ifls[1] == '>=' or ifls[1] == '=>': - if ifls[0] >= ifls[2]: - istrue = True - else: - istrue = False - elif ifls[1] == '<=' or ifls[1] == '=<': - if ifls[0] <= ifls[2]: - istrue = True - else: - istrue = False - elif ifls[1] == '<': - if ifls[0] < ifls[2]: - istrue = True - else: - istrue = False + self._error('malformed if: ' + reduce(add, ls, '')) + lhs = ifls[0] + operator = ifls[1] + rhs = ifls[2] + if _check_number(lhs) and _check_number(rhs): + log.trace('config: %s: %3d: _if: numeric value check' % \ + (self.name, self.lc)) + lhs = float(lhs) + rhs = float(rhs) + if operator == '==': + istrue = lhs == rhs + elif operator == '!=' or operator == '=!': + istrue = lhs != rhs + elif operator == '>': + istrue = lhs > rhs + elif operator == '>=' or operator == '=>': + istrue = lhs >= rhs + elif operator == '<=' or operator == '=<': + istrue = lhs <= rhs + elif operator == '<': + istrue = lhs < rhs else: self._error('invalid %if operator: ' + reduce(add, ls, '')) -- 2.24.1 _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel