From: Alan W. I. <ir...@be...> - 2015-07-06 23:35:53
|
On 2015-07-06 10:43-0700 Alan W. Irwin wrote: > On 2015-07-06 16:11-0000 Arjen Markus wrote: > >> Alas, the error I reported persists, even now that /usr/local plays > no role anymore in the build. See the attached tarball. > > Hi Arjen: > > I was happy to see that the Cygwin itk fix I implemented a while back > actually works for you and that all the /usr/local stuff is no longer > contaminating the result in your report. Your elimination of the > possibility of such contamination will be a big help in finding the > source of the remaining issue you are reporting. > > With regard to that issue, I still think it is some visibility problem > since the code that defines the missing symbol should be part of > the PLplot library for the nondynamic case. So could you check both > the definition and visibility of that missing symbol in the PLplot > library for the nondynamic case using the nm method I suggested > before? i.e., > > # change directory to the nondynamic build tree > cd nondynamic/build_tree/ > > # Check for symbol definition in PLplot library > nm --defined-only <plplot library location> |grep plplotLibDir > > # Check for symbol visibility in PLplot library > nm --defined-only --extern-only <plplot library location> |grep plplotLibDir > > Thanks in advance. Hi Arjen: I followed up by doing my own comprehensive test on Linux, and I cannot replicate what I anticipate will be your report of visibility issues from the experiments above. For example, for the nondynamic case I get software@raven> nm --defined-only --extern-only src/libplplot.so |grep plplotLibDir 00000000002cdd10 B plplotLibDir i.e., plplotLibDir is both defined and visible in the PLplot library built on the Linux platform for the nondynamic case. However, I then looked further at where plplotLibDir was defined, and I found the following line that does that in bindings/tcl/tclAPI.c extern PLDLLIMPORT char * plplotLibDir; But that is a non-standard use of PLDLLIMPORT. In fact, the only other place I can find it in our code base (other than in include/pldll.h.in) is in software@raven> find . -type f |grep -v .git |xargs grep PLDLLIMPORT |grep -v pldll.h ./bindings/tcl/tclAPI.c:extern PLDLLIMPORT char * plplotLibDir; ./include/plplotP.h:// extern PLStream PLDLLIMPORT *plsc; and in that latter case that commented out code was replaced by extern PLDLLIMPEXP_DATA( PLStream * ) plsc; The net result of this is I am positive that for best visibility results on all platforms extern PLDLLIMPORT char * plplotLibDir; should be replaced by extern PLDLLIMPEXP_TCLTK_DATA( char * ) plplotLibDir; I have done that change (as of commit ae0e9da) and comprehensively tested it on Linux with no visibility issues showing up for those tests. So please try running scripts/comprehensive_test.sh again to see if ae0e9da solves this final noninteractive issue completely for Cygwin (which would be a new high in Cygwin comprehensive testing). Alan __________________________ Alan W. Irwin Astronomical research affiliation with Department of Physics and Astronomy, University of Victoria (astrowww.phys.uvic.ca). Programming affiliations with the FreeEOS equation-of-state implementation for stellar interiors (freeeos.sf.net); the Time Ephemerides project (timeephem.sf.net); PLplot scientific plotting software package (plplot.sf.net); the libLASi project (unifont.org/lasi); the Loads of Linux Links project (loll.sf.net); and the Linux Brochure Project (lbproject.sf.net). __________________________ Linux-powered Science __________________________ |