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])
 
_______________________________________________
Pkg-grass-devel mailing list
Pkg-grass-devel@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-grass-devel

Reply via email to