On 2014-11-04 16:35-0500 Hazen Babcock wrote: >> But if none of the above helps, then the fundamental question you >> should ask yourself is whether you also have similar issues for the >> hand-crafted smoke bindings you started with. [...] If not, then I >> suggest you look very carefully at the VERBOSE=1 results to see how >> our build system is deviating from what you do by hand. > > Yes, the hand-crafted bindings work. If you are interested, you can read what > worked for me (and what I'm trying to duplicate) here: > https://github.com/HazenBabcock/cl-plplot/tree/master/commonqt-plot
>From the README.txt file there it appears you put in a symlink to qt.h As a test I did that locally here as well (to the existing qt.h file in the build tree), and that change improved the situation! For example, nm -a --demangle bindings/qt_gui/smoke/libsmokeplplotqt.so |\ grep -i pl |\ wc -l now shows 52 PLplot-related symbols in the library (compared to 17 before), and ldd -r bindings/qt_gui/smoke/libsmokeplplotqt.so shows no undefined symbols or other issues. Note, this better result was obtained with the git version of plplotqt.h software@raven> cat plplotqt.h #include "qt.h" with no extra #defines. But to me it was incredible that /usr/bin/smokegen -config /usr/share/smokegen/qt-config.xml \ -smokeconfig \ /home/software/plplot/HEAD/plplot.git/bindings/qt_gui/smoke/smokeconfig.xml \ -I"/home/software/plplot/HEAD/plplot.git/bindings/qt_gui/smoke" \ -I"/home/software/plplot/HEAD/plplot.git/include" \ -I"/home/software/plplot/HEAD/plplot.git/lib/qsastime" \ -I"/home/software/plplot/HEAD/plplot.git/lib/nistcd" \ -I"/home/software/plplot/HEAD/plplot.git/drivers" \ -I"/home/software/plplot/HEAD/build_dir" \ -I"/home/software/plplot/HEAD/build_dir/include" -- \ /home/software/plplot/HEAD/plplot.git/bindings/qt_gui/smoke/plplotqt.h (the command issued by our build system) cannot find qt.h in the "/home/software/plplot/HEAD/plplot.git/include" directory specifically mentioned as an -I option. And (important!) this implies none of the above -I options are being honored so your symlink workaround is only going to generate an extremely limited result. I then realized the above was not exactly consistent with the one example of a -I option in the above URL which had a space between the "-I" and the directory name. So I tried that form instead, e.g., /usr/bin/smokegen -config /usr/share/smokegen/qt-config.xml \ -smokeconfig \ /home/software/plplot/HEAD/plplot.git/bindings/qt_gui/smoke/smokeconfig.xml \ -I /home/software/plplot/HEAD/plplot.git/bindings/qt_gui/smoke \ -I /home/software/plplot/HEAD/plplot.git/include \ -I /home/software/plplot/HEAD/plplot.git/lib/qsastime \ -I /home/software/plplot/HEAD/plplot.git/lib/nistcd \ -I /home/software/plplot/HEAD/plplot.git/drivers \ -I /home/software/plplot/HEAD/build_dir \ -I /home/software/plplot/HEAD/build_dir/include -- \ /home/software/plplot/HEAD/plplot.git/bindings/qt_gui/smoke/plplotqt.h without the symlink and the result was a much larger number (263) of symbols than the 52 found above or 17 found previously with the combination of just the symlink and the ignore (no-space) -I options. So it appears the symlink method has been quite limited in what it can do, and the above is much more complete (and also passes the ldd -r test). I have committed (commit ids 2b3f9c2 and 0904d30) that build system fix, and I look forward to some follow up from you. For example, you should look over the smokegen-generated source code to see if some of the above -I options are dragging in too much. If some of them should be removed, then all you have to do is remove the corresponding directory name in the include_directories_LIST variable. Note the latest version of the CMake logic which now means any change to that list is done consistently for not only smokegen but also the -I options used to build from those generated sources. Also, the current log file contains the following: plplotqt.h: (96111, 51): Expression expected : ConstructPtr cptr = qMetaTypeConstructHelper<T>; plplotqt.h: (96111, 51): Initializer clause expected : ConstructPtr cptr = qMetaTypeConstructHelper<T>; plplotqt.h: (96113, 45): Expression expected : DeletePtr dptr = qMetaTypeDeleteHelper<T>; plplotqt.h: (96113, 45): Initializer clause expected : DeletePtr dptr = qMetaTypeDeleteHelper<T>; plplotqt.h: (96129, 41): Expression expected : SavePtr sptr = qMetaTypeSaveHelper<T>; which may indicate the current include_directories_LIST variable has too many directories or some other fix has to be made to get rid of what appear to be warning messages. Of course, once you are satisfied with the completeness of these bindings, I look forward to you adding a number of examples. By the way, I believe the above issue I worked around is caused by an egregious smokegen bug in how it parses -I options. Accordingly, I have made a debian bug report about this <https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=768105> which I hope the Debian packager will pass upstream to the smokegen developers. But the Debian stable version of smokegen that I am using is pretty old so I also request that you ask the smokegen developers about this obvious human engineering issue (violation of the principle of least surprise) to see if they have fixed it in the latest version of smokegen. 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 __________________________ ------------------------------------------------------------------------------ _______________________________________________ Plplot-devel mailing list Plplot-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/plplot-devel