On Tue, Nov 29, 2011 at 04:54:27PM -0700, Orion Poplawski wrote: > On 11/28/2011 11:56 PM, Alan W. Irwin wrote: >> So this should complete my NON_TRANSITIVE changes to the build system. >> >> Orion and Andrew: I hope this effort has been worth it and greatly >> reduces packaging warnings you have been getting on both Fedora and Debian >> concerning overlinking. > > Thanks for the work on this. Here's where it stands from my testing: > > Build failures: > > /usr/lib/ccache/gcc -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 > -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 > -march=i686 -mtune=atom -fasynchronous-unwind-tables > CMakeFiles/plserver.dir/plserver.c.o -o plserver -rdynamic > ../../src/libplplotd.so.11.0.0 ../tcl/libplplottcltkd.so.9.2.0 > ../../src/libplplotd.so.11.0.0 > -Wl,-rpath,/builddir/build/BUILD/plplot-5.9.9/fedora/src:/builddir/build/BUILD/plplot-5.9.9/fedora/bindings/tcl:/builddir/build/BUILD/plplot-5.9.9/fedora/lib/csa:/builddir/build/BUILD/plplot-5.9.9/fedora/lib/nn:/builddir/build/BUILD/plplot-5.9.9/fedora/lib/qsastime: > > > -Wl,-rpath-link,/builddir/build/BUILD/plplot-5.9.9/fedora/lib/csa:/builddir/build/BUILD/plplot-5.9.9/fedora/lib/nn:/builddir/build/BUILD/plplot-5.9.9/fedora/lib/qsastime:/builddir/build/BUILD/plplot-5.9.9/fedora/bindings/tcl > > > > /usr/bin/ld: CMakeFiles/plserver.dir/plserver.c.o: undefined reference > to symbol 'Tcl_SetVar' > /usr/bin/ld: note: 'Tcl_SetVar' is defined in DSO /usr/lib/libtcl8.5.so > so try adding it to the linker command line > /usr/lib/libtcl8.5.so: could not read symbols: Invalid operation > > And: > > /usr/bin/ld: CMakeFiles/plserver.dir/plserver.c.o: undefined reference > to symbol 'Tk_ParseArgv' > /usr/bin/ld: note: 'Tk_ParseArgv' is defined in DSO /usr/lib/libtk8.5.so > so try adding it to the linker command line > > The Fedora linker requires explicit linking to libraries used by the > compiled code. The attached patch fixes this and similar errors.
This is always the case I think. Debian also requires this. I confirm your patch for tcl / tk fixes things for me and I have applied it to svn > rpmlint shlib ouput: > > plplot-libs.i686: W: unused-direct-shlib-dependency > /usr/lib/libplplotf77d.so.9.1.1 /lib/libm.so.6 > plplot-libs.i686: W: unused-direct-shlib-dependency > /usr/lib/libplplotf77d.so.9.1.1 /lib/libgcc_s.so.1 > plplot-libs.i686: W: unused-direct-shlib-dependency > /usr/lib/libplplotf77d.so.9.1.1 /usr/lib/libquadmath.so.0 > > plplot-libs.i686: W: unused-direct-shlib-dependency > /usr/lib/libplplotf95d.so.9.1.1 /lib/libm.so.6 > plplot-libs.i686: W: unused-direct-shlib-dependency > /usr/lib/libplplotf95d.so.9.1.1 /lib/libgcc_s.so.1 > plplot-libs.i686: W: unused-direct-shlib-dependency > /usr/lib/libplplotf95d.so.9.1.1 /usr/lib/libquadmath.so.0 > > These may just be issues with gfortran as these don't appear on the link > line. > > plplot-libs.i686: W: unused-direct-shlib-dependency > /usr/lib/libplplotcxxd.so.10.0.0 /lib/libm.so.6 > plplot-libs.i686: W: unused-direct-shlib-dependency > /usr/lib/libplplotcxxd.so.10.0.0 /lib/libgcc_s.so.1 > > same here with g++ > > plplot-libs.i686: W: unused-direct-shlib-dependency > /usr/lib/libplplotd.so.11.0.0 /lib/libdl.so.2 > > plplot-qt.i686: W: unused-direct-shlib-dependency > /usr/lib/libplplotqtd.so.0.0.1 /usr/lib/libQtXml.so.4 > > plplot-tk.i686: W: unused-direct-shlib-dependency > /usr/lib/libplplottcltkd.so.9.2.0 /usr/lib/libSM.so.6 > plplot-tk.i686: W: unused-direct-shlib-dependency > /usr/lib/libplplottcltkd.so.9.2.0 /usr/lib/libICE.so.6 > plplot-tk.i686: W: unused-direct-shlib-dependency > /usr/lib/libplplottcltkd.so.9.2.0 /usr/lib/libXext.so.6 > > plplot-wxGTK.i686: W: unused-direct-shlib-dependency > /usr/lib/libplplotwxwidgetsd.so.0.0.0 /usr/lib/libagg.so.2 > plplot-wxGTK.i686: W: unused-direct-shlib-dependency > /usr/lib/libplplotwxwidgetsd.so.0.0.0 /usr/lib/libaggfontfreetype.so.2 > plplot-wxGTK.i686: W: unused-direct-shlib-dependency > /usr/lib/libplplotwxwidgetsd.so.0.0.0 /usr/lib/libfreetype.so.6 > plplot-wxGTK.i686: W: unused-direct-shlib-dependency > /usr/lib/libplplotwxwidgetsd.so.0.0.0 /lib/libm.so.6 > plplot-wxGTK.i686: W: unused-direct-shlib-dependency > /usr/lib/libplplotwxwidgetsd.so.0.0.0 /lib/libpthread.so.0 > > Some other rpmlint issues: > > > plplot.i686: W: file-not-utf8 /usr/share/doc/plplot-5.9.9/README.release > plplot.i686: E: incorrect-fsf-address > /usr/share/doc/plplot-5.9.9/COPYING.LIB > plplot-octave.i686: E: incorrect-fsf-address > /usr/share/plplot_octave/struct_contains.m I agree with you Orion that this should probably be fixed. I recently fixed up Copyright for the same reason (wrong address) as Debian lintian complained about it. Debian doesn't install COPYING.LIB. I maintains central copies of the GPL licenses and links to these so I didn't fix COPYING.LIB as well. > Building examples in the installed tree with make: > > /usr/bin/gnatmake -aI/usr/share/ada/adainclude/plplotadad > -aL/usr/lib/ada/adalib/plplotadad x15a.adb \ > -cargs `PKG_CONFIG_PATH=/usr/lib/pkgconfig pkg-config --cflags > plplotd-ada` -largs `PKG_CONFIG_PATH=/usr/lib/pkgconfig pkg-config > --libs plplotd-ada` > gcc -c -I/usr/share/ada/adainclude/plplotadad -I/usr/include/plplot x15a.adb > gnatbind -aI/usr/share/ada/adainclude/plplotadad > -aO/usr/lib/ada/adalib/plplotadad -x x15a.ali > gnatlink x15a.ali -lplplotadad > /usr/bin/ld: ./x15a.o: undefined reference to symbol 'c_plfill' > /usr/bin/ld: note: 'c_plfill' is defined in DSO > /usr/lib/libplplotd.so.11 so try adding it to the linker command line I think this is because the plfill is being passed as a function argument in this case. I don't understand enough about ada to know why this is a problem but I suspect we need to explicitly link to plplotd in the pkgconfig-ada file. We do this for the cmake build of the examples already. > /usr/lib/ccache/c++ wxPLplotDemo.cpp -o wxPLplotDemo `pkg-config > --cflags --libs plplotd-wxwidgets` > /usr/bin/ld: /tmp/cc2nmLCB.o: undefined reference to symbol > 'plstream::line(int, double const*, double const*)' > /usr/bin/ld: note: 'plstream::line(int, double const*, double const*)' > is defined in DSO /usr/lib/libplplotcxxd.so.10 so try adding it to the > linker command line This is a less obvious error since the source code does not directly mention plstream, but the wxPlplotstream class inherits from plstream and so plplotcxxd needs explicitly linking in for pkgconfig-wxwidgets > cd f95; make > make[1]: Entering directory `/usr/share/plplot5.9.9/examples/f95' > /usr/bin/gfortran x01f.f90 -o x01f `pkg-config --cflags --libs > plplotd-f95` > x01f.f90:24.19: > > use plf95demolib > 1 > Fatal Error: Can't open module file 'plf95demolib.mod' for reading at > (1): No such file or directory > > This file does not appear to have been installed. This is odd - I do not see this error. The .mod file is installed in lib/fortran/modules/plplot for me. > make[1]: Entering directory `/usr/share/plplot5.9.9/examples/tk' > /usr/lib/ccache/gcc xtk01.c -o xtk01 `pkg-config --cflags --libs > plplotd-tcl` > /usr/bin/ld: /tmp/ccJlYbFQ.o: undefined reference to symbol 'c_plvsta' > /usr/bin/ld: note: 'c_plvsta' is defined in DSO > /usr/lib/libplplotd.so.11 so try adding it to the linker command line Confirmed. In addition the d language examples fail to explcitly link in plplotd for the install tree examples. I'll try and fix these up. Incidentally, examples works fine in the install tree if you use the cmake build system (1 issue with tk examples now fixed) and they also work fine in the build tree. Andrew ------------------------------------------------------------------------------ All the data continuously generated in your IT infrastructure contains a definitive record of customers, application performance, security threats, fraudulent activity, and more. Splunk takes this data and makes sense of it. IT sense. And common sense. http://p.sf.net/sfu/splunk-novd2d _______________________________________________ Plplot-devel mailing list Plplot-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/plplot-devel