summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--turbojpeg-compressed-image-transport.spec29
1 files 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 <turbojpeg.h> 命中 .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 <ai-importer@openeuler.org> - 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