Project

General

Profile

Actions

Pull request #220

closed

Avoid c++11 in py-pinocchio when it's not necessary

Added by Guilhem Saurel over 4 years ago. Updated over 3 years ago.

Status:
Closed
Priority:
Normal
Assignee:
-
Repository URL:
https://github.com/nim65s/robotpkg
Repository branch:
e40349213ba08fe53dc9df763e3c4c44818d5049

Description

Hi,

We recently agreed on using c++11 for math/py-pinocchio, but this it looks like some users have issues with that.
Here is a workaround.

Actions #1

Updated by Anthony Mallet over 4 years ago

This does not work: dependencies are resolved in a single pass, so
when PKGVERSION.urdfdom is defined, the
DEPEND_ABI.boost-headers += boost-headers>=1.55 is not taken into
account anymore.

Actions #2

Updated by Anthony Mallet over 4 years ago

Now that pinocchio explicitly wants C++11 (at least on all supported
platforms), I guess this issue becomes irrelevant?

Actions #3

Updated by Guilhem Saurel over 4 years ago

Pinocchio did not change anything on this point I think, and I don't agree with d9e529578d1026f0553ea7c432e4c69d6c66b8e1, because this header is required only if PINOCCHIO_WITH_CXX11_SUPPORT is defined:
https://github.com/stack-of-tasks/pinocchio/blob/v2.2.1/src/math/tensor.hpp#L11
And this should be automatically defined if we compile with C+++11:
https://github.com/stack-of-tasks/pinocchio/blob/v2.2.1/src/macros.hpp#L9

So yes, now, if we compile pinocchio in C++11, we require Eigen >= 3.3.

Still, I don't have a solution for this issue, and I'd be in favor of including c++11.mk anyway, even if this require users to compile dependent libraries with c++11 where it might not be absolutely required. But in those cases, the user is also free to compile pinocchio from source, as we would be missing too much functionalities in the binary release if we really wanted to stick with C++98, and this would add way too much complexity to provide binary version with and without c++11.

Actions #4

Updated by Anthony Mallet over 4 years ago

On Wednesday 4 Dec 2019, at 14:46, Guilhem Saurel wrote:

And this should be automatically defined if we compile with C+++11:
https://github.com/stack-of-tasks/pinocchio/blob/v2.2.1/src/macros.hpp#L9

OK, now I understand : py-pinocchio was failing with g++-4.9 and
eigen<3.3 because it is C++11 enabled (because of urdfdom >=
1). That's why I put requirement on eigen3>=3.3 in pinocchio itself, I
tought it was the same.

But due to the magic macro the packages would not be the same
depending on the compiler, it's not really nice either.

So yes, now, if we compile pinocchio in C++11, we require Eigen

= 3.3.

In practice, this just disables debian 8 compared to previous status.

Actions #5

Updated by Anthony Mallet over 4 years ago

Pinocchio did not change anything on this point I think, and I don't agree with d9e529578d1026f0553ea7c432e4c69d6c66b8e1

Please revert it if needed.

Actions #6

Updated by Guilhem Saurel about 4 years ago

About this, I think we can build on C++11 everywhere but 16.04.

It seems that we get many reports from people on this platform who have ubuntu's urdfdom (and therefore don't require the C++11), but can't compile anything against pinocchio until we explain them to add the right flag for C++11.

Would this be OK ?

Actions #7

Updated by Guilhem Saurel over 3 years ago

  • Status changed from New to Closed

Fixed upstream, thanks for your feedbacks !

Actions

Also available in: Atom PDF