[med-svn] [opensurgsim] 01/01: Use packaged yaml-cpp

Paul Novotny paulnovo-guest at moszumanska.debian.org
Thu Feb 19 22:13:19 UTC 2015


This is an automated email from the git hooks/post-receive script.

paulnovo-guest pushed a commit to branch master
in repository opensurgsim.

commit 74ece8b3293cb5f2126c5685126e70d73c877682
Author: Paul Novotny <paul at paulnovo.us>
Date:   Thu Feb 19 17:09:35 2015 -0500

    Use packaged yaml-cpp
    
    Instead of downloading and building a patched version of yaml-cpp during
    the build process, add yaml-cpp as a build-dep and use the version in
    the repository.
    
    This required a couple of patches, one to use yaml-cpp enum for flow
    style, instead of the one introduced by OpenSurgSim's forked version of
    yaml-cpp. Also, backport a commit from OpenSurgSim to fix unit tests
    that were failing with this version of yaml-cpp.
---
 CMakeLists.txt                          |  2 +-
 debian/control                          |  3 +-
 debian/patches/backport-03c10f32d.patch | 95 +++++++++++++++++++++++++++++++++
 debian/patches/series                   |  2 +
 debian/patches/yaml-flow.patch          | 20 +++++++
 debian/rules                            |  3 +-
 6 files changed, 122 insertions(+), 3 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 875d89d..9a99c9e 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -87,7 +87,7 @@ endif()
 
 option(USE_SYSTEM_YAMLCPP "Should we use the system yaml-cpp?" OFF)
 if(USE_SYSTEM_YAMLCPP)
-	find_package(yaml-cpp 0.5.1.2 EXACT REQUIRED)
+	find_package(yaml-cpp 0.5.1 EXACT REQUIRED)
 else(USE_SYSTEM_YAMLCPP)
 	include(External_yamlcpp)
 endif(USE_SYSTEM_YAMLCPP)
diff --git a/debian/control b/debian/control
index 2356bfb..4b381a8 100644
--- a/debian/control
+++ b/debian/control
@@ -5,7 +5,8 @@ Maintainer: Debian Med Packaging Team <debian-med-packaging at lists.alioth.debian.
 Uploaders: Paul Novotny <paul at paulnovo.us>
 Build-Depends: debhelper (>= 9), libboost-chrono-dev, libboost-date-time-dev,
  libboost-filesystem-dev, libboost-system-dev, libboost-thread-dev, cmake,
- doxygen, libeigen3-dev, google-mock, libjs-mathjax, libopenscenegraph-dev
+ doxygen, libeigen3-dev, google-mock, libjs-mathjax, libopenscenegraph-dev,
+ libyaml-cpp-dev (>= 0.5.1+hg20150210-1)
 Standards-Version: 3.9.6
 Homepage: http://www.opensurgsim.org/
 Vcs-Browser: http://anonscm.debian.org/gitweb/?p=debian-med/opensurgsim.git
