-
Notifications
You must be signed in to change notification settings - Fork 255
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
zstd_vendor breaks CMake when cross-compiling for QNX #1172
Comments
Applying the following patch and renaming diff --git a/zstd_vendor/CMakeLists.txt b/zstd_vendor/CMakeLists.txt
index e3d4a22..e682a58 100644
--- a/zstd_vendor/CMakeLists.txt
+++ b/zstd_vendor/CMakeLists.txt
@@ -55,7 +55,7 @@ macro(build_zstd)
install(
DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}_install/
- DESTINATION ${CMAKE_INSTALL_PREFIX}
+ DESTINATION ${CMAKE_INSTALL_PREFIX}/opt/zstd_vendor
USE_SOURCE_PERMISSIONS)
endmacro()
@@ -67,4 +67,4 @@ endif()
install(DIRECTORY cmake DESTINATION share/${PROJECT_NAME})
-ament_package(CONFIG_EXTRAS zstd_vendor-extras.cmake)
+ament_package(CONFIG_EXTRAS zstd_vendor-extras.cmake.in)
diff --git a/zstd_vendor/zstd_vendor-extras.cmake b/zstd_vendor/zstd_vendor-extras.cmake
index 07472ac..40287d4 100644
--- a/zstd_vendor/zstd_vendor-extras.cmake
+++ b/zstd_vendor/zstd_vendor-extras.cmake
@@ -1,1 +1,5 @@
+if(NOT DEFINED ENV{zstd_ROOT_DIR})
+ set(zstd_ROOT_DIR "${@PROJECT_NAME@_DIR}/../../../opt/zstd_vendor")
+endif()
+
list(INSERT CMAKE_MODULE_PATH 0 "${zstd_vendor_DIR}/Modules") |
If you propose this change as a pull request, then it would automatically run Ubuntu build and we would run linux-aarch64 and windows build as part of the review process. "prs welcome" :) |
@emersonknapp For sure. I just wanted to make sure it is the correct approach before going through the effort 😅 |
This prevents the compiled libzstd from being used by the host's cmake executable Signed-off-by: Juan Pablo Samper <[email protected]>
I know this is an old issue, but I found a "fix". Simply set For me it's: If you set |
Description
rosbag2
for x86_64 QNX,zstd_vendor
will download and compilelibzstd.so
, then copy it to the install directory.libzstd.so
is a dependency of the CMake executable on the host, so on the nextcmake
invocation, the runtime linker finds the QNX version oflibzstd.so
, causingcmake
to failcolcon
invokesLD_LIBRARY_PATH=/path/to/workspace/install/lib:$LD_LIBRARY_PATH cmake ...
in order to make other packages' resources available to the current package; however, this has the side effect of also changing theLD_LIBRARY_PATH
for the host's CMake.Expected Behavior
libzstd.so
for x86_64 QNX does not interfere with thelibzstd.so
needed by thecmake
on the host.Actual Behavior
zstd
is not found for x86_64 QNXzstd_vendor
downloads, compiles, and installslibzstd.so
in the workspace's install directorycmake
is invoked for another package, finding the newlibzstd.so
libzstd.so
is compiled for QNX (and not Linux),cmake
fails to runTo Reproduce
CPU=x86_64
build-ros2.sh
to invokecolcon
twice, the first time with--packages-up-to zstd_vendor
, the second time with--packages-select gmock_vendor
: i.e.colcon
command fails with something like:(Side note: The instructions for compiling ROS2 for QNX are broken in other ways, but it was easier to point to those instructions than to explain here all the other changes that are not related to this bug report)
System
Additional context
yaml_cpp_vendor
where the libraries are installed elsewhere, and the_vendor
package makes them availableThe text was updated successfully, but these errors were encountered: