Skip to content
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

PlotJuggler does not build with fast-CDR version 2.x.x #919

Closed
manuelValch opened this issue Jan 21, 2024 · 1 comment · Fixed by #920 or #932
Closed

PlotJuggler does not build with fast-CDR version 2.x.x #919

manuelValch opened this issue Jan 21, 2024 · 1 comment · Fixed by #920 or #932

Comments

@manuelValch
Copy link
Contributor

manuelValch commented Jan 21, 2024

Problem description

With latest version of fast-CDR: https://github.com/eProsima/Fast-CDR installed on the dev PC plotjuggler does not build.
Mainly because eProsima updated API name, namespaces and so on.

As a Sw developer I need to be able to compile plotJuggler with latest Fast-CDR so that I can have the data visualizer plugin from eProsima.

Answer these questions (or I will ignore your issue)

  1. Describe your platform / Operative System and the version of PlotJuggler you are using.
Static hostname: ubuntu-H610M-S2H-DDR4
       Icon name: computer-desktop
         Chassis: desktop
      Machine ID: f15bb09bbaa74f77be0ee3e9db35aca0
         Boot ID: ec841c97061f43a89768b3b36538327f
Operating System: Ubuntu 22.04.3 LTS              
          Kernel: Linux 6.5.0-14-generic
    Architecture: x86-64
 Hardware Vendor: Gigabyte Technology Co., Ltd.
  Hardware Model: H610M S2H DDR4

Version of PlotJuggler is the latest from main (3.8.8), commit hash: 92f7389
2. Compile and try the latest version in the main branch and check if the problem persists.

Yes it does persist.

/home/zorglub/plotjuggler_ws/src/PlotJuggler/plotjuggler_plugins/ParserROS/rosx_introspection/src/deserializer.cpp: In member function ‘virtual RosMsgParser::Span<const unsigned char> RosMsgParser::FastCDR_Deserializer::deserializeByteSequence()’:
/home/zorglub/plotjuggler_ws/src/PlotJuggler/plotjuggler_plugins/ParserROS/rosx_introspection/src/deserializer.cpp:196:21: error: ‘using element_type = class eprosima::fastcdr::Cdr’ {aka ‘class eprosima::fastcdr::Cdr’} has no member named ‘getCurrentPosition’; did you mean ‘get_current_position’?
  196 |   auto* ptr = _cdr->getCurrentPosition();
      |                     ^~~~~~~~~~~~~~~~~~
      |                     get_current_position
/home/zorglub/plotjuggler_ws/src/PlotJuggler/plotjuggler_plugins/ParserROS/rosx_introspection/src/deserializer.cpp:202:61: error: could not convert ‘{<expression error>, seqLength}’ from ‘<brace-enclosed initializer list>’ to ‘RosMsgParser::Span<const unsigned char>’ {aka ‘nonstd::span_lite::span<const unsigned char, 18446744073709551615>’}
  202 |   return { reinterpret_cast<const uint8_t*>(ptr), seqLength };
      |                                                             ^
      |                                                             |
      |                                                             <brace-enclosed initializer list>
/home/zorglub/plotjuggler_ws/src/PlotJuggler/plotjuggler_plugins/ParserROS/rosx_introspection/src/deserializer.cpp: In member function ‘virtual const uint8_t* RosMsgParser::FastCDR_Deserializer::getCurrentPtr() const’:
/home/zorglub/plotjuggler_ws/src/PlotJuggler/plotjuggler_plugins/ParserROS/rosx_introspection/src/deserializer.cpp:207:49: error: ‘using element_type = class eprosima::fastcdr::Cdr’ {aka ‘class eprosima::fastcdr::Cdr’} has no member named ‘getBufferPointer’; did you mean ‘get_buffer_pointer’?
  207 |   return reinterpret_cast<const uint8_t*>(_cdr->getBufferPointer());
      |                                                 ^~~~~~~~~~~~~~~~
      |                                                 get_buffer_pointer
/home/zorglub/plotjuggler_ws/src/PlotJuggler/plotjuggler_plugins/ParserROS/rosx_introspection/src/deserializer.cpp: In member function ‘virtual void RosMsgParser::FastCDR_Deserializer::reset()’:
/home/zorglub/plotjuggler_ws/src/PlotJuggler/plotjuggler_plugins/ParserROS/rosx_introspection/src/deserializer.cpp:222:72: error: ‘DDS_CDR’ is not a member of ‘eprosima::fastcdr::Cdr’
  222 |   _cdr = std::make_shared<Cdr>(*_cdr_buffer, Cdr::DEFAULT_ENDIAN, Cdr::DDS_CDR);
      |                                                                        ^~~~~~~

  1. Check if the problem can be reproduced using the dummy data created by the command line argument "-t" or one of the files in the folder "datasamples".

