From: Junio C Hamano Date: Fri, 06 Feb 2009 00:12:30 GMT Subject: Re: [PATCH] valgrind: do not require valgrind 3.4.0 or newer Message-ID: <7vljska0ep.fsf@gitster.siamese.dyndns.org> In-Reply-To: <349b2bb9b8f5a6762cccb7834d82125ee4382436.1233867737u.git.johannes.schindelin@gmx.de> Johannes Schindelin 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 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