<html><head><meta http-equiv="Content-Type" content="text/html; charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><br class=""><div><br class=""><blockquote type="cite" class=""><div class="">On Mar 10, 2021, at 5:59 PM, Fande Kong <<a href="mailto:fdkong.jd@gmail.com" class="">fdkong.jd@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class=""><div class=""><div class="">Do not know what the fix should look like, but this works for me<br class=""></div></div></div></div></blockquote><div><br class=""></div>   Please clarify. </div><div><br class=""></div><div>       Is this using the mpicc that has a -pie in the show or not? </div><div><br class=""></div><div>       Is this using the first "fix" I sent you also?</div><div><br class=""></div><div>  Please send your entire patch as an attachment and the successful configure.log </div><div><br class=""></div><div>  Barry</div><div><br class=""><blockquote type="cite" class=""><div class=""><div dir="ltr" class=""><div class=""><div class=""><br class=""><br class=""> @staticmethod<br class="">@@ -1194,7 +1194,6 @@ class Configure(config.base.Configure):<br class="">     output.find('unrecognized command line option') >= 0 or output.find('unrecognized option') >= 0 or output.find('unrecognised option') >= 0 or<br class="">     output.find('not recognized') >= 0 or output.find('not recognised') >= 0 or<br class="">     output.find('unknown option') >= 0 or output.find('unknown flag') >= 0 or output.find('Unknown switch') >= 0 or<br class="">-    output.find('ignoring option') >= 0 or output.find('ignored') >= 0 or<br class="">     output.find('argument unused') >= 0 or output.find('not supported') >= 0 or<br class="">     # When checking for the existence of 'attribute'<br class="">     output.find('is unsupported and will be skipped') >= 0 or<br class=""><br class=""><br class=""><br class=""></div>Thanks,<br class=""><br class=""></div>Fande<br class=""></div><br class=""><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Mar 10, 2021 at 4:21 PM Fande Kong <<a href="mailto:fdkong.jd@gmail.com" class="">fdkong.jd@gmail.com</a>> wrote:<br class=""></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr" class=""><div dir="ltr" class=""><br class=""></div><br class=""><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Mar 10, 2021 at 1:36 PM Satish Balay <<a href="mailto:balay@mcs.anl.gov" target="_blank" class="">balay@mcs.anl.gov</a>> wrote:<br class=""></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Can you use a different MPI for this conda install?<br class=""></blockquote><div class=""><br class=""></div><div class="">We control how to build MPI. If I take "-pie" options out of LDFLAGS, conda can not compile mpich.<br class=""><br class=""><br class=""></div><div class=""> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br class="">
Alternative:<br class="">
<br class="">
./configure CC=x86_64-apple-darwin13.4.0-clang COPTFLAGS="-march=core2 -mtune=haswell" CPPFLAGS=-I/Users/kongf/miniconda3/envs/testpetsc/include<br class="">
 LDFLAGS="-Wl,-headerpad_max_install_names -Wl,-dead_strip_dylibs -Wl,-commons,use_dylibs" LIBS="-Wl,-rpath,/Users/kongf/miniconda3/envs/testpetsc/lib -lmpi -lpmpi"<br class=""></blockquote><div class=""><br class=""></div><div class="">MPI can not generate an executable because we took out "-pie". <br class=""><br class=""></div><div class="">Thanks,<br class=""><br class=""></div><div class="">Fande<br class=""></div><div class=""> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br class="">
