On Wed, Sep 17, 2014 at 07:03:56AM -0700, Tom Stellard wrote: > On Wed, Sep 17, 2014 at 09:29:34PM +1000, Jonathan Gray wrote: > > On Tue, Sep 16, 2014 at 06:24:40PM -0400, Tom Stellard wrote: > > > On Tue, Sep 09, 2014 at 07:56:03PM +0100, Emil Velikov wrote: > > > > On 09/09/14 16:26, Tom Stellard wrote: > > > > > On Sat, Sep 06, 2014 at 01:43:55AM +1000, Jonathan Gray wrote: > > > > >> In LLVM 3.4.1 and 3.4.2 the patch level was only set in config.h when > > > > >> LLVM was built via autoconf and not when it was built with cmake. > > > > >> Fall back to retrieving the patch level from llvm-config --version to > > > > >> handle this case. > > > > >> > > > > > > > > > > We should extract LLVM_VERSION_PATH from $LLVM_VERSION and then we > > > > > won't > > > > > have to worry about which config file it is in. > > > > > > > > > I believe you meant VERSION_PATCH above ? Indeed that would nice thing > > > > to have > > > > but I doubt that it will get back-ported to the llvm 3.4 branch. > > > > > > > > > > I mean we should do this in Mesa's configure script. Something like: > > > > > > LLVM_VERSION_PATCH = echo $LLVM_VERSION | sed 's/^[0-9]\+\.[0-9]\+\.//g' > > > > This should be > > > > LLVM_VERSION_PATCH = echo $LLVM_VERSION | sed -E 's/^[0-9]+\.[0-9]+\.//g' > > > > $ echo 3.4.2 | sed 's/^[0-9]\+\.[0-9]\+\.//g' > > 3.4.2 > > > > $ echo 3.4.2 | sed -E 's/^[0-9]+\.[0-9]+\.//g' > > 2 > > > > $ echo 3.4.2 | gsed 's/^[0-9]\+\.[0-9]\+\.//g' > > 2 > > > > $ echo 3.4.2 | gsed -E 's/^[0-9]+\.[0-9]+\.//g' > > 2 > > Which of these examples are *BSD compatible?
To be compliant with POSIX you can only use + in extended regular expressions the use of + in basic regular expressions is apparently a gnu extension? http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html Using sed with extended regular expressions via -E is also an extension but it would seem a more common one. http://pubs.opengroup.org/onlinepubs/9699919799/utilities/sed.html In the above examples gsed is the gnu one and sed is the Diomidis Spinellis/BSD/OS X sed. The way the REs are handled depends on how REs are implemented in the respective libc versions. This is really the same issue you reviewed and pushed a fix for in cdb353539c259d5c5137394f6a7b4dafef9a40da except there is no 'esed' for EREs with sed. So the version with -E should be preferred. But either way there is a problem with versions of llvm that don't have a patch level. $ echo 3.4 | sed -E 's/^[0-9]+\.[0-9]+\.//g' 3.4 so if you want to use sed it should be something like $ echo 3.4 | sed -E 's/^[0-9]+\.[0-9]+//g' Then check for an empty string and set it zero. Or just use 'cut' like the cmake patch did. LLVM_VERSION_PATCH=`echo $LLVM_VERSION | cut -d. -f3` if test -z "$LLVM_VERSION_PATCH"; then LLVM_VERSION_PATCH=0 fi _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev