From bce3f4a101afb13e253910182a4741bee72acd2e Mon Sep 17 00:00:00 2001 From: CoprDistGit Date: Wed, 23 Sep 2026 09:07:27 +0000 Subject: automatic import of ros-humble-turbojpeg-compressed-image-transport --- turbojpeg-compressed-image-transport.spec | 29 +++++++++++++++++++++++------ 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/turbojpeg-compressed-image-transport.spec b/turbojpeg-compressed-image-transport.spec index 0c77084..8661ef4 100644 --- a/turbojpeg-compressed-image-transport.spec +++ b/turbojpeg-compressed-image-transport.spec @@ -7,7 +7,7 @@ Name: ros-%{ros_distro}-%{RosPkgName} Version: 0.1.3 Release: 1%{?dist} Summary: Compressed_image_transport provides a plugin to image_transport for transparent -License: Apache License 2.0 +License: Apache-2.0 AND BSD-3-Clause URL: https://github.com/wep21/turbojpeg_compressed_image_transport/tree/humble Source0: %{RosPkgName}-%{src_version}.tar.gz Source1: libjpeg-turbo-%{turbojpeg_version}.tar.gz @@ -41,25 +41,40 @@ Compressed_image_transport provides a plugin to image_transport for transparentl tar xzf %{SOURCE1} %build -# turbojpeg-devel 在 SP3 不存在(SP4 才引入独立 turbojpeg 包), -# 从 libjpeg-turbo 3.0.1 源码构建 libturbojpeg.a 静态库 +# openEuler libjpeg-turbo-devel 虽 Provides turbojpeg-devel,但实际不含 +# turbojpeg.h / libturbojpeg.so(仅 jpeglib.h + libjpeg.so),且无任何包提供 +# libturbojpeg.so.0。故从 libjpeg-turbo 源码构建 libturbojpeg.a 静态库并 +# 链入插件 .so(静态链接避免运行时依赖不存在的 libturbojpeg.so.0)。 +# 关键修正:不再 install 到 /usr/include 与系统 libdir(build 阶段无写权限会 +# Permission denied),改为暂存到构建树本地前缀,用 CPATH/LIBRARY_PATH +# 让 gcc 自动发现头文件与静态库,无需改 ROS 源码或 CMake 标志。 mkdir -p libjpeg-turbo-%{turbojpeg_version}/build pushd libjpeg-turbo-%{turbojpeg_version}/build cmake .. \ -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_POSITION_INDEPENDENT_CODE=ON \ -DENABLE_STATIC=ON \ -DENABLE_SHARED=OFF \ -DWITH_JAVA=OFF make %{?_smp_mflags} popd -# 安装 turbojpeg 头文件和静态库到系统路径(仅构建环境内,不进入 RPM 产物) -install -m 644 libjpeg-turbo-%{turbojpeg_version}/turbojpeg.h /usr/include/turbojpeg.h -install -m 644 libjpeg-turbo-%{turbojpeg_version}/build/libturbojpeg.a %{_libdir}/libturbojpeg.a +# 暂存 turbojpeg 头文件与静态库到本地前缀(不污染源码 include/,避免被 +# install(DIRECTORY include/) 误装入 RPM;不写系统路径)。 +install -m 644 -D libjpeg-turbo-%{turbojpeg_version}/turbojpeg.h .tjlib/include/turbojpeg.h +install -m 644 -D libjpeg-turbo-%{turbojpeg_version}/build/libturbojpeg.a .tjlib/lib/libturbojpeg.a +_TJ_PREFIX="$(pwd)/.tjlib" [ -f /opt/ros/%{ros_distro}/setup.sh ] && source /opt/ros/%{ros_distro}/setup.sh || true export PYTHONPATH=/opt/ros/%{ros_distro}/lib/python%{python3_version}/site-packages${PYTHONPATH:+:$PYTHONPATH} export PKG_CONFIG_PATH=/opt/ros/%{ros_distro}/lib/pkgconfig${PKG_CONFIG_PATH:+:$PKG_CONFIG_PATH} +# gcc 链接器/编译器驱动尊重 CPATH 与 LIBRARY_PATH: +# CPATH -> #include 命中 .tjlib/include/turbojpeg.h +# LIBRARY_PATH -> target_link_libraries(... turbojpeg) 生成的 -lturbojpeg +# 命中 .tjlib/lib/libturbojpeg.a(仅有 .a,故静态链接) +export CPATH="${_TJ_PREFIX}/include${CPATH:+:${CPATH}}" +export LIBRARY_PATH="${_TJ_PREFIX}/lib${LIBRARY_PATH:+:${LIBRARY_PATH}}" + mkdir -p .obj && cd .obj %cmake3 \ -DCMAKE_INSTALL_PREFIX="/opt/ros/%{ros_distro}" \ @@ -85,3 +100,5 @@ make install DESTDIR=%{buildroot} * Wed Sep 23 2026 ai-importer - 0.1.3-1 - Initial import (ROS batch) - Bundle libjpeg-turbo turbojpeg component (turbojpeg-devel not available in SP3) +- Fix round 4: stage libturbojpeg.a locally + CPATH/LIBRARY_PATH + PIC instead of + installing to /usr/include during %build (Permission denied); static-link into plugin -- cgit v1.2.3