Skip to content

Fix filesystem linking on GCC 8 and add RHEL CI workflow#454

Merged
urfeex merged 2 commits intoUniversalRobots:masterfrom
srvald:new_rhel_workflow
Mar 4, 2026
Merged

Fix filesystem linking on GCC 8 and add RHEL CI workflow#454
urfeex merged 2 commits intoUniversalRobots:masterfrom
srvald:new_rhel_workflow

Conversation

@srvald
Copy link
Contributor

@srvald srvald commented Mar 4, 2026

Summary

This pull request addresses issue https://github.com.mcas.ms/UniversalRobots/Universal_Robots_Client_Library/issues/448 where linking fails when building URCL with GCC 8 on RHEL8 environments.
The error originates from unresolved std::filesystem symbols:

../liburcl.so: undefined reference to std::filesystem::__cxx11::path::parent_path() const
../liburcl.so: undefined reference to std::filesystem::__cxx11::path::has_root_directory() const
../liburcl.so: undefined reference to std::filesystem::__cxx11::path::_M_split_cmpts()
../liburcl.so: undefined reference to std::filesystem::__cxx11::path::has_filename() const
collect2: error: ld returned 1 exit status

Root Cause

On GCC 8, the <filesystem> implementation is not included in the standard library by default.
It must be explicitly linked via:

target_link_libraries(urcl PUBLIC stdc++fs)

Newer GCC versions perform this automatically, which is why the issue only appears on RHEL 8 buildfarm jobs.

Fix

This PR adds the explicit link dependency for stdc++fs in the CMake to ensure the linking for GCC8

Additional Improvements: RHEL CI Workflow

To prevent regressions and ensure URCL builds correctly on all supported RHEL toolchains, this PR introduces a new GitHub Actions workflow:

The workflow performs a minimal workspace build using colcon inside the container, matching the RHEL buildfarm configuration.

Local Validation

The new workflow has been tested locally using https://github.com/nektos/act and all matrix jobs completed successfully.

@codecov
Copy link

codecov bot commented Mar 4, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 76.26%. Comparing base (59db585) to head (60e8515).
⚠️ Report is 1 commits behind head on master.

Additional details and impacted files
@@            Coverage Diff             @@
##           master     #454      +/-   ##
==========================================
- Coverage   76.28%   76.26%   -0.03%     
==========================================
  Files         105      105              
  Lines        5537     5535       -2     
  Branches      593      593              
==========================================
- Hits         4224     4221       -3     
- Misses       1015     1016       +1     
  Partials      298      298              
Flag Coverage Δ
start_ursim 82.05% <ø> (-2.32%) ⬇️
ur20-latest 68.71% <ø> (-0.02%) ⬇️
ur5-3.14.3 71.97% <ø> (+0.07%) ⬆️
ur5e-10.11.0 64.80% <ø> (-0.26%) ⬇️
ur5e-10.12.0 65.85% <ø> (-0.28%) ⬇️
ur5e-10.7.0 64.28% <ø> (+0.17%) ⬆️
ur5e-5.9.4 72.41% <ø> (-0.08%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

Copy link
Member

@urfeex urfeex left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good job, thank you!

@urfeex urfeex linked an issue Mar 4, 2026 that may be closed by this pull request
@urfeex urfeex merged commit c2e7fe5 into UniversalRobots:master Mar 4, 2026
29 of 34 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Build failing with GCC 8

2 participants