Skip to contentSkip to conversation

Robusitfy compiler version checks

PATCH New Hans-Christian Egtvedt 1 participant 2 messages Aug 6, 2008 – Aug 12, 2008

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 Robusitfy compiler version checks

The output of "gcc --version" (and equivalently for g++) is somewhat volatile. Specifically, the output from GCC 4.3.1 prerelease which ships with OpenSUSE 11.0 doesn't come close to matching the required pattern in the dependency check script.

The output of gcc -v however is standard between releases and across platforms. It contains a line of the form

gcc version <version> <spoodge>

We can match this reliably and safely, so let's do that instead.

This has been tested across all the systems I have to hand - openSUSE 10.3, 11.0, Xandros, Debian and Cygwin.

Someone with a black belt in sed-fu might be able to simplify this a bit :-)

---

toolchain/dependencies/dependencies.sh +4 -2
index 6b026fd..0d67e3a 100755
@@ -194,7 +194,8 @@ if [ -z "$COMPILER" ]; then
 	exit 1
 fi
 
-COMPILER_VERSION=$($COMPILER --version 2>&1 | $XSED -e 's/^.*(.CC) \([0-9\.]\)/\1/g' -e "s/[-\ ].*//g" -e '1q')
+COMPILER_VERSION=$($COMPILER -v 2>&1 | $XSED -n '/^gcc version/p' |
+	$XSED -e 's/^gcc version \([0-9\.]\)/\1/g' -e 's/[-\ ].*//g' -e '1q')
 if [ -z "$COMPILER_VERSION" ]; then
 	echo "gcc installed:					FALSE"
 	/bin/echo -e "\n\nYou must install 'gcc' on your build machine\n"
@@ -224,7 +225,8 @@ if [ -z "$CXXCOMPILER" ]; then
 	/bin/echo -e "\nYou may have to install 'g++' on your build machine\n"
 	#exit 1
 else
-	CXXCOMPILER_VERSION=$($CXXCOMPILER --version 2>&1 | $XSED -e 's/^.*(.CC) \([0-9\.]\)/\1/g' -e "s/[-\ ].*//g" -e '1q')
+	CXXCOMPILER_VERSION=$($CXXCOMPILER -v 2>&1 | $XSED -n '/^gcc version/p' |
+		$XSED -e 's/^gcc version \([0-9\.]\)/\1/g' -e 's/[-\ ].*//g' -e '1q')
 	if [ -z "$CXXCOMPILER_VERSION" ]; then
 		echo "c++ installed:					FALSE"
 		/bin/echo -e "\nYou may have to install 'g++' on your build machine\n"
#1 lore raw

PATCH 1/1 Robusitfy compiler version checks

On Wed, 2008-08-06 at 08:18 +0200, Hans-Christian Egtvedt wrote:

Bump

Quoted 52 lines

The output of "gcc --version" (and equivalently for g++) is somewhat volatile. Specifically, the output from GCC 4.3.1 prerelease which ships with OpenSUSE 11.0 doesn't come close to matching the required pattern in the dependency check script.

The output of gcc -v however is standard between releases and across platforms. It contains a line of the form

gcc version <version> <spoodge>

We can match this reliably and safely, so let's do that instead.

This has been tested across all the systems I have to hand - openSUSE 10.3, 11.0, Xandros, Debian and Cygwin.

Someone with a black belt in sed-fu might be able to simplify this a bit :-)

---

toolchain/dependencies/dependencies.sh +4 -2
index 6b026fd..0d67e3a 100755
@@ -194,7 +194,8 @@ if [ -z "$COMPILER" ]; then
 	exit 1
 fi
 
-COMPILER_VERSION=$($COMPILER --version 2>&1 | $XSED -e 's/^.*(.CC) \([0-9\.]\)/\1/g' -e "s/[-\ ].*//g" -e '1q')
+COMPILER_VERSION=$($COMPILER -v 2>&1 | $XSED -n '/^gcc version/p' |
+	$XSED -e 's/^gcc version \([0-9\.]\)/\1/g' -e 's/[-\ ].*//g' -e '1q')
 if [ -z "$COMPILER_VERSION" ]; then
 	echo "gcc installed:					FALSE"
 	/bin/echo -e "\n\nYou must install 'gcc' on your build machine\n"
@@ -224,7 +225,8 @@ if [ -z "$CXXCOMPILER" ]; then
 	/bin/echo -e "\nYou may have to install 'g++' on your build machine\n"
 	#exit 1
 else
-	CXXCOMPILER_VERSION=$($CXXCOMPILER --version 2>&1 | $XSED -e 's/^.*(.CC) \([0-9\.]\)/\1/g' -e "s/[-\ ].*//g" -e '1q')
+	CXXCOMPILER_VERSION=$($CXXCOMPILER -v 2>&1 | $XSED -n '/^gcc version/p' |
+		$XSED -e 's/^gcc version \([0-9\.]\)/\1/g' -e 's/[-\ ].*//g' -e '1q')
 	if [ -z "$CXXCOMPILER_VERSION" ]; then
 		echo "c++ installed:					FALSE"
 		/bin/echo -e "\nYou may have to install 'g++' on your build machine\n"

_______________________________________________
buildroot mailing list
buildroot at uclibc.org
http://busybox.net/mailman/listinfo/buildroot

Signature · 2 lines
With kind regards,
Hans-Christian Egtvedt, Applications Engineer