Re: [PATCH] valgrind: do not require valgrind 3.4.0 or newer
From: Junio C Hamano <hidden>
Date: 2016-06-15 22:46:06
Johannes Schindelin [off-list ref] writes:
Valgrind 3.4.0 is pretty new, and even if --track-origins is a nice feature, it is not the end of the world if that is not available. So play nice and use that option only when only an older version of valgrind is available. In the same spirit, refrain from the use of '...' in suppression files, which is also a feature only valgrind 3.4 and newer understand. Signed-off-by: Johannes Schindelin <redacted>
Thanks.
+TRACK_ORIGINS= + +VALGRIND_VERSION=$(valgrind --version) +VALGRIND_MAJOR=$(expr "$VALGRIND_VERSION" : '[^0-9]*\([0-9]*\)') +VALGRIND_MINOR=$(expr "$VALGRIND_VERSION" : '[^0-9]*[0-9]*\.\([0-9]*\)') +test 3 -gt "$VALGRIND_MAJOR" || +test 3 -eq "$VALGRIND_MAJOR" -a 4 -gt "$VALGRIND_MINOR" || +TRACK_ORIGINS=--track-origins=yes
It took me a while to convince myself that
"3 > major || (3 == major && 4 > minor) || do-this"
is equivalent to
"if (3 < major || (3 == major && 4 <= minor)) { do-this }"
which would be:
if test 3 -lt "$VALGRIND_MAJOR" ||
test 3 -eq "$VALGRIND_MAJOR" -a 4 -le "$VALGRIND_MINOR"
then
TRACK_ORIGINS=--track-origins=yes
fi
or more commonly:
if test "$VALGRIND_MAJOR" -gt 3 ||
test "$VALGRIND_MAJOR" -eq 3 -a "$VALGRIND_MINOR" -ge 4
then
TRACK_ORIGINS=--track-origins=yes
fi