[Gluster-devel] Gluster 3.6.2 On Xeon Phi

Kaleb KEITHLEY kkeithle at redhat.com
Thu Jan 29 15:09:16 UTC 2015


On 01/29/2015 09:12 AM, Kaushal M wrote:
> tl;dr: Add a 'LEXLIB=' flag to your configure command, ie. `./configure
> .... LEXLIB=`
>
> This is problem with flex-2.5.38 and above. From this version, flex
> generates a shared library in its default build (libfl.so). This shared
> object doesn't actually contain any exported symbols (AFAIK).
>
> Automake/autoconf automatically add a LEXLIB flag to the linker options
> whenever flex is used. Before 2.5.38, this used to be an empty flag as
> there was no actual library that needed to be linked. But, for 2.5.38
> and above automake sets the flag to '-lfl'. Now during linking, the
> linker searches this library for symbols (yyparse, yylex etc.), fails to
> find any, and fails the glusterfs build.

Excellent. Thanks Kaushal.

But, FYI, I don't experience this problem building on Debian Jessie, 
which has flex-2.5.39. Somehow this has been fixed?

libfl.so (or really libfl_pic.a) on Debian jessie does export two 
symbols: main and yywrap. Looks like the intent is to produce a 
stand-alone parser for something.

i.e.
# nm /usr/lib/x86_64-linux-gnu/libfl_pic.a

libmain.o:
0000000000000000 T main
                  U yylex

libyywrap.o:
0000000000000000 T yywrap



>
> I suppose this problem can be fixed by fixing our build configuration.
> But till then, we can force 'LEXLIB' to be empty by passing and empty
> flag to configure.
>
> I had this problem almost a year back IIRC, when Archlinux updated it's
> flex package to 2.5.38, and found the empty flag solution soon after. I
> added this to my build scripts and forgot about it. The Archlinux
> glusterfs package also uses the same method for its build. I didn't
> report it at the time because it only affected me.
>
> ~kaushal
>
> On Thu, Jan 29, 2015 at 6:53 PM, Kaleb KEITHLEY <kkeithle at redhat.com
> <mailto:kkeithle at redhat.com>> wrote:
>
>     On 01/29/2015 07:43 AM, Rudra Siva wrote:
>
>         Hi,
>
>         Have been able to get Gluster running on Intel's MIC platform. The
>         only code change to Gluster source was an unresolved yylex (I am not
>         really sure why that was coming up - may be someone more
>         familiar with
>         it's use in Gluster can answer).
>
>         At the step for compiling the binaries (glusterd, glusterfsd,
>         glusterfs, glfsheal)  build breaks with an unresolved yylex error.
>
>
>     Hi,
>
>     Maybe your version of bison doesn't support the -p option?
>
>     In libglusterfs the
>         bison -y -p graphyy  ./graph.y
>
>     should have produced a y.tab.c file with
>
>     ...
>     #define yylex           graphyylex
>     ...
>     int graphyylex ();
>     ...
>            yychar = yylex ();
>     ...
>
>     Which is what we get on Linux, MacOS, and *BSD.
>
>
>         For now have a routine yylex that simply calls graphyylex - I don't
>         know if this is even correct however mount functions.
>
>
>     That's a reasonable work-around/hack. At least your flex seems to
>     support the -P option correctly.
>
>
>         GCC - 4.7 (it's an oddity, latest GCC is missing the Phi patches)
>
>         flex --version
>         flex 2.5.39
>
>         bison --version
>         bison (GNU Bison) 3.0
>
>
>     Those seem reasonable. Fedora21 has flex 2.5.37 and boson-3.0.2
>
>
>         I'm still working on testing the RDMA and Infiniband support and can
>         make notes, numbers available when that is complete.
>
>
>     That would be great. Thanks.
>
>     --
>
>     Kaleb
>
>
>
>     _________________________________________________
>     Gluster-devel mailing list
>     Gluster-devel at gluster.org <mailto:Gluster-devel at gluster.org>
>     http://www.gluster.org/__mailman/listinfo/gluster-devel
>     <http://www.gluster.org/mailman/listinfo/gluster-devel>
>
>



More information about the Gluster-devel mailing list