diff --git a/debian/patches/backport-03c10f32d.patch b/debian/patches/backport-03c10f32d.patch
new file mode 100644
index 0000000..106ccf4
--- /dev/null
+++ b/debian/patches/backport-03c10f32d.patch
@@ -0,0 +1,95 @@
+--- a/SurgSim/Framework/Accessible.cpp
++++ b/SurgSim/Framework/Accessible.cpp
+@@ -13,7 +13,9 @@
+ // See the License for the specific language governing permissions and
+ // limitations under the License.
+ 
++#include <algorithm>
+ #include "SurgSim/Framework/Accessible.h"
++#include "SurgSim/Framework/Log.h"
+ #include "SurgSim/Math/Matrix.h"
+ 
+ namespace SurgSim
+@@ -136,26 +138,43 @@
+ 	return result;
+ }
+ 
+-void  Accessible::decode(const YAML::Node& node)
++void Accessible::decode(const YAML::Node& node, const std::vector<std::string>& ignoredProperties)
+ {
+-	SURGSIM_ASSERT(node.IsMap()) << "Node to decode accessible has to be map.";
+-	for (auto functors = m_functors.cbegin(); functors != m_functors.cend(); ++functors)
++	SURGSIM_ASSERT(node.IsMap()) << "Node to be decoded has to be map.";
++
++	for (auto data = node.begin(); data != node.end(); ++data)
+ 	{
+-		auto decoder = functors->second.decoder;
+-		if (decoder != nullptr)
++		std::string name = data->first.as<std::string>();
++		if (std::find(std::begin(ignoredProperties), std::end(ignoredProperties), name) != std::end(ignoredProperties))
++		{
++			continue;
++		}
++
++		auto functors = m_functors.find(name);
++		if (functors == std::end(m_functors) || !functors->second.decoder)
+ 		{
+-			YAML::Node temporary = node[functors->first];
++			SURGSIM_LOG_WARNING(SurgSim::Framework::Logger::getLogger("Framework/Accessible"))
++				<< "No decoder registered for the property " << name;
++		}
++		else
++		{
++			YAML::Node temporary = data->second;
+ 			if (!temporary.IsNull() && temporary.IsDefined())
+ 			{
+ 				try
+ 				{
+-					decoder(&temporary);
++					functors->second.decoder(&temporary);
+ 				}
+ 				catch (std::exception e)
+ 				{
+ 					SURGSIM_FAILURE() << e.what();
+ 				}
+ 			}
++			else
++			{
++				SURGSIM_LOG_INFO(SurgSim::Framework::Logger::getLogger("Framework/Accessible"))
++					<< "No value associated with property " << name;
++			}
+ 		}
+ 	}
+ }
+--- a/SurgSim/Framework/Accessible.h
++++ b/SurgSim/Framework/Accessible.h
+@@ -140,9 +140,10 @@
+ 	/// Decode this Accessible from a YAML::Node, will throw an exception if the data type cannot
+ 	/// be converted.
+ 	/// \throws SurgSim::Framework::AssertionFailure if node is not of YAML::NodeType::Map.
+-	/// \param node The node that carries the data to be, properties with names that don't
+-	///             match up with properties in the Accessible are ignored
+-	void decode(const YAML::Node& node);
++	/// \param node The node that carries the data to be decoded, properties with names that don't
++	///             match up with properties in the Accessible will be reported.
++	/// \param ignoredProperties Properties that will be ignored.
++	void decode(const YAML::Node& node, const std::vector<std::string>& ignoredProperties = std::vector<std::string>());
+ 
+ private:
+ 
+--- a/SurgSim/Framework/FrameworkConvert.cpp
++++ b/SurgSim/Framework/FrameworkConvert.cpp
+@@ -91,7 +91,12 @@
+ 				}
+ 			}
+ 		}
+-		rhs->decode(data);
++
++		std::vector<std::string> ignoredProperties;
++		ignoredProperties.push_back(NamePropertyName);
++		ignoredProperties.push_back(IdPropertyName);
++
++		rhs->decode(data, ignoredProperties);
+ 		result = true;
+ 	}
+ 	return result;
diff --git a/debian/patches/series b/debian/patches/series
new file mode 100644
index 0000000..dd2ebfb
--- /dev/null
+++ b/debian/patches/series
@@ -0,0 +1,2 @@
+yaml-flow.patch
+backport-03c10f32d.patch
diff --git a/debian/patches/yaml-flow.patch b/debian/patches/yaml-flow.patch
new file mode 100644
index 0000000..4a14d85
--- /dev/null
+++ b/debian/patches/yaml-flow.patch
@@ -0,0 +1,20 @@
+--- opensurgsim.orig/SurgSim/Math/MathConvert-inl.h
++++ opensurgsim/SurgSim/Math/MathConvert-inl.h
+@@ -33,7 +33,7 @@
+ 	const typename Eigen::Matrix<Type, Rows, 1, MOpt>& rhs)
+ {
+ 	Node node;
+-	node.SetStyle(YAML::FlowStyle);
++	node.SetStyle(YAML::EmitterStyle::Flow);
+ 	for (int i = 0; i < rhs.size(); ++i)
+ 	{
+ 		node.push_back(rhs[i]);
+@@ -75,7 +75,7 @@
+ 	const typename Eigen::Matrix<Type, Rows, Cols, MOpt>& rhs)
+ {
+ 	YAML::Node node;
+-	node.SetStyle(YAML::FlowStyle);
++	node.SetStyle(YAML::EmitterStyle::Flow);
+ 	for (int row = 0; row < Rows; ++row)
+ 	{
+ 		YAML::Node rowNode;
diff --git a/debian/rules b/debian/rules
index 1e142f9..b42a7c5 100755
--- a/debian/rules
+++ b/debian/rules
@@ -19,7 +19,8 @@ override_dh_auto_configure:
 	-DBUILD_DOCUMENTATION:BOOL=ON \
 	-DBUILD_EXAMPLES:BOOL=OFF \
 	-DBUILD_SHARED_LIBS:BOOL=ON \
-	-DCTEST_CUSTOM_TESTS_IGNORE="MultiAxisDeviceTest"
+	-DCTEST_CUSTOM_TESTS_IGNORE="MultiAxisDeviceTest" \
+	-DUSE_SYSTEM_YAMLCPP:BOOL=ON
 
 override_dh_install:
 	dh_install -p$(pkg_dev) --autodest usr/include/*

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-med/opensurgsim.git



More information about the debian-med-commit mailing list