Bug#692055: libkml: FTBFS with ld --as-needed

Ilya Barygin randomaction at ubuntu.com
Thu Nov 1 17:46:06 UTC 2012


Package: libkml
Version: 1.3.0~r863-4.1
Severity: normal
Tags: upstream patch
User: debian-gcc at lists.debian.org
Usertags: ld-as-needed

libkml fails to build when --as-needed linker option is enabled,
because of incorrect order of parameters passed to ld.


/bin/bash ../../libtool --tag=CXX   --mode=link g++ -Wall -ansi -pedantic -fno-rtti -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -Wall  -Wl,-Bsymbolic-functions -Wl,-z,relro -o csvregionator csvregionator.o ../../src/kml/base/libkmlbase.la ../../src/kml/dom/libkmldom.la ../../src/kml/engine/libkmlengine.la ../../src/kml/regionator/libkmlregionator.la ../../src/kml/convenience/libkmlconvenience.la -lexpat 
libtool: link: g++ -Wall -ansi -pedantic -fno-rtti -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -Wall -Wl,-Bsymbolic-functions -Wl,-z -Wl,relro -o .libs/csvregionator csvregionator.o  ../../src/kml/base/.libs/libkmlbase.so ../../src/kml/dom/.libs/libkmldom.so ../../src/kml/engine/.libs/libkmlengine.so ../../src/kml/regionator/.libs/libkmlregionator.so ../../src/kml/convenience/.libs/libkmlconvenience.so /usr/lib/i386-linux-gnu/libexpat.so
.../../src/kml/convenience/.libs/libkmlconvenience.so: undefined reference to `kmlengine::ComputeFeatureLookAt(boost::intrusive_ptr<kmldom::Feature> const&)'
.../../src/kml/convenience/.libs/libkmlconvenience.so: undefined reference to `kmlengine::Href::Parse(std::string const&)'
.../../src/kml/convenience/.libs/libkmlconvenience.so: undefined reference to `kmlengine::GetLinks(std::string const&, std::vector<std::string, std::allocator<std::string> >*)'
.../../src/kml/convenience/.libs/libkmlconvenience.so: undefined reference to `kmlengine::KmlFile::CreateFromImport(boost::intrusive_ptr<kmldom::Element> const&)'
.../../src/kml/convenience/.libs/libkmlconvenience.so: undefined reference to `kmlengine::GetElementsById(boost::intrusive_ptr<kmldom::Element> const&, kmldom::KmlDomType, std::vector<boost::intrusive_ptr<kmldom::Element>, std::allocator<boost::intrusive_ptr<kmldom::Element> > >*)'
.../../src/kml/convenience/.libs/libkmlconvenience.so: undefined reference to `kmlengine::KmlFile::SerializeToString(std::string*) const'
.../../src/kml/convenience/.libs/libkmlconvenience.so: undefined reference to `kmlengine::KmzFile::ReadKml(std::string*) const'
.../../src/kml/convenience/.libs/libkmlconvenience.so: undefined reference to `kmlengine::KmzFile::ReadFile(char const*, std::string*) const'
.../../src/kml/regionator/.libs/libkmlregionator.so: undefined reference to `kmlengine::Clone(boost::intrusive_ptr<kmldom::Element> const&)'
.../../src/kml/regionator/.libs/libkmlregionator.so: undefined reference to `kmlengine::ComputeBboxLookAt(kmlengine::Bbox const&)'
.../../src/kml/convenience/.libs/libkmlconvenience.so: undefined reference to `kmlengine::GetFeatureLatLon(boost::intrusive_ptr<kmldom::Feature> const&, double*, double*)'
.../../src/kml/regionator/.libs/libkmlregionator.so: undefined reference to `kmlengine::GetCenter(boost::intrusive_ptr<kmldom::AbstractLatLonBox> const&, double*, double*)'
collect2: error: ld returned 1 exit status
make[4]: *** [csvregionator] Error 1
make[4]: Leaving directory `/tmp/buildd/libkml-1.3.0~r863/build/examples/regionator'
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory `/tmp/buildd/libkml-1.3.0~r863/build/examples'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/tmp/buildd/libkml-1.3.0~r863/build'
make[1]: *** [all] Error 2
make[1]: Leaving directory `/tmp/buildd/libkml-1.3.0~r863/build'
make: *** [debian/stamp-makefile-build] Error 2
dpkg-buildpackage: error: debian/rules build gave error exit status 2


See also
http://wiki.debian.org/ToolChain/DSOLinking#Only_link_with_needed_libraries

In addition, there is a problem with SWIG detection: configure is patched
to remove the erroneous check, but configure.ac is not, so its use in the build
process leads to errors (i.e. bindings aren't built).

There are already patches in the package addressing these problems, updated
versions are attached. Package with updated patches is used in Ubuntu:
https://launchpad.net/ubuntu/+source/libkml/1.3.0~r863-4.1ubuntu1

-- System Information:
Debian Release: wheezy/sid
  APT prefers quantal-updates
  APT policy: (500, 'quantal-updates'), (500, 'quantal-security'), (500, 'quantal-proposed'), (500, 'quantal'), (100, 'quantal-backports')
Architecture: i386 (i686)

Kernel: Linux 3.5.0-18-generic (SMP w/2 CPU cores)
Locale: LANG=ru_RU.UTF-8, LC_CTYPE=ru_RU.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
-------------- next part --------------
A non-text attachment was scrubbed...
Name: ld-as-needed.diff
Type: text/x-diff
Size: 4358 bytes
Desc: not available
URL: <http://lists.alioth.debian.org/pipermail/pkg-grass-devel/attachments/20121101/9f2850d0/attachment.diff>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: swig.diff
Type: text/x-diff
Size: 2273 bytes
Desc: not available
URL: <http://lists.alioth.debian.org/pipermail/pkg-grass-devel/attachments/20121101/9f2850d0/attachment-0001.diff>


More information about the Pkg-grass-devel mailing list