Package: libkml
Version: 1.3.0~r863-4.1
Severity: normal
Tags: upstream patch
User: debian-...@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_ptrkmldom::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::vectorstd::string,
std::allocatorstd::string *)'
.../../src/kml/convenience/.libs/libkmlconvenience.so: undefined reference to
`kmlengine::KmlFile::CreateFromImport(boost::intrusive_ptrkmldom::Element
const)'
.../../src/kml/convenience/.libs/libkmlconvenience.so: undefined reference to
`kmlengine::GetElementsById(boost::intrusive_ptrkmldom::Element const,
kmldom::KmlDomType, std::vectorboost::intrusive_ptrkmldom::Element,
std::allocatorboost::intrusive_ptrkmldom::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_ptrkmldom::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_ptrkmldom::Feature const,
double*, double*)'
.../../src/kml/regionator/.libs/libkmlregionator.so: undefined reference to
`kmlengine::GetCenter(boost::intrusive_ptrkmldom::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
--- a/examples/helloworld/Makefile.am
+++ b/examples/helloworld/Makefile.am
@@ -26,8 +26,8 @@
circlegen_LDADD = \
$(top_builddir)/src/kml/base/libkmlbase.la \
$(top_builddir)/src/kml/dom/libkmldom.la \
- $(top_builddir)/src/kml/engine/libkmlengine.la \
- $(top_builddir)/src/kml/convenience/libkmlconvenience.la
+ $(top_builddir)/src/kml/convenience/libkmlconvenience.la \
+