Randy, Thanks for the update.
Best Regards, Zhenhua > -----Original Message----- > From: Randy MacLeod [mailto:randy.macl...@windriver.com] > Sent: Wednesday, July 24, 2013 1:25 AM > To: Luo Zhenhua-B19537 > Cc: openembedded-core@lists.openembedded.org; Yu Zongchun-B40527; Hatle, > Mark > Subject: Re: [OE-core] [oe-core][patch v2] sanity.bbclass: correct the > gcc_arch check logic > > On 13-07-05 04:23 AM, Luo Zhenhua-B19537 wrote: > > Hi Randy, > > > > Any update? Can this patch be applied? > > > > Now "sed -e 's/if status != 0/if status == 0/' sanity.bbclass" is > needed in my test script to ensure Yocto can work on our build server. > > > > > > Best Regards, > > > > Zhenhua > > Zhenhua, > > I apologize for the huge delay (vacation, day job, ...). > > Mark and I worked on this and he sent: > > commit c126729b29822d3602c9c4fd9016cc79b6057fc5 > Author: Mark Hatle <mark.ha...@windriver.com> > Date: Mon Jul 15 15:10:26 2013 -0500 > > sanity.bbclass: Update gcc sanity check > > which seems like the right solution. > > // Randy > > > > > >> -----Original Message----- > >> From: Luo Zhenhua-B19537 > >> Sent: Thursday, June 27, 2013 12:04 PM > >> To: 'Randy MacLeod' > >> Cc: openembedded-core@lists.openembedded.org; Yu Zongchun-B40527; > >> Hatle, Mark > >> Subject: RE: [OE-core] [oe-core][patch v2] sanity.bbclass: correct > >> the gcc_arch check logic > >> > >> Randy, > >> > >> Thanks for the details. > >> > >> Following is my trial result, FYI. > >> > >> [b19537@busy ~]$ lsb_release -a > >> LSB Version: :core-4.0-amd64:core-4.0-ia32:core-4.0-noarch:graphics- > >> 4.0-amd64:graphics-4.0-ia32:graphics-4.0-noarch:printing-4.0- > >> amd64:printing-4.0-ia32:printing-4.0-noarch > >> Distributor ID: CentOS > >> Description: CentOS release 5.9 (Final) > >> Release: 5.9 > >> Codename: Final > >> [b19537@busy ~]$ > >> [b19537@busy ~]$ gcc -v > >> Using built-in specs. > >> Target: x86_64-redhat-linux > >> Configured with: ../configure --prefix=/usr --mandir=/usr/share/man > >> -- infodir=/usr/share/info --enable-shared --enable-threads=posix > >> --enable- checking=release --with-system-zlib --enable-__cxa_atexit > >> --disable- libunwind-exceptions --enable-libgcj-multifile --enable- > >> languages=c,c++,objc,obj-c++,java,fortran,ada --enable-java-awt=gtk > >> -- disable-dssi --disable-plugin > >> --with-java-home=/usr/lib/jvm/java-1.4.2- > >> gcj-1.4.2.0/jre --with-cpu=generic --host=x86_64-redhat-linux Thread > >> model: posix gcc version 4.1.2 20080704 (Red Hat 4.1.2-54) > >> [b19537@busy ~]$ [b19537@busy ~]$ cat gcc_test_new.c int main (){ > >> volatile int atomic = 2; __sync_bool_compare_and_swap (&atomic, 2, > >> 3); return 0;} [b19537@busy ~]$ [b19537@busy ~]$ gcc -o gcc_test_new > >> gcc_test_new.c [b19537@busy ~]$ echo $? > >> 0 > >> [b19537@busy ~]$ gcc -march=native -o gcc_test_new gcc_test_new.c > >> gcc_test_new.c:1: error: bad value (native) for -march= switch > >> gcc_test_new.c:1: error: bad value (native) for -mtune= switch > >> [b19537@busy ~]$ echo $? > >> 1 > >> [b19537@busy ~]$ > >> [b19537@busy ~]$ gcc -march=x86-64 -o gcc_test_new gcc_test_new.c > >> [b19537@busy ~]$ echo $? > >> 0 > >> [b19537@busy ~]$ > >> > >> > >> Best Regards, > >> > >> Zhenhua > >> > >> > >>> -----Original Message----- > >>> From: Randy MacLeod [mailto:randy.macl...@windriver.com] > >>> Sent: Thursday, June 27, 2013 6:17 AM > >>> To: Luo Zhenhua-B19537 > >>> Cc: openembedded-core@lists.openembedded.org; Yu Zongchun-B40527; > >>> Hatle, Mark > >>> Subject: Re: [OE-core] [oe-core][patch v2] sanity.bbclass: correct > >>> the gcc_arch check logic > >>> > >>> On 13-06-19 11:28 PM, Luo Zhenhua-B19537 wrote: > >>>> Ping. > >>>> > >>>>> -----Original Message----- > >>>>> From: Luo Zhenhua-B19537 > >>>>> Sent: Tuesday, June 18, 2013 9:26 PM > >>>>> To: 'Richard Purdie'; Randy MacLeod > >>>>> Cc: openembedded-core@lists.openembedded.org; Yu Zongchun-B40527 > >>>>> Subject: RE: [OE-core] [oe-core][patch v2] sanity.bbclass: correct > >>>>> the gcc_arch check logic > >>>>> > >>>>> Hi Randy, > >>>>> > >>>>> During the test on my machine with gcc-4.1.2, if -march=native is > >>>>> not supported by host gcc, a non-zero value(256) returns, > >>>>> otherwise 0 > >>> returns. > >>>>> > >>>>> [LOG] > >>>>> status is 256 > >>>>> result is gcc_test.c:1: error: bad value (native) for -march= > >>>>> switch > >>>>> gcc_test.c:1: error: bad value (native) for -mtune= switch > >>>>> > >>>>> Please confirm if this is same as your result. > >>> > >>> Yes it's essentially the same. > >>> > >>> Mark decided that the previous test program that checked for the > >>> existence of: > >>> __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 > >>> would be better done as a check for: > >>> __sync_bool_compare_and_swap > >>> I believe he got the idea from looking at glib's configure script. > >>> > >>> I'm working on properly checking on which value to give to march: > >>> native,i686,x86-64. More tomorrow. > >>> > >>> // Randy > >>> > >>> Test results and prelim code if you are interested. > >>> > >>> > >>> Here's how that test behaves with the old toolchain: > >>> > >>> ### What's the host setup? > >>> > >>> $ gcc --version > >>> gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-54) Copyright (C) 2006 Free > >>> Software Foundation, Inc. > >>> This is free software; see the source for copying conditions. There > >>> is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A > >>> PARTICULAR PURPOSE. > >>> > >>> $ head -1 /etc/issue > >>> CentOS release 5.9 (Final) > >>> > >>> > >>> ### Old test and results: All options fail, returning a status of 1. > >>> > >>> $ gcc -o /tmp/jj /tmp/gcc-jj.c > >>> /tmp/gcc-jj.c: In function ‘main’: > >>> /tmp/gcc-jj.c:1: error: ‘__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4’ > >>> undeclared (first use in this function) > >>> /tmp/gcc-jj.c:1: error: (Each undeclared identifier is reported only > >>> once > >>> /tmp/gcc-jj.c:1: error: for each function it appears in.) > >>> > >>> $ echo $? > >>> 1 > >>> > >>> > >>> $ gcc -march=native -o /tmp/jj /tmp/gcc-jj.c > >>> /tmp/gcc-jj.c:1: error: bad value (native) for -march= switch > >>> /tmp/gcc-jj.c:1: error: bad value (native) for -mtune= switch $ echo > $? > >>> 1 > >>> > >>> $ gcc -march=i686 -o /tmp/jj /tmp/gcc-jj.c > >>> /tmp/gcc-jj.c: In function ‘main’: > >>> /tmp/gcc-jj.c:1: error: ‘__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4’ > >>> undeclared (first use in this function) > >>> /tmp/gcc-jj.c:1: error: (Each undeclared identifier is reported only > >>> once > >>> /tmp/gcc-jj.c:1: error: for each function it appears in.) $ echo $? > >>> 1 > >>> > >>> > >>> > >>> > >>> ### New test and results: -march=`mangle uname -m` works. > >>> > >>> $ cat /tmp/gcc_test.c > >>> int main (){ volatile int atomic = 2; __sync_bool_compare_and_swap > >>> (&atomic, 2, 3); return 0;} > >>> > >>> > >>> $ gcc -o /tmp/jj /tmp/gcc_test.c > >>> /tmp/ccEVX7IX.o: In function `main': > >>> gcc_test.c:(.text+0x2f): undefined reference to > >>> `__sync_bool_compare_and_swap_4' > >>> collect2: ld returned 1 exit status > >>> $ echo $? > >>> 1 > >>> > >>> $ gcc -march=native -o /tmp/jj /tmp/gcc_test.c > >>> /tmp/gcc_test.c:1: error: bad value (native) for -march= switch > >>> /tmp/gcc_test.c:1: error: bad value (native) for -mtune= switch $ > >>> echo $? > >>> 1 > >>> > >>> $ uname -m > >>> i686 > >>> > >>> $ gcc -march=i686 -o /tmp/jj /tmp/gcc_test.c > >>> rmacleod@yow-lpggp1 .../wrs/b/snty $ echo $? > >>> 0 > >>> > >>> So you see that -march=native isn't useful for gcc-4.1.2 but > >>> -march=`munged uname -m` is. > >>> > >>> > >>> I'm in the middle of writing a more complete test but my lack of > >>> python development is showing: > >>> > >>> > >>> -# Checks if necessary to add option march to host gcc > >>> +# Checks if necessary to add march option to host gcc > >>> def check_gcc_march(sanity_data): > >>> - result = False > >>> + result = "" > >>> > >>> # Check if -march not in BUILD_CFLAGS > >>> if sanity_data.getVar("BUILD_CFLAGS",True).find("-march") < 0: > >>> @@ -293,12 +293,22 @@ def check_gcc_march(sanity_data): > >>> # Check if GCC could work without march > >>> status,result = > >>> oe.utils.getstatusoutput("${BUILD_PREFIX}gcc > >>> gcc_test.c -o gcc_test") > >>> if status != 0: > >>> - # Check if GCC could work with march > >>> + # Check if GCC could work with march=native > >>> status,result = > >>> oe.utils.getstatusoutput("${BUILD_PREFIX}gcc -march=native > >>> gcc_test.c -o > >>> gcc_test") > >>> - if status != 0: > >>> - result = True > >>> + if status == 0: > >>> + result = "native" > >>> else: > >>> - result = False > >>> + # Check if GCC could work with march=i686 > >>> + status,result = > >>> oe.utils.getstatusoutput("${BUILD_PREFIX}gcc -march=x86-64 > >>> gcc_test.c -o > >>> gcc_test") > >>> + if status == 0: > >>> + result = "x86-64" > >>> + else: > >>> + # Check if GCC could work with march=i686 > >>> + status,result = > >>> oe.utils.getstatusoutput("${BUILD_PREFIX}gcc -march=i686 gcc_test.c > >>> -o > >>> gcc_test") > >>> + if status == 0: > >>> + result = "i686" > >>> + else: > >>> + result = "none" > >>> > >>> > >>> ... > >>> > >>> - if check_gcc_march(d): > >>> - status.addresult("Your gcc version is older than 4.5, please > >>> add the following param to local.conf\n \ > >>> - BUILD_CFLAGS_append = \" -march=native\"\n") > >>> + gcc_march_option = check_gcc_march(d) > >>> + if gcc_march_option != "": > >>> + if gcc_march_option == "none": > >>> + status.addresult("Your gcc version is too old.\n \ > >>> + else: > >>> + status.addresult("Your gcc version is older than 4.5, > >>> please add the following param to local.conf\n \ > >>> + BUILD_CFLAGS_append = \" -march=%s\"\n", > >>> gcc_march_option) > >>> > >>> > >>> > >>> I'll clean this up to actually work and probably use ${BUILD_ARCH} > >>> instead of i686/x86-64. > >>> > >>> More tomorrow. > >>> > >>> // Randy > >>> > >>>>> > >>>>> > >>>>> Best Regards, > >>>>> > >>>>> Zhenhua > >>>>> > >>>>> > >>>>>> -----Original Message----- > >>>>>> From: Richard Purdie [mailto:richard.pur...@linuxfoundation.org] > >>>>>> Sent: Tuesday, June 18, 2013 9:04 PM > >>>>>> To: Luo Zhenhua-B19537; Randy MacLeod > >>>>>> Cc: openembedded-core@lists.openembedded.org; Yu Zongchun-B40527 > >>>>>> Subject: Re: [OE-core] [oe-core][patch v2] sanity.bbclass: > >>>>>> correct > >>> the > >>>>>> gcc_arch check logic > >>>>>> > >>>>>> On Tue, 2013-06-18 at 21:08 +0800, Zhenhua Luo wrote: > >>>>>>> The gcc arch check result is incorrect when gcc version is older > >>>>>>> than > >>>>>> 4.5. > >>>>>>> Sanity checker requests user to add "-march=native" into > >>>>>>> BUILD_CFLAGS even if the flag is not supported by host gcc. > >>>>>>> > >>>>>>> The status is 0 when -march=native is supported by host gcc, so > >>>>>>> set result to True, otherwise set result to False. > >>>>>>> > >>>>>>> Signed-off-by: Zhenhua Luo <zhenhua....@freescale.com> > >>>>>>> --- > >>>>>>> meta/classes/sanity.bbclass | 2 +- > >>>>>>> 1 file changed, 1 insertion(+), 1 deletion(-) > >>>>>>> > >>>>>>> diff --git a/meta/classes/sanity.bbclass > >>>>>>> b/meta/classes/sanity.bbclass index 3b9934b..ee09679 100644 > >>>>>>> --- a/meta/classes/sanity.bbclass > >>>>>>> +++ b/meta/classes/sanity.bbclass > >>>>>>> @@ -325,7 +325,7 @@ def check_gcc_march(sanity_data): > >>>>>>> if status != 0: > >>>>>>> # Check if GCC could work with march > >>>>>>> status,result = > >>>>>> oe.utils.getstatusoutput("${BUILD_PREFIX}gcc -march=native > >>>>>> gcc_test.c -o > >>>>>> gcc_test") > >>>>>>> - if status != 0: > >>>>>>> + if status == 0: > >>>>>>> result = True > >>>>>>> else: > >>>>>>> result = False > >>>>>> > >>>>>> Can you and Randy please sort out what the correct value is here > >>> please. > >>>>>> This appears to directly revert > >>>>>> > >>> http://git.yoctoproject.org/cgit.cgi/poky/commit/?id=ad276d7d89190c5 > >>> 7a > >>>>>> 152 > >>>>>> 867d7278ee18f784ff2c > >>>>>> > >>>>>> Cheers, > >>>>>> > >>>>>> Richard > >>>>>> > >>>>>> > >>>> > >>> > >>> > >>> -- > >>> # Randy MacLeod. SMTS, Linux, Wind River > >>> Direct: 613.963.1350 > > > > > -- > # Randy MacLeod. SMTS, Linux, Wind River > Direct: 613.963.1350 _______________________________________________ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-core