Subject: Makefile check for older binutils broken?

From: Marcelo Tosatti <[email-masked]>
Date: Wed, 26 Oct 2005 11:36:48 -0200

Hi,

While trying to compile 2.6.14-rc4 on my Pegasos (running Debian unstable):

make[2]: Entering directory `/home/marcelo/8xx/linux-2.6.14-rc4'
*** 2.6 kernels no longer build correctly with old versions of binutils.
*** Please upgrade your binutils to 2.12.1 or newer
make[2]: *** [checkbin] Error 1

Even though Debian uses a recent version of binutils:

GNU assembler 2.16.1 Debian GNU/Linux
Copyright 2005 Free Software Foundation, Inc.
This program is free software; you may redistribute it under the terms of
the GNU General Public License.  This program has absolutely no warranty.
This assembler was configured for a target of `powerpc-linux-gnu'.

The return value of the verification command is 0:

marcelo@pegasos:~$ /bin/echo dssall | as -many -o /tmp/output.as >/dev/null 2>&1
marcelo@pegasos:~$ echo $?
0

So somehow the verification inside the Makefile fails (maybe a make or shell 
bug? not sure).

Anyway, surrounding the verification command around an eval expression
does the trick correcting the situation. Is it any good? 

I'm not sure what to expect from older binutils versions as I don't have
any around at the moment for testing.

diff --git a/arch/ppc/Makefile b/arch/ppc/Makefile
index 0432a25..cdd9250 100644
--- a/arch/ppc/Makefile
+++ b/arch/ppc/Makefile
@@ -126,7 +126,7 @@ checkbin:
 			false; \
 		fi ; \
 	fi
-	@if ! /bin/echo dssall | $(AS) -many -o $(TOUT) >/dev/null 2>&1 ; then \
+	@if ! [[ "/bin/echo dssall | $(AS) -many -o $(TOUT) >/dev/null 2>&1" ]] ; then \
 		echo -n '*** ${VERSION}.${PATCHLEVEL} kernels no longer build ' ; \
 		echo 'correctly with old versions of binutils.' ; \
 		echo '*** Please upgrade your binutils to 2.12.1 or newer' ; \