-
Notifications
You must be signed in to change notification settings - Fork 130
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Failed Build - Debian - rosidl_generator_traits::is_message #479
Comments
Exactly same issue for ros2 Foxy on tinkerboard armv7l GNU/Linux |
Debian is one of the Tier 3 platforms for Eloquent and Foxy. That means that while we aim to support it, its primarily a community effort to keep it running (see https://www.ros.org/reps/rep-2000.html#support-tiers for details). Thus, we would happily review any pull requests to fix things on Debian (9 or 10), but we probably will not have the time to look into it ourselves. |
To solve the issue above, I needed to configure locale, install assimp via apt and update to newest CMAKE by building from source. Remove check to False in Line 303
However, now I get QT/Opengl errors.
|
I had the same issue on Debian 9. This seems to be a bug in gcc, and despite it saying the target milestone was 7 it still occurred when I installed gcc 7.5. Anyways, the original bug report states that: namespace Foo
{
template <typename T>
struct Meow
{
};
}
template <>
struct Foo::Meow<int>
{
}; failed, while
So changing rosidl/rosidl_generator_cpp/test/test_traits.cpp Lines 31 to 32 in 76c536e
to namespace rosidl_generator_traits
{
template<>
struct is_message<Message2>: std::true_type {};
} Resolves this issue. To keep the current functionality, one option would be to check the compiler, something along these lines (untested): #if defined(__GNUC__)
#if __GNUC__ > 7
template<>
struct rosidl_generator_traits::is_message<Message2>: std::true_type {};
#else
namespace rosidl_generator_traits
{
template<>
struct is_message<Message2>: std::true_type {};
}
#endif
#endif But this might get messy over time. In any case, here's the patch I mentioned above: From 5f3845f0e915fcc26330cd86061dc79db11aa1b0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Sebastian=20H=C3=B6ffner?= <[email protected]>
Date: Wed, 5 Aug 2020 18:32:07 +0200
Subject: [PATCH] Declaring is_message in namespace rosidl_generator_traits.
Resolves issues with older GCC versions, as described in https://gcc.gnu.org/bugzilla/show_bug.cgi?id=56480
Resolves #479
---
rosidl_generator_cpp/test/test_traits.cpp | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/rosidl_generator_cpp/test/test_traits.cpp b/rosidl_generator_cpp/test/test_traits.cpp
index eb3d5fc..dc9dcc6 100644
--- a/rosidl_generator_cpp/test/test_traits.cpp
+++ b/rosidl_generator_cpp/test/test_traits.cpp
@@ -28,8 +28,13 @@ struct Message {};
// Empty testing struct, with template instantiation
struct Message2 {};
+namespace rosidl_generator_traits
+{
+
template<>
-struct rosidl_generator_traits::is_message<Message2>: std::true_type {};
+struct is_message<Message2>: std::true_type {};
+
+}
TEST(Test_rosidl_generator_traits, is_message) {
// A message is not a service
--
2.11.0 |
@shoeffner If you would like this proposed patch to be reviewed and considered please create a pull request. |
Resolves issues with older GCC versions, as described in https://gcc.gnu.org/bugzilla/show_bug.cgi?id=56480 Resolves #479 Signed-off-by: Sebastian Höffner <[email protected]>
Bug report
Required Info:
Steps to reproduce issue
Expected behavior
Build ros eloquent from Source on debian. Already build cmake 10 from source for https support in libcurl.
Actual behavior
The text was updated successfully, but these errors were encountered: