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_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
--- 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 \ + $(top_builddir)/src/kml/engine/libkmlengine.la checklinks_SOURCES = checklinks.cc checklinks_LDADD = \ @@ -75,8 +75,8 @@ hellokmz_SOURCES = hellokmz.cc hellokmz_LDADD = \ - $(top_builddir)/src/kml/dom/libkmldom.la \ $(top_builddir)/src/kml/engine/libkmlengine.la \ + $(top_builddir)/src/kml/dom/libkmldom.la \ $(top_builddir)/src/kml/base/libkmlbase.la helloregion_SOURCES = helloregion.cc @@ -102,8 +102,8 @@ prettykml_SOURCES = prettykml.cc prettykml_LDADD = \ - $(top_builddir)/src/kml/dom/libkmldom.la \ $(top_builddir)/src/kml/engine/libkmlengine.la \ + $(top_builddir)/src/kml/dom/libkmldom.la \ $(top_builddir)/src/kml/base/libkmlbase.la printgeometry_SOURCES = printgeometry.cc --- a/examples/regionator/Makefile.in +++ b/examples/regionator/Makefile.in @@ -52,11 +52,11 @@ am_csvregionator_OBJECTS = csvregionator.$(OBJEXT) csvregionator_OBJECTS = $(am_csvregionator_OBJECTS) csvregionator_DEPENDENCIES = \ + $(top_builddir)/src/kml/convenience/libkmlconvenience.la \ $(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/regionator/libkmlregionator.la \ - $(top_builddir)/src/kml/convenience/libkmlconvenience.la + $(top_builddir)/src/kml/regionator/libkmlregionator.la am_kmlregionator_OBJECTS = kmlregionator.$(OBJEXT) kmlregionator_OBJECTS = $(am_kmlregionator_OBJECTS) kmlregionator_DEPENDENCIES = \ @@ -232,9 +232,9 @@ kmlregionator_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/regionator/libkmlregionator.la \ - $(top_builddir)/src/kml/convenience/libkmlconvenience.la + $(top_builddir)/src/kml/convenience/libkmlconvenience.la \ + $(top_builddir)/src/kml/engine/libkmlengine.la all: all-am --- a/examples/regionator/Makefile.am +++ b/examples/regionator/Makefile.am @@ -10,17 +10,17 @@ csvregionator_SOURCES = csvregionator.cc csvregionator_LDADD = \ + $(top_builddir)/src/kml/convenience/libkmlconvenience.la \ $(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/regionator/libkmlregionator.la \ - $(top_builddir)/src/kml/convenience/libkmlconvenience.la + $(top_builddir)/src/kml/regionator/libkmlregionator.la kmlregionator_SOURCES = kmlregionator.cc kmlregionator_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/regionator/libkmlregionator.la \ - $(top_builddir)/src/kml/convenience/libkmlconvenience.la + $(top_builddir)/src/kml/convenience/libkmlconvenience.la \ + $(top_builddir)/src/kml/engine/libkmlengine.la --- a/examples/helloworld/Makefile.in +++ b/examples/helloworld/Makefile.in @@ -345,8 +345,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 \ + $(top_builddir)/src/kml/engine/libkmlengine.la checklinks_SOURCES = checklinks.cc checklinks_LDADD = \ @@ -394,8 +394,8 @@ hellokmz_SOURCES = hellokmz.cc hellokmz_LDADD = \ - $(top_builddir)/src/kml/dom/libkmldom.la \ $(top_builddir)/src/kml/engine/libkmlengine.la \ + $(top_builddir)/src/kml/dom/libkmldom.la \ $(top_builddir)/src/kml/base/libkmlbase.la helloregion_SOURCES = helloregion.cc @@ -421,8 +421,8 @@ prettykml_SOURCES = prettykml.cc prettykml_LDADD = \ - $(top_builddir)/src/kml/dom/libkmldom.la \ $(top_builddir)/src/kml/engine/libkmlengine.la \ + $(top_builddir)/src/kml/dom/libkmldom.la \ $(top_builddir)/src/kml/base/libkmlbase.la printgeometry_SOURCES = printgeometry.cc
Index: git/configure =================================================================== --- git.orig/configure 2011-07-26 11:04:20.000000000 +0200 +++ git/configure 2011-07-26 11:07:16.000000000 +0200 @@ -15039,14 +15039,14 @@ fi - if test "x$SWIG" != x; then - SWIG_VERSION=`swig -version 2>&1|grep Version|cut -d" " -f3` - if test ${SWIG_VERSION:4} -lt 35; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: You have SWIG $SWIG_VERSION installed, but libkml requires at least SWIG 1.3.35. The bindings will not be built." >&5 -$as_echo "$as_me: WARNING: You have SWIG $SWIG_VERSION installed, but libkml requires at least SWIG 1.3.35. The bindings will not be built." >&2;} - SWIG= - fi - fi +# if test "x$SWIG" != x; then +# SWIG_VERSION=`swig -version 2>&1|grep Version|cut -d" " -f3` +# if test ${SWIG_VERSION:4} -lt 35; then +# { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: You have SWIG $SWIG_VERSION installed, but libkml requires at least SWIG 1.3.35. The bindings will not be built." >&5 +#$as_echo "$as_me: WARNING: You have SWIG $SWIG_VERSION installed, but libkml requires at least SWIG 1.3.35. The bindings will not be built." >&2;} +# SWIG= +# fi +# fi fi if test "x$SWIG" != x; then WITH_SWIG_TRUE= Index: libkml-1.2.0/configure.ac =================================================================== --- libkml-1.2.0.orig/configure.ac 2012-02-22 16:52:15.057284078 +0100 +++ libkml-1.2.0/configure.ac 2012-02-22 16:52:16.553284076 +0100 @@ -86,13 +86,13 @@ [do not generate any SWIG language bindings])]) if test "x$enable_swig" != xno; then AC_CHECK_PROG(SWIG, swig, swig) - if test "x$SWIG" != x; then - SWIG_VERSION=`swig -version 2>&1|grep Version|cut -d" " -f3` - if test ${SWIG_VERSION:4} -lt 35; then - AC_MSG_WARN([You have SWIG $SWIG_VERSION installed, but libkml requires at least SWIG 1.3.35. The bindings will not be built.]) - SWIG= - fi - fi +# if test "x$SWIG" != x; then +# SWIG_VERSION=`swig -version 2>&1|grep Version|cut -d" " -f3` +# if test ${SWIG_VERSION:4} -lt 35; then +# AC_MSG_WARN([You have SWIG $SWIG_VERSION installed, but libkml requires at least SWIG 1.3.35. The bindings will not be built.]) +# SWIG= +# fi +# fi fi AM_CONDITIONAL(WITH_SWIG, [test "x$SWIG" != x])