Would say this is not applicable.

  1. If it can't be reproduced with the dummy data, please share the CSV file or the rosbag that can be used to reproduce the problem.

Not applicable, though will test fast-DDS visualizer plugin with the demo example from eProsima

Note that I would like to contribute to the repo to help solve this issue.

manuelValch pushed a commit to manuelValch/PlotJuggler that referenced this issue Jan 21, 2024
Updated minimum cmake version otherwise fastcdr find package fails.
As the issue is about building with fastcdr installed from eProsima
reposotories I need it to work.

Issues
[facontidavide#861]
[facontidavide#919]
manuelValch pushed a commit to manuelValch/PlotJuggler that referenced this issue Jan 21, 2024
If this commit is applied then plotjuggler will be able to compile and
run with Fast-CDR version 2.x.x from eProsima.
It can compile from:
- local thirdparty folder included within the repo
- install of fastcdr within the machine (usually /usr/local)

to do so:
- Udpated files, API and namespace names

Done it because I need to use plotJuggler with latest lib from eProsima
and I would like this to be available for everyone.

Issue:
[facontidavide#919]
manuelValch pushed a commit to manuelValch/PlotJuggler that referenced this issue Jan 25, 2024
Added missing files from Fastcdr Ci shall build.
PlotJuggler build again with or without fastcdr package installed.

Issue:
[facontidavide#919]
facontidavide added a commit that referenced this issue Jan 26, 2024
* Update minimum cmake version

Updated minimum cmake version otherwise fastcdr find package fails.
As the issue is about building with fastcdr installed from eProsima
reposotories I need it to work.

Issues
[#861]
[#919]

* Update Fast-CDR thirdparty

If this commit is applied then plotjuggler will be able to compile and
run with Fast-CDR version 2.x.x from eProsima.
It can compile from:
- local thirdparty folder included within the repo
- install of fastcdr within the machine (usually /usr/local)

to do so:
- Udpated files, API and namespace names

Done it because I need to use plotJuggler with latest lib from eProsima
and I would like this to be available for everyone.

Issue:
[#919]

* Fix CI, added missing files

Added missing files from Fastcdr Ci shall build.
PlotJuggler build again with or without fastcdr package installed.

Issue:
[#919]

* Update CMakeLists.txt

---------

Co-authored-by: manuelValch <[email protected]>
Co-authored-by: Davide Faconti <[email protected]>
@facontidavide
Copy link
Owner

Your PR fixed it for the latest version, but it is broken for the current on.

Unless it is fixed, I can not add your changes

@facontidavide facontidavide reopened this Jan 26, 2024
manuelValch pushed a commit to manuelValch/PlotJuggler that referenced this issue Feb 6, 2024
If this commit is applied then plotjuggler will be able to compile and
run with Fast-CDR version 2.x.x from eProsima.
It can compile from:
- local thirdparty folder included within the repo
- install of fastcdr within the machine (usually /usr/local)

to do so:
- Udpated files, API and namespace names

Done it because I need to use plotJuggler with latest lib from eProsima
and I would like this to be available for everyone.

Issue:
[facontidavide#919]
manuelValch pushed a commit to manuelValch/PlotJuggler that referenced this issue Feb 6, 2024
Added missing files from Fastcdr Ci shall build.
PlotJuggler build again with or without fastcdr package installed.

Issue:
[facontidavide#919]
manuelValch pushed a commit to manuelValch/PlotJuggler that referenced this issue Feb 6, 2024
Moved up findCdr or build default library so that cmake does not fail
before building when fastCdr is installed on system.
Added message so that user knows when fastCdr is found on its system.

Issue:
[facontidavide#919]
Co-authored-by: manuelValch
manuelValch pushed a commit to manuelValch/PlotJuggler that referenced this issue Feb 6, 2024
If this commit is applied then plotjuggler will be able to compile and
run with Fast-CDR version 2.x.x from eProsima.
It can compile from:
- local thirdparty folder included within the repo
- install of fastcdr within the machine (usually /usr/local)

to do so:
- Udpated files, API and namespace names
- Udpate configure.ac to match newly updated version

Done it because I need to use plotJuggler with latest lib from eProsima
and I would like this to be available for everyone.

Issue:
[facontidavide#919]
manuelValch pushed a commit to manuelValch/PlotJuggler that referenced this issue Feb 6, 2024
Added missing files from Fastcdr Ci shall build.
PlotJuggler build again with or without fastcdr package installed.

Issue:
[facontidavide#919]
manuelValch pushed a commit to manuelValch/PlotJuggler that referenced this issue Feb 6, 2024
Moved up findCdr or build default library so that cmake does not fail
before building when fastCdr is installed on system.
Added message so that user knows when fastCdr is found on its system.

Issue:
[facontidavide#919]
Co-authored-by: manuelValch
manuelValch pushed a commit to manuelValch/PlotJuggler that referenced this issue Feb 6, 2024
Moved up findCdr or build default library so that cmake does not fail
before building when fastCdr is installed on system.
Added message so that user knows when fastCdr is found on its system.

Issue:
[facontidavide#919]
Co-authored-by: manuelValch
manuelValch pushed a commit to manuelValch/PlotJuggler that referenced this issue Feb 6, 2024
Remain compatible to fastCdr version 1.1.x so that
build with Ros is not broken

Issue:
[facontidavide#919]
Co-authored-by: manuelValch
manuelValch pushed a commit to manuelValch/PlotJuggler that referenced this issue Feb 6, 2024
If this commit is applied then plotjuggler will be able to compile and
run with Fast-CDR version 2.x.x from eProsima.
It can compile from:
- local thirdparty folder included within the repo
- install of fastcdr within the machine (usually /usr/local)

to do so:
- Udpated files, API and namespace names
- Udpate configure.ac to match newly updated version

Done it because I need to use plotJuggler with latest lib from eProsima
and I would like this to be available for everyone.

Issue:
[facontidavide#919]
manuelValch pushed a commit to manuelValch/PlotJuggler that referenced this issue Feb 6, 2024
Added missing files from Fastcdr Ci shall build.
PlotJuggler build again with or without fastcdr package installed.

Issue:
[facontidavide#919]
manuelValch pushed a commit to manuelValch/PlotJuggler that referenced this issue Feb 6, 2024
Moved up findCdr or build default library so that cmake does not fail
before building when fastCdr is installed on system.
Added message so that user knows when fastCdr is found on its system.

Issue:
[facontidavide#919]
Co-authored-by: manuelValch
manuelValch pushed a commit to manuelValch/PlotJuggler that referenced this issue Feb 6, 2024
Remain compatible to fastCdr version 1.1.x so that
build with Ros is not broken

Issue:
[facontidavide#919]
Co-authored-by: manuelValch
manuelValch added a commit to manuelValch/PlotJuggler that referenced this issue Feb 14, 2024
If this commit is applied then fastCDR library will be build in original
CMakeLists.txt file i.e ./rosx_introspection.

Done that as it is a change requested in pull request.

Issue:
[facontidavide#919]
Co-authored-by: ManuelValch <[email protected]>
manuelValch pushed a commit to manuelValch/PlotJuggler that referenced this issue Feb 14, 2024
If this commit is applied then plotjuggler will be able to compile and
run with Fast-CDR version 2.x.x from eProsima.
It can compile from:
- local thirdparty folder included within the repo
- install of fastcdr within the machine (usually /usr/local)

to do so:
- Udpated files, API and namespace names
- Udpate configure.ac to match newly updated version

Done it because I need to use plotJuggler with latest lib from eProsima
and I would like this to be available for everyone.

Issue:
[facontidavide#919]
manuelValch pushed a commit to manuelValch/PlotJuggler that referenced this issue Feb 14, 2024
Added missing files from Fastcdr Ci shall build.
PlotJuggler build again with or without fastcdr package installed.

Issue:
[facontidavide#919]
manuelValch pushed a commit to manuelValch/PlotJuggler that referenced this issue Feb 14, 2024
Moved up findCdr or build default library so that cmake does not fail
before building when fastCdr is installed on system.
Added message so that user knows when fastCdr is found on its system.

Issue:
[facontidavide#919]
Co-authored-by: manuelValch
manuelValch pushed a commit to manuelValch/PlotJuggler that referenced this issue Feb 14, 2024
Remain compatible to fastCdr version 1.1.x so that
build with Ros is not broken

Issue:
[facontidavide#919]
Co-authored-by: manuelValch
manuelValch added a commit to manuelValch/PlotJuggler that referenced this issue Feb 14, 2024
If this commit is applied then fastCDR library will be build in original
CMakeLists.txt file i.e ./rosx_introspection.

Done that as it is a change requested in pull request.

Issue:
[facontidavide#919]
Co-authored-by: ManuelValch <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
2 participants