From f16f860095456bdd868e4883e07e05a68110c9fc Mon Sep 17 00:00:00 2001
From: Lukas Bulwahn <lukas.bulwahn@oss.bmw-carit.de>
Date: Mon, 8 Sep 2014 07:37:39 +0200
Subject: [PATCH] pcl: adding patch to compile with boost 1.56 (resolves #293)

---
 ...-Fix-incompatibility-with-Boost-1.56.patch | 77 +++++++++++++++++++
 recipes-extended/pcl/pcl_1.7.0.bb             |  2 +
 2 files changed, 79 insertions(+)
 create mode 100644 recipes-extended/pcl/pcl/0001-Fix-incompatibility-with-Boost-1.56.patch

diff --git a/recipes-extended/pcl/pcl/0001-Fix-incompatibility-with-Boost-1.56.patch b/recipes-extended/pcl/pcl/0001-Fix-incompatibility-with-Boost-1.56.patch
new file mode 100644
index 0000000..419bc69
--- /dev/null
+++ b/recipes-extended/pcl/pcl/0001-Fix-incompatibility-with-Boost-1.56.patch
@@ -0,0 +1,77 @@
+From c2ad66f36569d64a445dbadeae197264d216d48c Mon Sep 17 00:00:00 2001
+From: Sergey Alexandrov <alexandrov88@gmail.com>
+Date: Sat, 23 Aug 2014 13:03:37 +0200
+Subject: [PATCH] Fix incompatibility with Boost 1.56
+
+The fix is based on the proposal of Andrew McMahon (@McDamon, #864).
+
+Upstream-Status: Backport [retrieved from upstream repository]
+
+This patch is copy of:
+https://github.com/PointCloudLibrary/pcl/commit/c2ad66f36569d64a445dbadeae197264d216d48c.patch
+---
+ io/src/lzf_image_io.cpp | 20 ++++++++++++++------
+ 1 file changed, 14 insertions(+), 6 deletions(-)
+
+diff --git a/io/src/lzf_image_io.cpp b/io/src/lzf_image_io.cpp
+index 55eca90..7742f16 100644
+--- a/io/src/lzf_image_io.cpp
++++ b/io/src/lzf_image_io.cpp
+@@ -59,6 +59,17 @@
+ 
+ #define LZF_HEADER_SIZE 37
+ 
++
++// The signature of boost::property_tree::xml_parser::write_xml() changed in Boost 1.56
++// See https://github.com/PointCloudLibrary/pcl/issues/864
++#include <boost/version.hpp>
++#if (BOOST_VERSION >= 105600)
++  typedef boost::property_tree::xml_writer_settings<std::string> xml_writer_settings;
++#else
++  typedef boost::property_tree::xml_writer_settings<char> xml_writer_settings;
++#endif
++
++
+ //////////////////////////////////////////////////////////////////////////////
+ bool
+ pcl::io::LZFImageWriter::saveImageBlob (const char* data, 
+@@ -198,9 +209,8 @@ pcl::io::LZFImageWriter::writeParameter (const double &parameter,
+   catch (std::exception& e)
+   {}
+ 
+-  boost::property_tree::xml_writer_settings<char> settings ('\t', 1);
+   pt.put (tag, parameter);
+-  write_xml (filename, pt, std::locale (), settings);
++  write_xml (filename, pt, std::locale (), xml_writer_settings ('\t', 1));
+ 
+   return (true);
+ }
+@@ -218,13 +228,12 @@ pcl::io::LZFDepth16ImageWriter::writeParameters (const pcl::io::CameraParameters
+   catch (std::exception& e)
+   {}
+ 
+-  boost::property_tree::xml_writer_settings<char> settings ('\t', 1);
+   pt.put ("depth.focal_length_x", parameters.focal_length_x);
+   pt.put ("depth.focal_length_y", parameters.focal_length_y);
+   pt.put ("depth.principal_point_x", parameters.principal_point_x);
+   pt.put ("depth.principal_point_y", parameters.principal_point_y);
+   pt.put ("depth.z_multiplication_factor", z_multiplication_factor_);
+-  write_xml (filename, pt, std::locale (), settings);
++  write_xml (filename, pt, std::locale (), xml_writer_settings ('\t', 1));
+ 
+   return (true);
+ }
+@@ -279,12 +288,11 @@ pcl::io::LZFRGB24ImageWriter::writeParameters (const pcl::io::CameraParameters &
+   catch (std::exception& e)
+   {}
+ 
+-  boost::property_tree::xml_writer_settings<char> settings ('\t', 1);
+   pt.put ("rgb.focal_length_x", parameters.focal_length_x);
+   pt.put ("rgb.focal_length_y", parameters.focal_length_y);
+   pt.put ("rgb.principal_point_x", parameters.principal_point_x);
+   pt.put ("rgb.principal_point_y", parameters.principal_point_y);
+-  write_xml (filename, pt, std::locale (), settings);
++  write_xml (filename, pt, std::locale (), xml_writer_settings ('\t', 1));
+ 
+   return (true);
+ }
diff --git a/recipes-extended/pcl/pcl_1.7.0.bb b/recipes-extended/pcl/pcl_1.7.0.bb
index c34611a..80370fd 100644
--- a/recipes-extended/pcl/pcl_1.7.0.bb
+++ b/recipes-extended/pcl/pcl_1.7.0.bb
@@ -9,6 +9,8 @@ SRC_URI = "https://github.com/PointCloudLibrary/${PN}/archive/${P}.tar.gz"
 SRC_URI[md5sum] = "e2ac2d2e72825d991c6d194f9586b5d8"
 SRC_URI[sha256sum] = "a5446b4d892d0e6b080ab6b6b745faad2f2f415c6c1353b1424f6b38175c777e"
 
+SRC_URI += "file://0001-Fix-incompatibility-with-Boost-1.56.patch"
+
 S = "${WORKDIR}/pcl-${P}"
 
 EXTRA_OECMAKE += "\
-- 
GitLab