etc.. [don't know if you really need LDFLAGS options]<br class="">
<br class="">
Satish<br class="">
<br class="">
On Wed, 10 Mar 2021, Fande Kong wrote:<br class="">
<br class="">
> I guess it was encoded in mpicc<br class="">
> <br class="">
> petsc % mpicc -show<br class="">
> x86_64-apple-darwin13.4.0-clang -march=core2 -mtune=haswell -Wl,-pie<br class="">
> -Wl,-headerpad_max_install_names -Wl,-dead_strip_dylibs<br class="">
> -Wl,-rpath,/Users/kongf/miniconda3/envs/testpetsc/lib<br class="">
> -L/Users/kongf/miniconda3/envs/testpetsc/lib -Wl,-commons,use_dylibs<br class="">
> -I/Users/kongf/miniconda3/envs/testpetsc/include<br class="">
> -L/Users/kongf/miniconda3/envs/testpetsc/lib -lmpi -lpmpi<br class="">
> <br class="">
> <br class="">
> Thanks,<br class="">
> <br class="">
> Fande<br class="">
> <br class="">
> On Wed, Mar 10, 2021 at 12:51 PM Satish Balay <<a href="mailto:balay@mcs.anl.gov" target="_blank" class="">balay@mcs.anl.gov</a>> wrote:<br class="">
> <br class="">
> > > LDFLAGS_LD=-pie -headerpad_max_install_names -dead_strip_dylibs -rpath<br class="">
> > /Users/kongf/miniconda3/envs/testpetsc/lib<br class="">
> > -L/Users/kongf/miniconda3/envs/testpetsc/lib<br class="">
> ><br class="">
> > Does conda compiler pick up '-pie' from this env variable? If so - perhaps<br class="">
> > its easier to just modify it?<br class="">
> ><br class="">
> > Or is it encoded in mpicc wrapper? [mpicc -show]<br class="">
> ><br class="">
> > Satish<br class="">
> ><br class="">
> > On Wed, 10 Mar 2021, Fande Kong wrote:<br class="">
> ><br class="">
> > > Thanks Barry,<br class="">
> > ><br class="">
> > > Got the same result, but  "-pie" was not filtered out somehow.<br class="">
> > ><br class="">
> > > I did changes like this:<br class="">
> > ><br class="">
> > > kongf@x86_64-apple-darwin13 petsc % git diff<br class="">
> > > diff --git a/config/BuildSystem/config/framework.py<br class="">
> > > b/config/BuildSystem/config/framework.py<br class="">
> > > index beefe82956..c31fbeb95e 100644<br class="">
> > > --- a/config/BuildSystem/config/framework.py<br class="">
> > > +++ b/config/BuildSystem/config/framework.py<br class="">
> > > @@ -504,6 +504,8 @@ class Framework(config.base.Configure,<br class="">
> > > script.LanguageProcessor):<br class="">
> > >     lines = [s for s in lines if s.find('Load a valid targeting module or<br class="">
> > > set CRAY_CPU_TARGET') < 0]<br class="">
> > >     # pgi dumps filename on stderr - but returns 0 errorcode'<br class="">
> > >     lines = [s for s in lines if lines != 'conftest.c:']<br class="">
> > > +   # in case -pie is always being passed to linker<br class="">
> > > +   lines = [s for s in lines if s.find('-pie being ignored. It is only<br class="">
> > > used when linking a main executable') < 0]<br class="">
> > >     if lines: output = reduce(lambda s, t: s+t, lines, '\n')<br class="">
> > >     else: output = ''<br class="">
> > >     log.write("Linker stderr after filtering:\n"+output+":\n")<br class="">
> > ><br class="">
> > > The log was attached again.<br class="">
> > ><br class="">
> > > Thanks,<br class="">
> > ><br class="">
> > > Fande<br class="">
> > ><br class="">
> > ><br class="">
> > > On Wed, Mar 10, 2021 at 12:05 PM Barry Smith <<a href="mailto:bsmith@petsc.dev" target="_blank" class="">bsmith@petsc.dev</a>> wrote:<br class="">
> > ><br class="">
> > > >  Fande,<br class="">
> > > ><br class="">
> > > >    Please add in config/BuildSystem/config/framework.py line 528 two<br class="">
> > new<br class="">
> > > > lines<br class="">
> > > ><br class="">
> > > >       # pgi dumps filename on stderr - but returns 0 errorcode'<br class="">
> > > >       lines = [s for s in lines if lines != 'conftest.c:']<br class="">
> > > >       # in case -pie is always being passed to linker<br class="">
> > > >       lines = [s for s in lines if s.find('-pie being ignored. It is<br class="">
> > only<br class="">
> > > > used when linking a main executable') < 0]<br class="">
> > > ><br class="">
> > > >    Barry<br class="">
> > > ><br class="">
> > > >    You have (another of Conda's "take over the world my way" approach)<br class="">
> > > ><br class="">
> > > >    LDFLAGS_LD=-pie -headerpad_max_install_names -dead_strip_dylibs<br class="">
> > -rpath<br class="">
> > > > /Users/kongf/miniconda3/envs/testpetsc/lib<br class="">
> > > > -L/Users/kongf/miniconda3/envs/testpetsc/lib<br class="">
> > > ><br class="">
> > > > Executing: mpicc  -o<br class="">
> > > ><br class="">
> > /var/folders/tv/ljnkj46x3nq45cp9tbkc000c0000gn/T/petsc-pkset22y/config.setCompilers/conftest<br class="">
> > > >  -dynamiclib -single_module<br class="">
> > > ><br class="">
> > /var/folders/tv/ljnkj46x3nq45cp9tbkc000c0000gn/T/petsc-pkset22y/config.setCompilers/conftest.o<br class="">
> > > > Possible ERROR while running linker:<br class="">
> > > > stderr:<br class="">
> > > > ld: warning: -pie being ignored. It is only used when linking a main<br class="">
> > > > executable<br class="">
> > > >             Rejecting C linker flag -dynamiclib -single_module due to<br class="">
> > > ><br class="">
> > > > ld: warning: -pie being ignored. It is only used when linking a main<br class="">
> > > > executable<br class="">
> > > ><br class="">
> > > > This is the correct link command for the Mac but it is being rejected<br class="">
> > due<br class="">
> > > > to the warning message.<br class="">
> > > ><br class="">
> > > ><br class="">
> > > > On Mar 10, 2021, at 10:11 AM, Fande Kong <<a href="mailto:fdkong.jd@gmail.com" target="_blank" class="">fdkong.jd@gmail.com</a>> wrote:<br class="">
> > > ><br class="">
> > > > Thanks, Barry,<br class="">
> > > ><br class="">
> > > > It seems PETSc works fine with manually built compilers. We are pretty<br class="">
> > > > much sure that the issue is related to conda. Conda might introduce<br class="">
> > extra<br class="">
> > > > flags.<br class="">
> > > ><br class="">
> > > > We still need to make it work with conda because we deliver our package<br class="">
> > > > via conda for users.<br class="">
> > > ><br class="">
> > > ><br class="">
> > > > I unset all flags from conda, and got slightly different results this<br class="">
> > > > time.  The log was attached. Anyone could  explain the motivation that<br class="">
> > we<br class="">
> > > > try to build executable without a main function?<br class="">
> > > ><br class="">
> > > > Thanks,<br class="">
> > > ><br class="">
> > > > Fande<br class="">
> > > ><br class="">
> > > > Executing: mpicc -c -o<br class="">
> > > ><br class="">
> > /var/folders/tv/ljnkj46x3nq45cp9tbkc000c0000gn/T/petsc-pkset22y/config.setCompilers/conftest.o<br class="">
> > > ><br class="">
> > -I/var/folders/tv/ljnkj46x3nq45cp9tbkc000c0000gn/T/petsc-pkset22y/config.setCompilers<br class="">
> > > >  -fPIC<br class="">
> > > ><br class="">
> > /var/folders/tv/ljnkj46x3nq45cp9tbkc000c0000gn/T/petsc-pkset22y/config.setCompilers/conftest.c<br class="">
> > > ><br class="">
> > > > Successful compile:<br class="">
> > > > Source:<br class="">
> > > > #include "confdefs.h"<br class="">
> > > > #include "conffix.h"<br class="">
> > > > #include <stdio.h><br class="">
> > > > int (*fprintf_ptr)(FILE*,const char*,...) = fprintf;<br class="">
> > > > void  foo(void){<br class="">
> > > >   fprintf_ptr(stdout,"hello");<br class="">
> > > >   return;<br class="">
> > > > }<br class="">
> > > > void bar(void){foo();}<br class="">
> > > > Running Executable WITHOUT threads to time it out<br class="">
> > > > Executing: mpicc  -o<br class="">
> > > ><br class="">
> > /var/folders/tv/ljnkj46x3nq45cp9tbkc000c0000gn/T/petsc-pkset22y/config.setCompilers/libconftest.so<br class="">
> > > >  -dynamic  -fPIC<br class="">
> > > ><br class="">
> > /var/folders/tv/ljnkj46x3nq45cp9tbkc000c0000gn/T/petsc-pkset22y/config.setCompilers/conftest.o<br class="">
> > > ><br class="">
> > > > Possible ERROR while running linker: exit code 1<br class="">
> > > > stderr:<br class="">
> > > > Undefined symbols for architecture x86_64:<br class="">
> > > >   "_main", referenced from:<br class="">
> > > >      implicit entry/start for main executable<br class="">
> > > > ld: symbol(s) not found for architecture x86_64<br class="">
> > > > clang-11: error: linker command failed with exit code 1 (use -v to see<br class="">
> > > > invocation)<br class="">
> > > >           Rejected C compiler flag -fPIC because it was not compatible<br class="">
> > > > with shared linker mpicc using flags ['-dynamic']<br class="">
> > > ><br class="">
> > > ><br class="">
> > > > On Mon, Mar 8, 2021 at 7:28 PM Barry Smith <<a href="mailto:bsmith@petsc.dev" target="_blank" class="">bsmith@petsc.dev</a>> wrote:<br class="">
> > > ><br class="">
> > > >><br class="">
> > > >>   Fande,<br class="">
> > > >><br class="">
> > > >>      I see you are using CONDA, this can cause issues since it sticks<br class="">
> > all<br class="">
> > > >> kinds of things into the environment. PETSc tries to remove some of<br class="">
> > them<br class="">
> > > >> but perhaps not enough. If you run printenv you will see all the mess<br class="">
> > it is<br class="">
> > > >> dumping in.<br class="">
> > > >><br class="">
> > > >>     Can you trying the same build without CONDA environment?<br class="">
> > > >><br class="">
> > > >>   Barry<br class="">
> > > >><br class="">
> > > >><br class="">
> > > >> On Mar 8, 2021, at 7:31 PM, Matthew Knepley <<a href="mailto:knepley@gmail.com" target="_blank" class="">knepley@gmail.com</a>><br class="">
> > wrote:<br class="">
> > > >><br class="">
> > > >> On Mon, Mar 8, 2021 at 8:23 PM Fande Kong <<a href="mailto:fdkong.jd@gmail.com" target="_blank" class="">fdkong.jd@gmail.com</a>><br class="">
> > wrote:<br class="">
> > > >><br class="">
> > > >>> Thanks Matthew,<br class="">
> > > >>><br class="">
> > > >>> Hmm, we still have the same issue after shutting off all unknown<br class="">
> > flags.<br class="">
> > > >>><br class="">
> > > >><br class="">
> > > >> Oh, I was misinterpreting the error message:<br class="">
> > > >><br class="">
> > > >>   ld: can't link with a main executable file<br class="">
> > > >><br class="">
> > '/var/folders/tv/ljnkj46x3nq45cp9tbkc000c0000gn/T/petsc-6v1w4q4u/config.setCompilers/libconftest.dylib'<br class="">
> > > >><br class="">
> > > >> So clang did not _actually_ make a shared library, it made an<br class="">
> > executable.<br class="">
> > > >> Did clang-11 change the options it uses to build a shared library?<br class="">
> > > >><br class="">
> > > >> Satish, do we test with clang-11?<br class="">
> > > >><br class="">
> > > >>   Thanks,<br class="">
> > > >><br class="">
> > > >>       Matt<br class="">
> > > >><br class="">
> > > >> Thanks,<br class="">
> > > >>><br class="">
> > > >>> Fande<br class="">
> > > >>><br class="">
> > > >>> On Mon, Mar 8, 2021 at 6:07 PM Matthew Knepley <<a href="mailto:knepley@gmail.com" target="_blank" class="">knepley@gmail.com</a>><br class="">
> > > >>> wrote:<br class="">
> > > >>><br class="">
> > > >>>> On Mon, Mar 8, 2021 at 7:55 PM Fande Kong <<a href="mailto:fdkong.jd@gmail.com" target="_blank" class="">fdkong.jd@gmail.com</a>><br class="">
> > wrote:<br class="">
> > > >>>><br class="">
> > > >>>>> Hi All,<br class="">
> > > >>>>><br class="">
> > > >>>>> mpicc rejected "-fPIC". Anyone has a clue how to work around this<br class="">
> > > >>>>> issue?<br class="">
> > > >>>>><br class="">
> > > >>>><br class="">
> > > >>>> The failure is at the last step<br class="">
> > > >>>><br class="">
> > > >>>> Executing: mpicc  -o<br class="">
> > > >>>><br class="">
> > /var/folders/tv/ljnkj46x3nq45cp9tbkc000c0000gn/T/petsc-6v1w4q4u/config.setCompilers/conftest<br class="">
> > > >>>>   -fPIC<br class="">
> > > >>>><br class="">
> > /var/folders/tv/ljnkj46x3nq45cp9tbkc000c0000gn/T/petsc-6v1w4q4u/config.setCompilers/conftest.o<br class="">
> > > >>>><br class="">
> > -L/var/folders/tv/ljnkj46x3nq45cp9tbkc000c0000gn/T/petsc-6v1w4q4u/config.setCompilers<br class="">
> > > >>>> -lconftest<br class="">
> > > >>>> Possible ERROR while running linker: exit code 1<br class="">
> > > >>>> stderr:<br class="">
> > > >>>> ld: can't link with a main executable file<br class="">
> > > >>>><br class="">
> > '/var/folders/tv/ljnkj46x3nq45cp9tbkc000c0000gn/T/petsc-6v1w4q4u/config.setCompilers/libconftest.dylib'<br class="">
> > > >>>> for architecture x86_64<br class="">
> > > >>>> clang-11: error: linker command failed with exit code 1 (use -v to<br class="">
> > see<br class="">
> > > >>>> invocation)<br class="">
> > > >>>><br class="">
> > > >>>> but you have some flags stuck in which may or may not affect this. I<br class="">
> > > >>>> would try shutting them off:<br class="">
> > > >>>><br class="">
> > > >>>> LDFLAGS_LD=-pie -headerpad_max_install_names -dead_strip_dylibs<br class="">
> > -rpath<br class="">
> > > >>>> /Users/kongf/miniconda3/envs/moose/lib<br class="">
> > > >>>> -L/Users/kongf/miniconda3/envs/moose/lib<br class="">
> > > >>>><br class="">
> > > >>>> I cannot tell exactly why clang is failing because it does not<br class="">
> > report a<br class="">
> > > >>>> specific error.<br class="">
> > > >>>><br class="">
> > > >>>>   Thanks,<br class="">
> > > >>>><br class="">
> > > >>>>      Matt<br class="">
> > > >>>><br class="">
> > > >>>> The log was attached.<br class="">
> > > >>>>><br class="">
> > > >>>>> Thanks so much,<br class="">
> > > >>>>><br class="">
> > > >>>>> Fande<br class="">
> > > >>>>><br class="">
> > > >>>><br class="">
> > > >>>><br class="">
> > > >>>> --<br class="">
> > > >>>> What most experimenters take for granted before they begin their<br class="">
> > > >>>> experiments is infinitely more interesting than any results to<br class="">
> > which their<br class="">
> > > >>>> experiments lead.<br class="">
> > > >>>> -- Norbert Wiener<br class="">
> > > >>>><br class="">
> > > >>>> <a href="https://www.cse.buffalo.edu/~knepley/" rel="noreferrer" target="_blank" class="">https://www.cse.buffalo.edu/~knepley/</a><br class="">
> > > >>>> <<a href="http://www.cse.buffalo.edu/~knepley/" rel="noreferrer" target="_blank" class="">http://www.cse.buffalo.edu/~knepley/</a>><br class="">
> > > >>>><br class="">
> > > >>><br class="">
> > > >><br class="">
> > > >> --<br class="">
> > > >> What most experimenters take for granted before they begin their<br class="">
> > > >> experiments is infinitely more interesting than any results to which<br class="">
> > their<br class="">
> > > >> experiments lead.<br class="">
> > > >> -- Norbert Wiener<br class="">
> > > >><br class="">
> > > >> <a href="https://www.cse.buffalo.edu/~knepley/" rel="noreferrer" target="_blank" class="">https://www.cse.buffalo.edu/~knepley/</a><br class="">
> > > >> <<a href="http://www.cse.buffalo.edu/~knepley/" rel="noreferrer" target="_blank" class="">http://www.cse.buffalo.edu/~knepley/</a>><br class="">
> > > >><br class="">
> > > >><br class="">
> > > >> <configure.log><br class="">
> > > ><br class="">
> > > ><br class="">
> > > ><br class="">
> > ><br class="">
> ><br class="">
> ><br class="">
> <br class="">
<br class="">
</blockquote></div></div>
</blockquote></div>
</div></blockquote></div><br class=""></body></html>