- Initial package - Initial package - Initial package of autoware_utils_debug 1.11.0 - Fix %files: libautoware_utils_debug.so is unversioned (ROS ament), LICENSE is at repo root, cmake config lives in share/<pkg>/cmake not lib/cmake; split runtime (lib + share env/local_setup/package) into main, cmake config into devel to avoid double-listed files. - Disable debug_package (%global debug_package %{nil}): Release build (-O3 -DNDEBUG) has no DWARF symbols, so find-debuginfo produces an empty debugsourcefiles.list which rpmbuild treats as a fatal error. - Initial package of autoware_utils_debug 1.11.0 - Fix %files: libautoware_utils_debug.so is unversioned (ROS ament), LICENSE is at repo root, cmake config lives in share/<pkg>/cmake not lib/cmake; split runtime (lib + share env/local_setup/package) into main, cmake config into devel to avoid double-listed files. - Disable debug_package (%global debug_package %{nil}): Release build (-O3 -DNDEBUG) has no DWARF symbols, so find-debuginfo produces an empty debugsourcefiles.list which rpmbuild treats as a fatal error. - Initial package of autoware_utils_debug 1.11.0 - Fix %files: libautoware_utils_debug.so is unversioned (ROS ament), LICENSE is at repo root, cmake config lives in share/<pkg>/cmake not lib/cmake; split runtime (lib + share env/local_setup/package) into main, cmake config into devel to avoid double-listed files. - Disable debug_package (%global debug_package %{nil}): Release build (-O3 -DNDEBUG) has no DWARF symbols, so find-debuginfo produces an empty debugsourcefiles.list which rpmbuild treats as a fatal error. - Initial package, based on the openEuler cli11 2.2.0 reference spec - Header-only library; tests/docs/examples disabled in %build - Initial package, based on the openEuler cli11 2.2.0 reference spec - Header-only library; tests/docs/examples disabled in %build - Initial package, based on the openEuler cli11 2.2.0 reference spec - Header-only library; tests/docs/examples disabled in %build - Initial package - Disable debug_package to fix empty debugsourcefiles.list build failure - Initial package - Disable debug_package to fix empty debugsourcefiles.list build failure - Initial package - Disable debug_package to fix empty debugsourcefiles.list build failure - Initial package - Switch to explicit out-of-source cmake build to fix %cmake_build macro mismatch on openEuler (in-source config vs %{_target_platform} build dir) - Remove shell comments from %build that contained RPM macro names (%cmake, %cmake_build, %make_build) which RPM expands even inside comments, breaking out of the comment and running a garbage cmake call - Initial package - Switch to explicit out-of-source cmake build to fix %cmake_build macro mismatch on openEuler (in-source config vs %{_target_platform} build dir) - Remove shell comments from %build that contained RPM macro names (%cmake, %cmake_build, %make_build) which RPM expands even inside comments, breaking out of the comment and running a garbage cmake call - Initial package - Switch to explicit out-of-source cmake build to fix %cmake_build macro mismatch on openEuler (in-source config vs %{_target_platform} build dir) - Remove shell comments from %build that contained RPM macro names (%cmake, %cmake_build, %make_build) which RPM expands even inside comments, breaking out of the comment and running a garbage cmake call - Initial package - Switch to explicit out-of-source cmake build to fix %cmake_build macro mismatch on openEuler (in-source config vs %{_target_platform} build dir) - Remove shell comments from %build that contained RPM macro names (%cmake, %cmake_build, %make_build) which RPM expands even inside comments, breaking out of the comment and running a garbage cmake call - Initial package - Initial package - Initial package - Initial package - Initial package - Fix %build: replace /usr/bin/cmake --build "aarch64-openEuler-linux-gnu" -j${RPM_BUILD_NCPUS} --verbose/ DESTDIR="/builddir/build/BUILDROOT/libnanopb-dev-0.4.9.2-3.aarch64" /usr/bin/cmake --install "aarch64-openEuler-linux-gnu" with /usr/bin/make -O -j${RPM_BUILD_NCPUS} V=1 VERBOSE=1//usr/bin/make install DESTDIR=/builddir/build/BUILDROOT/libnanopb-dev-0.4.9.2-3.aarch64 INSTALL="/usr/bin/install -p" ( CFLAGS="${CFLAGS:--O2 -g -grecord-gcc-switches -pipe -fstack-protector-strong -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/generic-hardened-cc1 -fasynchronous-unwind-tables -fstack-clash-protection}" ; export CFLAGS ; CXXFLAGS="${CXXFLAGS:--O2 -g -grecord-gcc-switches -pipe -fstack-protector-strong -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/generic-hardened-cc1 -fasynchronous-unwind-tables -fstack-clash-protection}" ; export CXXFLAGS ; FFLAGS="${FFLAGS:--O2 -g -grecord-gcc-switches -pipe -fstack-protector-strong -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/generic-hardened-cc1 -fasynchronous-unwind-tables -fstack-clash-protection -I/usr/lib64/gfortran/modules}" ; export FFLAGS ; FCFLAGS="${FCFLAGS:--O2 -g -grecord-gcc-switches -pipe -fstack-protector-strong -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/generic-hardened-cc1 -fasynchronous-unwind-tables -fstack-clash-protection -I/usr/lib64/gfortran/modules}" ; export FCFLAGS ; LDFLAGS="${LDFLAGS:--Wl,-z,relro -Wl,-z,now -specs=/usr/lib/rpm/generic-hardened-ld}" ; export LDFLAGS ; /usr/bin/cmake \ -DCMAKE_C_FLAGS_RELEASE:STRING="-DNDEBUG" \ -DCMAKE_CXX_FLAGS_RELEASE:STRING="-DNDEBUG" \ -DCMAKE_Fortran_FLAGS_RELEASE:STRING="-DNDEBUG" \ -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \ -DCMAKE_INSTALL_PREFIX:PATH=/usr \ -DINCLUDE_INSTALL_DIR:PATH=/usr/include \ -DLIB_INSTALL_DIR:PATH=/usr/lib64 \ -DSYSCONF_INSTALL_DIR:PATH=/etc \ -DSHARE_INSTALL_PREFIX:PATH=/usr/share \ -DLIB_SUFFIX=64 \ -DBUILD_SHARED_LIBS:BOOL=ON macro runs in-place but /usr/bin/cmake --build "aarch64-openEuler-linux-gnu" -j${RPM_BUILD_NCPUS} --verbose expects aarch64-openEuler-linux-gnu dir) - Add /usr/bin/nanopb_generator.py to %files (installed by cmake, was missing) - Disable debuginfo subpackage via %global debug_package %{nil} (package ships only static lib + Python scripts + headers, no ELF binaries => find-debuginfo produces empty debugfiles.list => "Empty %files file") - Initial package - Fix %build: replace %cmake_build/%cmake_install with /usr/bin/make -O -j${RPM_BUILD_NCPUS} V=1 VERBOSE=1//usr/bin/make install DESTDIR=/builddir/build/BUILDROOT/libnanopb-dev-0.4.9.2-3.aarch64 INSTALL="/usr/bin/install -p" (%cmake macro runs in-place but %cmake_build expects aarch64-openEuler-linux-gnu dir) - Add /usr/bin/nanopb_generator.py to %files (installed by cmake, was missing) - Disable debuginfo subpackage via %global debug_package %{nil} (package ships only static lib + Python scripts + headers, no ELF binaries => find-debuginfo produces empty debugfiles.list => "Empty %files file") - Initial package of OpenNI 2.2.0 for openEuler (aarch64 native build) - Extend aarch64-support.patch: add __aarch64__ branch to XnPlatform.h so the C/C++ platform-abstraction header includes the Linux-x86 types header (XnChar, XnUInt32, XN_INVALID_FILE_HANDLE, ...). The previous patch only handled the Makefile-level platform detection; the C preprocessor still hit "#error Unsupported Platform" and every type stayed undefined. - Extend aarch64-support.patch: add __aarch64__ branch to the public API header Include/OniPlatform.h (same pattern as the XnPlatform.h fix in -2). The previous round only patched the XnLib internal header XnPlatform.h; the public OniPlatform.h still had no __aarch64__ branch, so DepthUtils.cpp (which includes OniCTypes.h -> OniPlatform.h) hit '#error Unsupported Platform' and ONI_CALLBACK_TYPE/uint*_t stayed undefined. - Fix aarch64-support.patch: the Include/OniPlatform.h hunk header was miscounted (@@ -42,6 +42,10 @@ claimed 6 context / 10 total lines but the body actually has 5 context + 4 added = 9 lines). GNU patch rejected the hunk at %prep ("1 out of 1 hunk FAILED -- saving rejects to OniPlatform.h.rej") so build 113192 never reached %build. Corrected the header to @@ -42,5 +42,9 @@; the aarch64 branch insertion is unchanged and applies cleanly (verified locally). The hunk content is __aarch64__-guarded so this is a no-op on any other arch. - Disable the debug/debugsource subpackages with %define debug_package %{nil}. Build 113193 finally compiled, linked and installed all artefacts (libOpenNI2.so + the four driver plugins + headers) on aarch64, but the build then failed at debuginfo packaging with "error: Empty %files file .../debugsourcefiles.list". Root cause: the upstream Makefile builds Release with -O2 -DNDEBUG and no -g, so the .so files carry no DWARF symbols (the gdb-add-index stage logged "No debugging symbols" for all five .so files); find-debuginfo can't emit any source mapping, leaving debugsourcefiles.list empty. As there are no symbols to ship anyway, disabling the debug subpackages loses nothing and resolves the hard error. This is a no-op on any other arch / chroot (a global spec macro). - Initial package of OpenNI 2.2.0 for openEuler (aarch64 native build) - Extend aarch64-support.patch: add __aarch64__ branch to XnPlatform.h so the C/C++ platform-abstraction header includes the Linux-x86 types header (XnChar, XnUInt32, XN_INVALID_FILE_HANDLE, ...). The previous patch only handled the Makefile-level platform detection; the C preprocessor still hit "#error Unsupported Platform" and every type stayed undefined. - Extend aarch64-support.patch: add __aarch64__ branch to the public API header Include/OniPlatform.h (same pattern as the XnPlatform.h fix in -2). The previous round only patched the XnLib internal header XnPlatform.h; the public OniPlatform.h still had no __aarch64__ branch, so DepthUtils.cpp (which includes OniCTypes.h -> OniPlatform.h) hit '#error Unsupported Platform' and ONI_CALLBACK_TYPE/uint*_t stayed undefined. - Fix aarch64-support.patch: the Include/OniPlatform.h hunk header was miscounted (@@ -42,6 +42,10 @@ claimed 6 context / 10 total lines but the body actually has 5 context + 4 added = 9 lines). GNU patch rejected the hunk at %prep ("1 out of 1 hunk FAILED -- saving rejects to OniPlatform.h.rej") so build 113192 never reached %build. Corrected the header to @@ -42,5 +42,9 @@; the aarch64 branch insertion is unchanged and applies cleanly (verified locally). The hunk content is __aarch64__-guarded so this is a no-op on any other arch. - Disable the debug/debugsource subpackages with %define debug_package %{nil}. Build 113193 finally compiled, linked and installed all artefacts (libOpenNI2.so + the four driver plugins + headers) on aarch64, but the build then failed at debuginfo packaging with "error: Empty %files file .../debugsourcefiles.list". Root cause: the upstream Makefile builds Release with -O2 -DNDEBUG and no -g, so the .so files carry no DWARF symbols (the gdb-add-index stage logged "No debugging symbols" for all five .so files); find-debuginfo can't emit any source mapping, leaving debugsourcefiles.list empty. As there are no symbols to ship anyway, disabling the debug subpackages loses nothing and resolves the hard error. This is a no-op on any other arch / chroot (a global spec macro). - Initial package - Initial package - Initial package - Initial package - Initial package - Initial package - Add BuildRequires: git to satisfy gen-describe.sh which requires git when building from a git checkout tarball - Initial package - Add BuildRequires: git to satisfy gen-describe.sh which requires git when building from a git checkout tarball - Initial package - Add BuildRequires: git to satisfy gen-describe.sh which requires git when building from a git checkout tarball - Initial package - Add BuildRequires: git to satisfy gen-describe.sh which requires git when building from a git checkout tarball - Initial package - Add BuildRequires: git to satisfy gen-describe.sh which requires git when building from a git checkout tarball - Initial package - Initial package - Initial package - Initial package - Initial package - Initial package - Initial package - Initial package - Initial package - Initial package - Initial import - Initial import - Initial package - Replace CFLAGS="${CFLAGS:--O2 -g -grecord-gcc-switches -pipe -fstack-protector-strong -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/generic-hardened-cc1 -fasynchronous-unwind-tables -fstack-clash-protection}" ; export CFLAGS ; CXXFLAGS="${CXXFLAGS:--O2 -g -grecord-gcc-switches -pipe -fstack-protector-strong -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/generic-hardened-cc1 -fasynchronous-unwind-tables -fstack-clash-protection}" ; export CXXFLAGS ; FFLAGS="${FFLAGS:--O2 -g -grecord-gcc-switches -pipe -fstack-protector-strong -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/generic-hardened-cc1 -fasynchronous-unwind-tables -fstack-clash-protection -I/usr/lib64/gfortran/modules}" ; export FFLAGS ; FCFLAGS="${FCFLAGS:--O2 -g -grecord-gcc-switches -pipe -fstack-protector-strong -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/generic-hardened-cc1 -fasynchronous-unwind-tables -fstack-clash-protection -I/usr/lib64/gfortran/modules}" ; export FCFLAGS ; LDFLAGS="${LDFLAGS:--Wl,-z,relro -Wl,-z,now -specs=/usr/lib/rpm/generic-hardened-ld}" ; export LDFLAGS ; /usr/bin/cmake \ -DCMAKE_C_FLAGS_RELEASE:STRING="-DNDEBUG" \ -DCMAKE_CXX_FLAGS_RELEASE:STRING="-DNDEBUG" \ -DCMAKE_Fortran_FLAGS_RELEASE:STRING="-DNDEBUG" \ -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \ -DCMAKE_INSTALL_PREFIX:PATH=/usr \ -DINCLUDE_INSTALL_DIR:PATH=/usr/include \ -DLIB_INSTALL_DIR:PATH=/usr/lib64 \ -DSYSCONF_INSTALL_DIR:PATH=/etc \ -DSHARE_INSTALL_PREFIX:PATH=/usr/share \ -DLIB_SUFFIX=64 \ -DBUILD_SHARED_LIBS:BOOL=ON/ /usr/bin/cmake --build "noarch-openEuler-linux-gnu" -j${RPM_BUILD_NCPUS} --verbose/ DESTDIR="/builddir/build/BUILDROOT/robin-map-dev-1.4.1-2.aarch64" /usr/bin/cmake --install "noarch-openEuler-linux-gnu" macros with explicit cmake commands to fix macro mismatch ( CFLAGS="${CFLAGS:--O2 -g -grecord-gcc-switches -pipe -fstack-protector-strong -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/generic-hardened-cc1 -fasynchronous-unwind-tables -fstack-clash-protection}" ; export CFLAGS ; CXXFLAGS="${CXXFLAGS:--O2 -g -grecord-gcc-switches -pipe -fstack-protector-strong -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/generic-hardened-cc1 -fasynchronous-unwind-tables -fstack-clash-protection}" ; export CXXFLAGS ; FFLAGS="${FFLAGS:--O2 -g -grecord-gcc-switches -pipe -fstack-protector-strong -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/generic-hardened-cc1 -fasynchronous-unwind-tables -fstack-clash-protection -I/usr/lib64/gfortran/modules}" ; export FFLAGS ; FCFLAGS="${FCFLAGS:--O2 -g -grecord-gcc-switches -pipe -fstack-protector-strong -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/generic-hardened-cc1 -fasynchronous-unwind-tables -fstack-clash-protection -I/usr/lib64/gfortran/modules}" ; export FCFLAGS ; LDFLAGS="${LDFLAGS:--Wl,-z,relro -Wl,-z,now -specs=/usr/lib/rpm/generic-hardened-ld}" ; export LDFLAGS ; /usr/bin/cmake \ -DCMAKE_C_FLAGS_RELEASE:STRING="-DNDEBUG" \ -DCMAKE_CXX_FLAGS_RELEASE:STRING="-DNDEBUG" \ -DCMAKE_Fortran_FLAGS_RELEASE:STRING="-DNDEBUG" \ -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \ -DCMAKE_INSTALL_PREFIX:PATH=/usr \ -DINCLUDE_INSTALL_DIR:PATH=/usr/include \ -DLIB_INSTALL_DIR:PATH=/usr/lib64 \ -DSYSCONF_INSTALL_DIR:PATH=/etc \ -DSHARE_INSTALL_PREFIX:PATH=/usr/share \ -DLIB_SUFFIX=64 \ -DBUILD_SHARED_LIBS:BOOL=ON in-source vs /usr/bin/cmake --build "noarch-openEuler-linux-gnu" -j${RPM_BUILD_NCPUS} --verbose out-of-tree) - Initial package - Replace %cmake/%cmake_build/%cmake_install macros with explicit cmake commands to fix macro mismatch (%cmake in-source vs %cmake_build out-of-tree) - Initial import (ROS batch) - Vendor libiio 1.0.0 (not available on openEuler) - Remove libiio-dev BuildRequires/Requires, add Provides: libiio/libiio-devel - Disable libiio network backend: it requires libavahi/libxml2/libzstd which are not pulled in; local backend suffices for adi-iio's iio_create_context_from_uri - Switch vendored libiio from 1.0.0 to 0.25: adi-iio 1.0.1 uses the libiio 0.x API (iio_buffer_cancel/destroy, single-arg iio_channel_enable/disable, iio_device_create_buffer, iio_buffer_refill/first/step/push) which was removed/changed in libiio 1.0, causing compilation failures in iio_buffer.cpp. libiio 0.25 header (iio.h) is at source root, not include/iio/ subdirectory. - Initial import (ROS batch) - Vendor libiio 1.0.0 (not available on openEuler) - Remove libiio-dev BuildRequires/Requires, add Provides: libiio/libiio-devel - Disable libiio network backend: it requires libavahi/libxml2/libzstd which are not pulled in; local backend suffices for adi-iio's iio_create_context_from_uri - Switch vendored libiio from 1.0.0 to 0.25: adi-iio 1.0.1 uses the libiio 0.x API (iio_buffer_cancel/destroy, single-arg iio_channel_enable/disable, iio_device_create_buffer, iio_buffer_refill/first/step/push) which was removed/changed in libiio 1.0, causing compilation failures in iio_buffer.cpp. libiio 0.25 header (iio.h) is at source root, not include/iio/ subdirectory. - Initial import (ROS batch) - Bundle libiio stub library (libiio-dev not available in openEuler) - Fix: install libiio stub to staged dir instead of system paths (COPR non-root) - Initial import (ROS batch) - Bundle libiio stub library (libiio-dev not available in openEuler) - Fix: install libiio stub to staged dir instead of system paths (COPR non-root) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial package for ROS 2 Humble - Initial package for ROS 2 Humble - Initial import (ROS batch) - Initial import (ROS batch) - Initial package for ros-humble-as2-visualization - Initial package for ros-humble-as2-visualization - Initial package for ros-humble-as2-visualization - Initial package for ros-humble-as2-visualization - Initial import (ROS batch) - Initial import (ROS batch) - Initial package for ros-humble-autoware-agnocast-wrapper 1.9.0 - Initial package for ros-humble-autoware-agnocast-wrapper 1.9.0 - Initial import (ROS batch) - Initial import (ROS batch) - Initial package for ros-humble-autoware-internal-msgs-devel 1.16.0 - Initial package for ros-humble-autoware-internal-msgs-devel 1.16.0 - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Remove obsolete fix-multiple-definition-error patch (already applied upstream) - Bump Release to avoid NVR conflict with failed EUR SRPM rebuild - Force-include absl/base/thread_annotations.h for GUARDED_BY macro definition - Define thread safety annotation macros via shim header (GUARDED_BY etc.) - Add shim to occupancy_grid_node_main.cpp (also uses GUARDED_BY) - Initial import (ROS batch) - Remove obsolete fix-multiple-definition-error patch (already applied upstream) - Bump Release to avoid NVR conflict with failed EUR SRPM rebuild - Force-include absl/base/thread_annotations.h for GUARDED_BY macro definition - Define thread safety annotation macros via shim header (GUARDED_BY etc.) - Add shim to occupancy_grid_node_main.cpp (also uses GUARDED_BY) - Initial import (ROS batch) - Define thread safety annotation macros via shim header (GUARDED_BY etc.) - Initial import (ROS batch) - Define thread safety annotation macros via shim header (GUARDED_BY etc.) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Fix pushJacobian() C++17 branch: _values.emplace_back() -> _jacobians.emplace_back() - Fix patch strip level: add -p1 to %setup -q /usr/lib/rpm/rpmuncompress /builddir/build/SOURCES/fix-jacobian-emplace-back.patch | /usr/bin/patch -s --fuzz=0 --no-backup-if-mismatch -f - Initial import (ROS batch) - Fix pushJacobian() C++17 branch: _values.emplace_back() -> _jacobians.emplace_back() - Fix patch strip level: add -p1 to %setup -q /usr/lib/rpm/rpmuncompress /builddir/build/SOURCES/fix-jacobian-emplace-back.patch | /usr/bin/patch -s --fuzz=0 --no-backup-if-mismatch -f - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Add compatibility typedefs for DynamixelSDK 3.7.x (GroupFastSyncRead -> GroupSyncRead, GroupFastBulkRead -> GroupBulkRead) - Initial import (ROS batch) - Add compatibility typedefs for DynamixelSDK 3.7.x (GroupFastSyncRead -> GroupSyncRead, GroupFastBulkRead -> GroupBulkRead) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Build ecl_time from source to work around broken ecl_build dep in additional repo - Add Provides: ecl_build for ros-humble-ecl-time runtime dependency - Initial import (ROS batch) - Build ecl_time from source to work around broken ecl_build dep in additional repo - Add Provides: ecl_build for ros-humble-ecl-time runtime dependency - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial package for ros-humble-etsi-its-cam-coding 3.5.0 - Initial package for ros-humble-etsi-its-cam-coding 3.5.0 - Initial package for ros-humble-etsi-its-cam-conversion 3.5.0 - Initial package for ros-humble-etsi-its-cam-conversion 3.5.0 - Initial package for ros-humble-etsi-its-cam-msgs 3.5.0 - Initial package for ros-humble-etsi-its-cam-msgs 3.5.0 - Initial package for ros-humble-etsi-its-cam-ts-coding - Initial package for ros-humble-etsi-its-cam-ts-coding - Initial package for ros-humble-etsi-its-cam-ts-conversion 3.5.0 - Initial package for ros-humble-etsi-its-cam-ts-conversion 3.5.0 - Initial package for ros-humble-etsi-its-cam-ts-msgs 3.5.0 - Initial package for ros-humble-etsi-its-cam-ts-msgs 3.5.0 - Initial package for ros-humble-etsi-its-coding 3.5.0 - Initial package for ros-humble-etsi-its-coding 3.5.0 - Initial package for ros-humble-etsi-its-cpm-ts-coding 3.5.0 - Initial package for ros-humble-etsi-its-cpm-ts-coding 3.5.0 - Initial package for ros-humble-etsi-its-cpm-ts-msgs 3.5.0 - Initial package for ros-humble-etsi-its-cpm-ts-msgs 3.5.0 - Initial package for ros-humble-etsi-its-denm-coding - Initial package for ros-humble-etsi-its-denm-coding - Initial package for ros-humble-etsi-its-denm-conversion - Initial package for ros-humble-etsi-its-denm-conversion - Initial package for ros-humble-etsi-its-denm-msgs 3.5.0 - Initial package for ros-humble-etsi-its-denm-msgs 3.5.0 - Initial package for ros-humble-etsi-its-denm-ts-coding 3.5.0 - Initial package for ros-humble-etsi-its-denm-ts-coding 3.5.0 - Initial package for ros-humble-etsi-its-denm-ts-conversion 3.5.0 - Initial package for ros-humble-etsi-its-denm-ts-conversion 3.5.0 - Initial package for ros-humble-etsi-its-denm-ts-msgs 3.5.0 - Initial package for ros-humble-etsi-its-denm-ts-msgs 3.5.0 - Initial package for ros-humble-etsi-its-ivim-ts-coding - Initial package for ros-humble-etsi-its-ivim-ts-coding - Initial package for ros-humble-etsi-its-ivim-ts-msgs 3.5.0 - Initial package for ros-humble-etsi-its-ivim-ts-msgs 3.5.0 - Initial package for ros-humble-etsi-its-mapem-ts-coding - Initial package for ros-humble-etsi-its-mapem-ts-coding - Initial package for ros-humble-etsi-its-mapem-ts-conversion 3.5.0 - Initial package for ros-humble-etsi-its-mapem-ts-conversion 3.5.0 - Initial package for ros-humble-etsi-its-mapem-ts-msgs 3.5.0 - Initial package for ros-humble-etsi-its-mapem-ts-msgs 3.5.0 - Initial package for ros-humble-etsi-its-mcm-uulm-coding 3.5.0 - Initial package for ros-humble-etsi-its-mcm-uulm-coding 3.5.0 - Initial package for ros-humble-etsi-its-mcm-uulm-conversion 3.5.0 - Initial package for ros-humble-etsi-its-mcm-uulm-conversion 3.5.0 - Initial package for ros-humble-etsi-its-mcm-uulm-msgs 3.5.0 - Initial package for ros-humble-etsi-its-mcm-uulm-msgs 3.5.0 - Initial package for ros-humble-etsi-its-msgs 3.5.0 - Initial package for ros-humble-etsi-its-msgs 3.5.0 - Initial package for openEuler (ros-humble-etsi-its-primitives-conversion 3.5.0) - Initial package for openEuler (ros-humble-etsi-its-primitives-conversion 3.5.0) - Initial package for ros-humble-etsi-its-spatem-ts-coding - Initial package for ros-humble-etsi-its-spatem-ts-coding - Initial package for openEuler (ros-humble-etsi-its-spatem-ts-conversion 3.5.0) - Initial package for openEuler (ros-humble-etsi-its-spatem-ts-conversion 3.5.0) - Initial package for ros-humble-etsi-its-spatem-ts-msgs 3.5.0 - Initial package for ros-humble-etsi-its-spatem-ts-msgs 3.5.0 - Initial package for ros-humble-etsi-its-vam-ts-coding - Initial package for ros-humble-etsi-its-vam-ts-coding - Initial package for ros-humble-etsi-its-vam-ts-conversion 3.5.0 - Initial package for ros-humble-etsi-its-vam-ts-conversion 3.5.0 - Initial package for ros-humble-etsi-its-vam-ts-msgs 3.5.0 - Initial package for ros-humble-etsi-its-vam-ts-msgs 3.5.0 - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial package for ros-humble-foxglove-msgs - Initial package for ros-humble-foxglove-msgs - Initial RPM package of fss-bringup for openEuler ROS humble - Initial RPM package of fss-bringup for openEuler ROS humble - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial package for kuka-external-control-sdk 2.0.0 - Initial package for kuka-external-control-sdk 2.0.0 - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Add -I/usr/include/nanopb to CFLAGS/CXXFLAGS to fix pb.h not found - Add -fPIC to CFLAGS/CXXFLAGS and CMAKE_POSITION_INDEPENDENT_CODE=ON to fix aarch64 R_AARCH64_ADR_PREL_PG_HI21 relocation error - Copy missing kuka_drivers_core headers (joint_interface_validator.hpp) from tarball source to buildroot include path; COPR reuse package built from older source lacks this header - Fix Permission denied: stop copying headers to /opt/ros (read-only in mock chroot); instead sed-patch CMakeLists.txt to add kuka_drivers_core/include path and compile joint_interface_validator.cpp into the library (libkuka_drivers_core.so from COPR reuse lacks ValidateJoint* symbols) - Initial import (ROS batch) - Add -I/usr/include/nanopb to CFLAGS/CXXFLAGS to fix pb.h not found - Add -fPIC to CFLAGS/CXXFLAGS and CMAKE_POSITION_INDEPENDENT_CODE=ON to fix aarch64 R_AARCH64_ADR_PREL_PG_HI21 relocation error - Copy missing kuka_drivers_core headers (joint_interface_validator.hpp) from tarball source to buildroot include path; COPR reuse package built from older source lacks this header - Fix Permission denied: stop copying headers to /opt/ros (read-only in mock chroot); instead sed-patch CMakeLists.txt to add kuka_drivers_core/include path and compile joint_interface_validator.cpp into the library (libkuka_drivers_core.so from COPR reuse lacks ValidateJoint* symbols) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Disable BUILD_PYTHON_BINDINGS to avoid FetchContent network access in COPR - Add fmt-devel and spdlog-devel to BuildRequires for cmake fmt/spdlog lookup - Initial import (ROS batch) - Disable BUILD_PYTHON_BINDINGS to avoid FetchContent network access in COPR - Add fmt-devel and spdlog-devel to BuildRequires for cmake fmt/spdlog lookup - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Fix: replace ROS 1 catkin build system with ROS 2 ament_cmake + rosidl - Initial import (ROS batch) - Fix: replace ROS 1 catkin build system with ROS 2 ament_cmake + rosidl - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - 依赖可用性预检无 provider 修复(触发面 prepare_failed/kind=deps,缺失清单 libfreenect-devel / libglfw3-dev / libopenni2-dev / libxxf86vm / wx-common / wxwidgets,与同链 mrpt-libopengl / -libobs / -libgui / -libnav / -libslam / -libhwdrivers / -libapps 完全同源,处置对齐已构建成功的这些兄弟包): * Debian 名修正:libxxf86vm → libXxf86vm-devel,libjpeg → libjpeg-devel, glut/freeglut → freeglut-devel,libopencv-dev → opencv。 * libfreenect-devel / libopenni2-dev / libglfw3-dev / wx-common / wxwidgets 从 BuildRequires 移除,改为关掉内层 mrpt 对应特性:-DMRPT_WITH_KINECT=OFF / -DMRPT_HAS_OPENNI2=OFF / -DMRPT_WITH_NANOGUI=OFF / -DDISABLE_WXWIDGETS=ON。 已逐目录 grep 实证 apps/ 下对这些特性的引用全部有前置守护 (mrpt_return_if_not_wxwidgets / mrpt_return_if_not_nanogui / CMAKE_MRPT_HAS_OPENNI2 / CMAKE_MRPT_HAS_Qt5 及 CMAKE_MRPT_HAS_WXWIDGETS 的 return();apps/wx-common 是 dummy 目录不含目标),且这些条目在 mrpt_apps/package.xml 里本就被自注为 "not actually required by this ROS package, but we need them for the mrpt/config.h to reflect we have such feature"。wx 体系的真实 RPM 名 wxGTK3-devel / wxBase3-devel 在 openEuler 官方源是存在的,不引入只因全链特性一致(内层已显式关闭),并非无 provider。 * 补齐 BuildRequires/Requires:模板原仅列 mrpt-libapps + mrpt-libnav, 而本包内层 MRPT_BUILD_APPLICATIONS=ON 会构建 apps/ 全部可执行程序, 按 apps/*/CMakeLists.txt 的 DeclareAppDependencies 实测闭包需再补 -libbase / -libmath / -libposes / -libopengl / -libobs / -libmaps / -libgui / -libslam / -libhwdrivers / -libtclap(漏列时 DeclareAppDependencies 只会 打 Warning 后把对应 app 静默置 OFF,产出残缺包)。 * 补上离线构建所需的 Source1-3(预取 mrpt-2.15.21 源码 + nanoflann/simpleini submodule)、%prep 的复用路径改写与内层开关注入、以及 git clone / EP_octomap / apps 产物三类闸门,避免 chroot 内走外部网络或静默产出残缺包。 * 兄弟库 cmake config 闸门按 lib64/cmake、lib/cmake、share/cmake 三种布局 逐路径 test -f(不用 ls 的多操作数形式,见同链 libapps 的 build 112609 误报教训),19 个库名与布局均已用已构建成功兄弟包的 RPM 产物 rpm -qpl 实证 (18 个在 lib64/cmake、mrpt-tclap 在 share/cmake)。 * 补限并行度与降优化级别段(4 核 / 6.9GiB builder 上 apps 多个重型 TU 会被 OOM killer SIGKILL,同链 mrpt-libmath build 112579 实测)。 - 修复 build 112611 的构建阶段(build 段)链接失败(aarch64): * 症状:apps 下全部可执行程序在链接期倒下, "relocation R_AARCH64_ADR_PREL_PG_HI21 against symbol `__stack_chk_guard@@GLIBC_2.17' ... can not be used when making a shared object; recompile with -fPIC"(首例 bin/mrpt-yaml2ini,随后 bin/DifOdometry-Datasets;make 在 apps 目录即中止)。 * 根因:本包内层 MRPT_BUILD_APPLICATIONS=ON 编的是可执行程序而非共享库, CMake 不会自动加 -fPIC;而上一版为降内存覆盖 rpm 的 build_cflags/ build_cxxflags 宏时,连其中 generic-hardened-cc1 specs 提供的 -fPIE 默认值一并丢掉了 → 编译侧非 PIC,链接侧 LDFLAGS 未被覆盖、仍带 generic-hardened-ld 的 -pie,二者不匹配必炸。兄弟库包同样覆盖过 CFLAGS 却未炸,是因为它们编共享库、CMake 自带 -fPIC,本包是唯一编可执行程序的。 * 修法:CFLAGS/CXXFLAGS 各补 -fPIC(编译侧对 -pie 与 -shared 链接两种情形 都成立),降内存的 -O1 -g0 与 hardening 项保持不变。 - 修复 build 112612 的 %build 段"闸门自伤"(aarch64,构建内容本身无误): * 症状:内层 mrpt 构建全绿(apps 逐个链接成功、"Built target apps_all"、 "Completed 'mrpt'"),却在紧随其后的"产出可执行程序"闸门处 exit 1, 报文为 "apps 目录产出可执行文件仅 0 个(阈值 5)"。 * 根因:闸门判据路径写错。apps/ 下每个条目只是一个 app 的构建目录 (apps/yaml2ini/...,内部只有 CMakeFiles 与 Makefile),可执行文件的落点 是内层构建树顶层的 bin/ —— 内层链接命令均为 "Linking CXX executable ../../bin/<name>",相对 apps/<name>/ 展开即 <内层构建树>/bin/<name>。写死 find apps/ 在健康构建上必然数出 0 个, 属闸门自伤(同链 mrpt-libapps 的 build 112607/112609 同类)。 * 修法:闸门改为对候选目录(bin 与 apps)逐个 test -d 后取可执行文件数 的最大值;候选目录全不存在时只告警不硬失败(判据无法证真时不误报)。 阈值 5 保留,失败诊断输出扩充为同时打印两个候选目录的内容。 - 依赖可用性预检无 provider 修复(触发面 prepare_failed/kind=deps,缺失清单 libfreenect-devel / libglfw3-dev / libopenni2-dev / libxxf86vm / wx-common / wxwidgets,与同链 mrpt-libopengl / -libobs / -libgui / -libnav / -libslam / -libhwdrivers / -libapps 完全同源,处置对齐已构建成功的这些兄弟包): * Debian 名修正:libxxf86vm → libXxf86vm-devel,libjpeg → libjpeg-devel, glut/freeglut → freeglut-devel,libopencv-dev → opencv。 * libfreenect-devel / libopenni2-dev / libglfw3-dev / wx-common / wxwidgets 从 BuildRequires 移除,改为关掉内层 mrpt 对应特性:-DMRPT_WITH_KINECT=OFF / -DMRPT_HAS_OPENNI2=OFF / -DMRPT_WITH_NANOGUI=OFF / -DDISABLE_WXWIDGETS=ON。 已逐目录 grep 实证 apps/ 下对这些特性的引用全部有前置守护 (mrpt_return_if_not_wxwidgets / mrpt_return_if_not_nanogui / CMAKE_MRPT_HAS_OPENNI2 / CMAKE_MRPT_HAS_Qt5 及 CMAKE_MRPT_HAS_WXWIDGETS 的 return();apps/wx-common 是 dummy 目录不含目标),且这些条目在 mrpt_apps/package.xml 里本就被自注为 "not actually required by this ROS package, but we need them for the mrpt/config.h to reflect we have such feature"。wx 体系的真实 RPM 名 wxGTK3-devel / wxBase3-devel 在 openEuler 官方源是存在的,不引入只因全链特性一致(内层已显式关闭),并非无 provider。 * 补齐 BuildRequires/Requires:模板原仅列 mrpt-libapps + mrpt-libnav, 而本包内层 MRPT_BUILD_APPLICATIONS=ON 会构建 apps/ 全部可执行程序, 按 apps/*/CMakeLists.txt 的 DeclareAppDependencies 实测闭包需再补 -libbase / -libmath / -libposes / -libopengl / -libobs / -libmaps / -libgui / -libslam / -libhwdrivers / -libtclap(漏列时 DeclareAppDependencies 只会 打 Warning 后把对应 app 静默置 OFF,产出残缺包)。 * 补上离线构建所需的 Source1-3(预取 mrpt-2.15.21 源码 + nanoflann/simpleini submodule)、%prep 的复用路径改写与内层开关注入、以及 git clone / EP_octomap / apps 产物三类闸门,避免 chroot 内走外部网络或静默产出残缺包。 * 兄弟库 cmake config 闸门按 lib64/cmake、lib/cmake、share/cmake 三种布局 逐路径 test -f(不用 ls 的多操作数形式,见同链 libapps 的 build 112609 误报教训),19 个库名与布局均已用已构建成功兄弟包的 RPM 产物 rpm -qpl 实证 (18 个在 lib64/cmake、mrpt-tclap 在 share/cmake)。 * 补限并行度与降优化级别段(4 核 / 6.9GiB builder 上 apps 多个重型 TU 会被 OOM killer SIGKILL,同链 mrpt-libmath build 112579 实测)。 - 修复 build 112611 的构建阶段(build 段)链接失败(aarch64): * 症状:apps 下全部可执行程序在链接期倒下, "relocation R_AARCH64_ADR_PREL_PG_HI21 against symbol `__stack_chk_guard@@GLIBC_2.17' ... can not be used when making a shared object; recompile with -fPIC"(首例 bin/mrpt-yaml2ini,随后 bin/DifOdometry-Datasets;make 在 apps 目录即中止)。 * 根因:本包内层 MRPT_BUILD_APPLICATIONS=ON 编的是可执行程序而非共享库, CMake 不会自动加 -fPIC;而上一版为降内存覆盖 rpm 的 build_cflags/ build_cxxflags 宏时,连其中 generic-hardened-cc1 specs 提供的 -fPIE 默认值一并丢掉了 → 编译侧非 PIC,链接侧 LDFLAGS 未被覆盖、仍带 generic-hardened-ld 的 -pie,二者不匹配必炸。兄弟库包同样覆盖过 CFLAGS 却未炸,是因为它们编共享库、CMake 自带 -fPIC,本包是唯一编可执行程序的。 * 修法:CFLAGS/CXXFLAGS 各补 -fPIC(编译侧对 -pie 与 -shared 链接两种情形 都成立),降内存的 -O1 -g0 与 hardening 项保持不变。 - 修复 build 112612 的 %build 段"闸门自伤"(aarch64,构建内容本身无误): * 症状:内层 mrpt 构建全绿(apps 逐个链接成功、"Built target apps_all"、 "Completed 'mrpt'"),却在紧随其后的"产出可执行程序"闸门处 exit 1, 报文为 "apps 目录产出可执行文件仅 0 个(阈值 5)"。 * 根因:闸门判据路径写错。apps/ 下每个条目只是一个 app 的构建目录 (apps/yaml2ini/...,内部只有 CMakeFiles 与 Makefile),可执行文件的落点 是内层构建树顶层的 bin/ —— 内层链接命令均为 "Linking CXX executable ../../bin/<name>",相对 apps/<name>/ 展开即 <内层构建树>/bin/<name>。写死 find apps/ 在健康构建上必然数出 0 个, 属闸门自伤(同链 mrpt-libapps 的 build 112607/112609 同类)。 * 修法:闸门改为对候选目录(bin 与 apps)逐个 test -d 后取可执行文件数 的最大值;候选目录全不存在时只告警不硬失败(判据无法证真时不误报)。 阈值 5 保留,失败诊断输出扩充为同时打印两个候选目录的内容。 - %build 兄弟库 cmake config 闸门的**判据形式**缺陷修复(触发面 build_failed, build 112609 在 %build 首条闸门 53 秒即失败,报文为"未找到 mrpt-core 的 cmake config"——core 恰好排在列表第一位): * 反证:该次构建 COPR 的 installed_pkgs.log 显示十个兄弟包**全部已 installed**(libbase-2.15.20-3 / libmath-3 / libposes-2 / libopengl-2 / libobs-2 / libgui-2 / libmaps-3 / libslam-2 / libhwdrivers-2 / libtclap-1), 且逐包 rpm -qpl 兄弟包产物确认 config 文件确实存在——缺的不是包,是闸门。 * 根因一(判据形式):判据写成 `ls <lib64 路径> <lib 路径>`。ls 只要有一个 操作数不存在就返回 2,而 /opt/ros/humble/lib/cmake/mrpt-*/ 根本不存在 (逐包 rpm -qpl 实测:十个兄弟包无一在 lib/ 下装 mrpt-*-config.cmake), 故 `if ! ls A B` 对任何 $_m 都恒为真 → 闸门 100% 误报,与包本身无关。 * 根因二(安装布局):安装位置不止 lib64/cmake 一处 —— **mrpt-tclap 装在 share/cmake/mrpt-tclap/**(mrpt-tclap 无编译产物,GNUInstallDirs 走了 share 分支)。即便把 ls 改对,tclap 这一项仍会误报。 * 改动:改为对 lib64/cmake、lib/cmake、share/cmake 三种布局逐路径 test -f 探测,全部未命中才判失败;失败时额外 dump buildroot 内实际存在的 mrpt-*-config.cmake,便于下一轮直接归因。 * 闸门列表(core math poses opengl obs topography maps gui slam hwdrivers tclap)本轮逐条用兄弟包 RPM 产物做了**正例校验**:除 tclap 的 share/ 布局外全部命中 lib64/cmake/<名字>/<名字>-config.cmake,无幻觉条目。 * BuildRequires/Requires 无缺,未做增删。 - %build 兄弟库 cmake config 闸门误报修复(触发面 build_failed,build 112607 在 %build 第 1 条闸门即失败:`ls .../cmake/mrpt-base/mrpt-base-config.cmake` 找不到,报 "ERROR: 未找到 mrpt-base 的 cmake config"): * 根因是本闸门自己写错了名字 —— 循环里的标识符必须是**上游 mrpt 库名**而非 ROS 包装包名:ros-humble-mrpt-libbase 装出的是 mrpt-core / -config / -io / -system / -rtti / -serialization / -containers / -expr / -random / -typemeta 这十个 config,**上游没有 mrpt-base 这个库**(MRPT 1.x 时代才叫 base)。故对已正确装进 buildroot 的 libbase,该判据恒为假,构建在 54 秒时 被自己的闸门打死,根本没走到 cmake。 * 实证:`rpm -qpl ros-humble-mrpt-libbase-2.15.20-3.aarch64.rpm | grep cmake` 只有 lib64/cmake/mrpt-core/... 等,无 mrpt-base;同理逐包核对过 libobs→mrpt-obs/mrpt-topography、libtclap→mrpt-tclap、 libhwdrivers→mrpt-hwdrivers/mrpt-comms、libslam→mrpt-slam/mrpt-vision、 libmaps→mrpt-maps/mrpt-graphs,其余标识符(math/poses/opengl/gui/slam/ maps/obs/topography/tclap/hwdrivers)均正确。 * 改动:闸门列表 base → core,并在注释里写明"包名 ≠ 库名"这条判据,避免 后续再按 ROS 包名写库名。 * BuildRequires/Requires 本身无缺,未做增删;verify_spec_requires.py 仍报 "OK: 36 个依赖…全部有 provider"。 - 依赖可用性预检无 provider 修复(触发面 prepare_failed/kind=deps,缺失清单 libfreenect-devel / libglfw3-dev / libopenni2-dev / libxxf86vm / wx-common / wxwidgets,与同链 mrpt-libopengl / -libobs / -libgui / -libnav / -libslam / -libhwdrivers 完全同源,处置对齐已构建成功的这些兄弟包): * Debian 名修正:libxxf86vm → libXxf86vm-devel,libjpeg → libjpeg-devel, freeglut → freeglut-devel。 * libfreenect-devel / libopenni2-dev / libglfw3-dev / wx-common / wxwidgets 从 BuildRequires 移除,改为关掉内层 mrpt 对应特性:-DMRPT_WITH_KINECT=OFF / -DMRPT_HAS_OPENNI2=OFF / -DMRPT_WITH_NANOGUI=OFF / -DDISABLE_WXWIDGETS=ON。 核实过 libs/apps 与 libs/graphslam 对这些特性的引用全部有宏守护 (MRPT_HAS_WXWIDGETS 见 KFSLAMApp.cpp / ICP_SLAM_App.cpp / MonteCarloLocalization_App.cpp,含 #if !MRPT_HAS_WXWIDGETS 反向分支), 且这些条目在 mrpt_libapps/package.xml 里本就自注为 "not actually required by this ROS package"。 * 补齐 BuildRequires/Requires:ros-humble-mrpt-libobs(提供 mrpt-topography, 模板漏列)、-libbase / -libmath / -libposes / -libopengl / -libslam / -libmaps / -libgui / -libhwdrivers / -libtclap,覆盖 libs/apps → (hwdrivers + gui + slam + tclap + topography) 与 libs/graphslam → (gui + slam) 的完整 find_package 闭包。 * 补上离线构建所需的 Source1-3(预取 mrpt-2.15.21 源码 + nanoflann/simpleini submodule)、%prep 的复用路径改写与内层开关注入、以及 git clone / EP_octomap / 产物三类闸门,避免 chroot 内走外部网络或静默产出空包。 * 不再预取 rplidar_sdk(包装工程已 -DMRPT_WITH_ROBEPEAK_LIDAR=OFF -DMRPT_BUILD_rplidar_sdk=OFF,本包内层不建该静态库)。 - %build 兄弟库 cmake config 闸门的**判据形式**缺陷修复(触发面 build_failed, build 112609 在 %build 首条闸门 53 秒即失败,报文为"未找到 mrpt-core 的 cmake config"——core 恰好排在列表第一位): * 反证:该次构建 COPR 的 installed_pkgs.log 显示十个兄弟包**全部已 installed**(libbase-2.15.20-3 / libmath-3 / libposes-2 / libopengl-2 / libobs-2 / libgui-2 / libmaps-3 / libslam-2 / libhwdrivers-2 / libtclap-1), 且逐包 rpm -qpl 兄弟包产物确认 config 文件确实存在——缺的不是包,是闸门。 * 根因一(判据形式):判据写成 `ls <lib64 路径> <lib 路径>`。ls 只要有一个 操作数不存在就返回 2,而 /opt/ros/humble/lib/cmake/mrpt-*/ 根本不存在 (逐包 rpm -qpl 实测:十个兄弟包无一在 lib/ 下装 mrpt-*-config.cmake), 故 `if ! ls A B` 对任何 $_m 都恒为真 → 闸门 100% 误报,与包本身无关。 * 根因二(安装布局):安装位置不止 lib64/cmake 一处 —— **mrpt-tclap 装在 share/cmake/mrpt-tclap/**(mrpt-tclap 无编译产物,GNUInstallDirs 走了 share 分支)。即便把 ls 改对,tclap 这一项仍会误报。 * 改动:改为对 lib64/cmake、lib/cmake、share/cmake 三种布局逐路径 test -f 探测,全部未命中才判失败;失败时额外 dump buildroot 内实际存在的 mrpt-*-config.cmake,便于下一轮直接归因。 * 闸门列表(core math poses opengl obs topography maps gui slam hwdrivers tclap)本轮逐条用兄弟包 RPM 产物做了**正例校验**:除 tclap 的 share/ 布局外全部命中 lib64/cmake/<名字>/<名字>-config.cmake,无幻觉条目。 * BuildRequires/Requires 无缺,未做增删。 - %build 兄弟库 cmake config 闸门误报修复(触发面 build_failed,build 112607 在 %build 第 1 条闸门即失败:`ls .../cmake/mrpt-base/mrpt-base-config.cmake` 找不到,报 "ERROR: 未找到 mrpt-base 的 cmake config"): * 根因是本闸门自己写错了名字 —— 循环里的标识符必须是**上游 mrpt 库名**而非 ROS 包装包名:ros-humble-mrpt-libbase 装出的是 mrpt-core / -config / -io / -system / -rtti / -serialization / -containers / -expr / -random / -typemeta 这十个 config,**上游没有 mrpt-base 这个库**(MRPT 1.x 时代才叫 base)。故对已正确装进 buildroot 的 libbase,该判据恒为假,构建在 54 秒时 被自己的闸门打死,根本没走到 cmake。 * 实证:`rpm -qpl ros-humble-mrpt-libbase-2.15.20-3.aarch64.rpm | grep cmake` 只有 lib64/cmake/mrpt-core/... 等,无 mrpt-base;同理逐包核对过 libobs→mrpt-obs/mrpt-topography、libtclap→mrpt-tclap、 libhwdrivers→mrpt-hwdrivers/mrpt-comms、libslam→mrpt-slam/mrpt-vision、 libmaps→mrpt-maps/mrpt-graphs,其余标识符(math/poses/opengl/gui/slam/ maps/obs/topography/tclap/hwdrivers)均正确。 * 改动:闸门列表 base → core,并在注释里写明"包名 ≠ 库名"这条判据,避免 后续再按 ROS 包名写库名。 * BuildRequires/Requires 本身无缺,未做增删;verify_spec_requires.py 仍报 "OK: 36 个依赖…全部有 provider"。 - 依赖可用性预检无 provider 修复(触发面 prepare_failed/kind=deps,缺失清单 libfreenect-devel / libglfw3-dev / libopenni2-dev / libxxf86vm / wx-common / wxwidgets,与同链 mrpt-libopengl / -libobs / -libgui / -libnav / -libslam / -libhwdrivers 完全同源,处置对齐已构建成功的这些兄弟包): * Debian 名修正:libxxf86vm → libXxf86vm-devel,libjpeg → libjpeg-devel, freeglut → freeglut-devel。 * libfreenect-devel / libopenni2-dev / libglfw3-dev / wx-common / wxwidgets 从 BuildRequires 移除,改为关掉内层 mrpt 对应特性:-DMRPT_WITH_KINECT=OFF / -DMRPT_HAS_OPENNI2=OFF / -DMRPT_WITH_NANOGUI=OFF / -DDISABLE_WXWIDGETS=ON。 核实过 libs/apps 与 libs/graphslam 对这些特性的引用全部有宏守护 (MRPT_HAS_WXWIDGETS 见 KFSLAMApp.cpp / ICP_SLAM_App.cpp / MonteCarloLocalization_App.cpp,含 #if !MRPT_HAS_WXWIDGETS 反向分支), 且这些条目在 mrpt_libapps/package.xml 里本就自注为 "not actually required by this ROS package"。 * 补齐 BuildRequires/Requires:ros-humble-mrpt-libobs(提供 mrpt-topography, 模板漏列)、-libbase / -libmath / -libposes / -libopengl / -libslam / -libmaps / -libgui / -libhwdrivers / -libtclap,覆盖 libs/apps → (hwdrivers + gui + slam + tclap + topography) 与 libs/graphslam → (gui + slam) 的完整 find_package 闭包。 * 补上离线构建所需的 Source1-3(预取 mrpt-2.15.21 源码 + nanoflann/simpleini submodule)、%prep 的复用路径改写与内层开关注入、以及 git clone / EP_octomap / 产物三类闸门,避免 chroot 内走外部网络或静默产出空包。 * 不再预取 rplidar_sdk(包装工程已 -DMRPT_WITH_ROBEPEAK_LIDAR=OFF -DMRPT_BUILD_rplidar_sdk=OFF,本包内层不建该静态库)。 - Initial import (ROS batch) - 修复 %build 期 ExternalProject 退回 git clone 导致构建失败(COPR 无外网): %prep 将 CMakeLists.txt 的本地复用路径 ${CMAKE_BINARY_DIR}/../mrpt_libbase/ mrpt-build 改写为 ${CMAKE_CURRENT_LIST_DIR}/../mrpt-build,并把预置 mrpt 源码 放到与之对齐的 <top>/mrpt-build/(原路径多一层 mrpt_libbase,EXISTS 检查必然 失败);保留去掉 HOME==/home/buildfarm 守卫的补丁。 - 补 3rdparty/nanogui/include 与 3rdparty/rplidar_sdk/sdk/src 空目录,绕过上游 mrpt 顶层 CMakeLists.txt:51 的 "git submodules missing!" 致命检查(GitHub archive tarball 不含 submodule 内容;两者内层已 MRPT_BUILD_*=OFF)。 - 新增 BuildRequires: libglvnd-devel、mesa-libGLU-devel(mesa-libGL-devel 已有), 满足 mrpt 对 OpenGL/GLU 的 find_package 探测。 - %build 增加闸门:若 cmake 生成 mrpt-gitclone.cmake 则立即失败并提示原因。 - 内层 mrpt 配置期剩余的 "无 submodule" 阻断逐个消除: * 注入 -DMRPT_HAS_LIBFYAML=OFF / -DMRPT_WITH_KINECT=OFF / -DMRPT_HAS_OPENNI2=OFF / -DMRPT_BUILD_OCTOMAP=OFF(外层 cmake 传的 MRPT_WITH_* 是空转,必须写进 包装工程的 ExternalProject CMAKE_ARGS)。 * 新增 Source2(nanoflann 1.5.5)、Source3(simpleini 4.22) 并在 %prep 填入 3rdparty/nanoflann、3rdparty/simpleini(mrpt 强制依赖 nanoflann;mrpt-config 需要 SimpleIni.h)。 - BuildRequires: freeglut → freeglut-devel(openEuler 的 freeglut 只有运行库, 头文件/so 链接在 -devel;找不到系统 GLUT 时 mrpt 编内置 freeglut,会因 -Werror=implicit-function-declaration 失败);新增 gtest-devel(避免编译内置 googletest)。 - 本地按同一组 CMAKE_ARGS 完整验证:内层 mrpt 配置 + mrpt-config/containers/core/ io/random/rtti/serialization/system/expr/typemeta 全部编译通过。 - Initial import (ROS batch) - 修复 %build 期 ExternalProject 退回 git clone 导致构建失败(COPR 无外网): %prep 将 CMakeLists.txt 的本地复用路径 ${CMAKE_BINARY_DIR}/../mrpt_libbase/ mrpt-build 改写为 ${CMAKE_CURRENT_LIST_DIR}/../mrpt-build,并把预置 mrpt 源码 放到与之对齐的 <top>/mrpt-build/(原路径多一层 mrpt_libbase,EXISTS 检查必然 失败);保留去掉 HOME==/home/buildfarm 守卫的补丁。 - 补 3rdparty/nanogui/include 与 3rdparty/rplidar_sdk/sdk/src 空目录,绕过上游 mrpt 顶层 CMakeLists.txt:51 的 "git submodules missing!" 致命检查(GitHub archive tarball 不含 submodule 内容;两者内层已 MRPT_BUILD_*=OFF)。 - 新增 BuildRequires: libglvnd-devel、mesa-libGLU-devel(mesa-libGL-devel 已有), 满足 mrpt 对 OpenGL/GLU 的 find_package 探测。 - %build 增加闸门:若 cmake 生成 mrpt-gitclone.cmake 则立即失败并提示原因。 - 内层 mrpt 配置期剩余的 "无 submodule" 阻断逐个消除: * 注入 -DMRPT_HAS_LIBFYAML=OFF / -DMRPT_WITH_KINECT=OFF / -DMRPT_HAS_OPENNI2=OFF / -DMRPT_BUILD_OCTOMAP=OFF(外层 cmake 传的 MRPT_WITH_* 是空转,必须写进 包装工程的 ExternalProject CMAKE_ARGS)。 * 新增 Source2(nanoflann 1.5.5)、Source3(simpleini 4.22) 并在 %prep 填入 3rdparty/nanoflann、3rdparty/simpleini(mrpt 强制依赖 nanoflann;mrpt-config 需要 SimpleIni.h)。 - BuildRequires: freeglut → freeglut-devel(openEuler 的 freeglut 只有运行库, 头文件/so 链接在 -devel;找不到系统 GLUT 时 mrpt 编内置 freeglut,会因 -Werror=implicit-function-declaration 失败);新增 gtest-devel(避免编译内置 googletest)。 - 本地按同一组 CMAKE_ARGS 完整验证:内层 mrpt 配置 + mrpt-config/containers/core/ io/random/rtti/serialization/system/expr/typemeta 全部编译通过。 - 依赖预检无 provider 修复(对齐同链已成功构建的 ros-humble-mrpt-libopengl-2.15.20-2 / mrpt-libposes-2.15.20-2 / mrpt-libmath-2.15.20-3;下列名字在 openEuler 官方 everything/update/EPOL + COPR result + ROS SIG 外挂源逐一 dnf repoquery --whatprovides 实证): * Debian 名/rosdep 键 → 真实 RPM 名:libxxf86vm → libXxf86vm-devel、 libjpeg → libjpeg-devel、freeglut → freeglut-devel(freeglut 只有运行库, 缺头文件时 mrpt 转编内置 freeglut 必失败)。 * libfreenect-devel / libopenni2-dev / libglfw3-dev 在所有已配置源确无 provider, 从 BuildRequires 移除,改为关掉内层 mrpt 对应特性 -DMRPT_WITH_KINECT=OFF / -DMRPT_HAS_OPENNI2=OFF / -DMRPT_WITH_NANOGUI=OFF。其中 nanogui 是本包特有的 (包装工程对 mrpt_libgui 传 -DMRPT_BUILD_nanogui=ON),它依赖 GLFW;关的是 MRPT_WITH_NANOGUI 而非 MRPT_BUILD_nanogui——后者仍会把 CMAKE_MRPT_HAS_NANOGUI 置 1,导致 libs/gui 链接不存在的 mrpt::nanogui 目标。 * wx-common / wxwidgets(rosdep 键)同样从 BuildRequires 移除:openEuler 侧 wxWidgets 栈拆成 wxBase3-devel + wxGTK3-devel + wxGTK3(确实有 provider), 但这里有意不引入——wx 只被 mrpt-gui 的可选 CDisplayWindow 等代码路径使用, 一旦开启 libmrpt-gui.so 即依赖 wx 运行库,本链后续包(libhwdrivers/libslam/ libnav/libapps)都要跟着装 wx;而已构建成功的 libbase/libmath/libposes/ libtclap/libopengl 全为无 wx 配置,-DDISABLE_WXWIDGETS=ON 显式关闭保证全链一致。 * 按既有基线补齐 openEuler 实际可用的 devel 包:eigen3-devel / git / gtest-devel / libglvnd-devel / libzstd-devel / mesa-libGLU-devel / suitesparse-devel / tbb-devel(mrpt 找不到 assimp/GLUT 等会 ExternalProject 下源码,chroot 无外网必挂)。 * BuildRequires/Requires 补齐 ros-humble-mrpt-libbase/-libmath/-libposes (mrpt-gui 依赖 mrpt-opengl,后者依赖 mrpt-poses 与 mrpt-img,mrpt-img 又 依赖 mrpt-io/-math/-config;公共头 CDisplayWindow.h 亦 include mrpt/img/CImage.h)。 - 修复构建期 ExternalProject 退回 git clone(COPR chroot 无外网必失败): %prep 预置 mrpt 源码到 <top>/mrpt-build/src/mrpt,并把 CMakeLists.txt 的本地 复用路径改写为 ${CMAKE_CURRENT_LIST_DIR}/../mrpt-build、移除 buildfarm HOME 守卫;补 3rdparty/nanogui/include 与 3rdparty/rplidar_sdk/sdk/src 空目录绕过 上游 "git submodules missing!" 致命检查;Source2/Source3 填入 nanoflann 与 simpleini;%build 增加 gitclone 闸门。 - 内层 mrpt 的 CMAKE_ARGS 注入 -DCMAKE_PREFIX_PATH=/opt/ros/humble: mrpt-gui 对 BUILD_mrpt-*=OFF 的兄弟库(mrpt-opengl/mrpt-img)走 DeclareMRPTLib.cmake 的 find_package(mrpt-XXX),命中不了时会被静默禁用、产出 空包(不报错),故 %build 末尾追加 libmrpt-gui.so 存在性闸门。 - 内层构建并行度按内存自适应(min(nproc, MemTotal/2.5GiB))并降优化级别为 -O1 -g0,防 cc1plus 被 OOM killer 杀死(同链 mrpt-libmath build 112579 教训)。 - Release 2(上一版 2.15.20-1 依赖预检失败,无产物)。 - 依赖预检无 provider 修复(对齐同链已成功构建的 ros-humble-mrpt-libopengl-2.15.20-2 / mrpt-libposes-2.15.20-2 / mrpt-libmath-2.15.20-3;下列名字在 openEuler 官方 everything/update/EPOL + COPR result + ROS SIG 外挂源逐一 dnf repoquery --whatprovides 实证): * Debian 名/rosdep 键 → 真实 RPM 名:libxxf86vm → libXxf86vm-devel、 libjpeg → libjpeg-devel、freeglut → freeglut-devel(freeglut 只有运行库, 缺头文件时 mrpt 转编内置 freeglut 必失败)。 * libfreenect-devel / libopenni2-dev / libglfw3-dev 在所有已配置源确无 provider, 从 BuildRequires 移除,改为关掉内层 mrpt 对应特性 -DMRPT_WITH_KINECT=OFF / -DMRPT_HAS_OPENNI2=OFF / -DMRPT_WITH_NANOGUI=OFF。其中 nanogui 是本包特有的 (包装工程对 mrpt_libgui 传 -DMRPT_BUILD_nanogui=ON),它依赖 GLFW;关的是 MRPT_WITH_NANOGUI 而非 MRPT_BUILD_nanogui——后者仍会把 CMAKE_MRPT_HAS_NANOGUI 置 1,导致 libs/gui 链接不存在的 mrpt::nanogui 目标。 * wx-common / wxwidgets(rosdep 键)同样从 BuildRequires 移除:openEuler 侧 wxWidgets 栈拆成 wxBase3-devel + wxGTK3-devel + wxGTK3(确实有 provider), 但这里有意不引入——wx 只被 mrpt-gui 的可选 CDisplayWindow 等代码路径使用, 一旦开启 libmrpt-gui.so 即依赖 wx 运行库,本链后续包(libhwdrivers/libslam/ libnav/libapps)都要跟着装 wx;而已构建成功的 libbase/libmath/libposes/ libtclap/libopengl 全为无 wx 配置,-DDISABLE_WXWIDGETS=ON 显式关闭保证全链一致。 * 按既有基线补齐 openEuler 实际可用的 devel 包:eigen3-devel / git / gtest-devel / libglvnd-devel / libzstd-devel / mesa-libGLU-devel / suitesparse-devel / tbb-devel(mrpt 找不到 assimp/GLUT 等会 ExternalProject 下源码,chroot 无外网必挂)。 * BuildRequires/Requires 补齐 ros-humble-mrpt-libbase/-libmath/-libposes (mrpt-gui 依赖 mrpt-opengl,后者依赖 mrpt-poses 与 mrpt-img,mrpt-img 又 依赖 mrpt-io/-math/-config;公共头 CDisplayWindow.h 亦 include mrpt/img/CImage.h)。 - 修复构建期 ExternalProject 退回 git clone(COPR chroot 无外网必失败): %prep 预置 mrpt 源码到 <top>/mrpt-build/src/mrpt,并把 CMakeLists.txt 的本地 复用路径改写为 ${CMAKE_CURRENT_LIST_DIR}/../mrpt-build、移除 buildfarm HOME 守卫;补 3rdparty/nanogui/include 与 3rdparty/rplidar_sdk/sdk/src 空目录绕过 上游 "git submodules missing!" 致命检查;Source2/Source3 填入 nanoflann 与 simpleini;%build 增加 gitclone 闸门。 - 内层 mrpt 的 CMAKE_ARGS 注入 -DCMAKE_PREFIX_PATH=/opt/ros/humble: mrpt-gui 对 BUILD_mrpt-*=OFF 的兄弟库(mrpt-opengl/mrpt-img)走 DeclareMRPTLib.cmake 的 find_package(mrpt-XXX),命中不了时会被静默禁用、产出 空包(不报错),故 %build 末尾追加 libmrpt-gui.so 存在性闸门。 - 内层构建并行度按内存自适应(min(nproc, MemTotal/2.5GiB))并降优化级别为 -O1 -g0,防 cc1plus 被 OOM killer 杀死(同链 mrpt-libmath build 112579 教训)。 - Release 2(上一版 2.15.20-1 依赖预检失败,无产物)。 - 依赖可用性预检无 provider 修复(对齐同链已构建成功的 ros-humble-mrpt-libopengl / -libposes / -libtclap / -libobs / -libgui / -libmaps 处置方式;这些名字在 openEuler 官方源 / EPOL / ROS SIG 外挂源均查无 provider,已逐个 dnf repoquery --whatprovides 实证): * Debian 名修正:libxxf86vm → libXxf86vm-devel,libjpeg → libjpeg-devel, freeglut → freeglut-devel。 * libfreenect-devel / libopenni2-dev / libglfw3-dev / wx-common / wxwidgets 从 BuildRequires 移除,改为关掉内层 mrpt 对应特性:-DMRPT_WITH_KINECT=OFF / -DMRPT_HAS_OPENNI2=OFF / -DMRPT_WITH_NANOGUI=OFF / -DDISABLE_WXWIDGETS=ON。 核实过这些特性在 libs/hwdrivers 下均有宏守护(`#if MRPT_HAS_KINECT_FREENECT` 见 CKinect.cpp/CKinect.h,`#if MRPT_HAS_OPENNI2` 见 COpenNI2Generic.cpp, `#if MRPT_HAS_WXWIDGETS` 见 CCameraSensor.cpp),关掉不会留下未被守护而 照常编译的源文件;这些条目在 mrpt_libhwdrivers/package.xml 里本就自注为 "not actually required by this ROS package",只影响 config.h 的特性开关。 * BuildRequires/Requires 补齐 ros-humble-mrpt-libmath / -libposes / -libopengl / -libobs / -libmaps / -libgui / -libslam:本包内层只建 mrpt-hwdrivers + mrpt-comms,mrpt-hwdrivers 声明依赖 mrpt-comms + mrpt-maps + mrpt-gui + mrpt-vision,其余 core/io/config/img/math/poses/tfest/graphs/obs 等兄弟库 均走 DeclareMRPTLib.cmake 的 find_package 复用,提供方必须列为构建依赖。 * 引入 opencv(BuildRequires + Requires):mrpt-hwdrivers 的 CImageGrabber_OpenCV / CKinect / CMyntEyeCamera 等走 OpenCV 路径 (全部由 #if MRPT_HAS_OPENCV 守护),openEuler 的 opencv 包实测同时提供 /usr/include/opencv4 头、libopencv_*.so 与 OpenCVConfig.cmake。 * 不引入 octomap(内层 -DMRPT_BUILD_OCTOMAP=OFF):本包内层不建 mrpt-maps, libs/hwdrivers 源码亦不含任何 octomap 引用,关开关即可避免顶层 script_octomap.cmake 退回 ExternalProject 下载(同链 libgui/libnav 路线)。 - 修复构建期 ExternalProject 退回 git clone(COPR chroot 无外网必失败): %prep 预置 mrpt 源码到 <top>/mrpt-build/src/mrpt,并把 CMakeLists.txt 的本地 复用路径改写为 ${CMAKE_CURRENT_LIST_DIR}/../mrpt-build、移除 buildfarm HOME 守卫;补 3rdparty/nanogui/include 空目录绕过上游 "git submodules missing!" 致命检查;Source2/Source3 填入 nanoflann 与 simpleini。 - 新增 Source4 = MRPT/rplidar_sdk,提交号取 mrpt 2.15.21 的 submodule gitlink (27445354bddedb1d7373489b6e896c1feb0e3b37):本包装工程是 mrpt 链里唯一对 内层传 -DMRPT_WITH_ROBOPEAK_LIDAR=ON / -DMRPT_BUILD_rplidar_sdk=ON 的包 (mrpt-hwdrivers 的 CRoboPeakLidar 真用它),而 rplidar_sdk 在 archive tarball 里是空 submodule,源文件为空会让 add_library(mrpt_rplidar STATIC) 在 configure 阶段直接报 "No SOURCES given to target"。 - 内层 mrpt 的 CMAKE_ARGS 注入 -DCMAKE_PREFIX_PATH=/opt/ros/humble: mrpt-hwdrivers 对 BUILD_mrpt-*=OFF 的兄弟库走 DeclareMRPTLib.cmake 的 find_package(mrpt-XXX),命中不了时会被静默禁用、产出空包。 - 内层构建并行度按内存自适应(min(nproc, MemTotal/2.5GiB))并降优化级别为 -O1 -g0,防 cc1plus 被 OOM killer 杀死(同链 mrpt-libmath build 112579 教训)。 - Initial import (ROS batch) - 依赖可用性预检无 provider 修复(对齐同链已构建成功的 ros-humble-mrpt-libopengl / -libposes / -libtclap / -libobs / -libgui / -libmaps 处置方式;这些名字在 openEuler 官方源 / EPOL / ROS SIG 外挂源均查无 provider,已逐个 dnf repoquery --whatprovides 实证): * Debian 名修正:libxxf86vm → libXxf86vm-devel,libjpeg → libjpeg-devel, freeglut → freeglut-devel。 * libfreenect-devel / libopenni2-dev / libglfw3-dev / wx-common / wxwidgets 从 BuildRequires 移除,改为关掉内层 mrpt 对应特性:-DMRPT_WITH_KINECT=OFF / -DMRPT_HAS_OPENNI2=OFF / -DMRPT_WITH_NANOGUI=OFF / -DDISABLE_WXWIDGETS=ON。 核实过这些特性在 libs/hwdrivers 下均有宏守护(`#if MRPT_HAS_KINECT_FREENECT` 见 CKinect.cpp/CKinect.h,`#if MRPT_HAS_OPENNI2` 见 COpenNI2Generic.cpp, `#if MRPT_HAS_WXWIDGETS` 见 CCameraSensor.cpp),关掉不会留下未被守护而 照常编译的源文件;这些条目在 mrpt_libhwdrivers/package.xml 里本就自注为 "not actually required by this ROS package",只影响 config.h 的特性开关。 * BuildRequires/Requires 补齐 ros-humble-mrpt-libmath / -libposes / -libopengl / -libobs / -libmaps / -libgui / -libslam:本包内层只建 mrpt-hwdrivers + mrpt-comms,mrpt-hwdrivers 声明依赖 mrpt-comms + mrpt-maps + mrpt-gui + mrpt-vision,其余 core/io/config/img/math/poses/tfest/graphs/obs 等兄弟库 均走 DeclareMRPTLib.cmake 的 find_package 复用,提供方必须列为构建依赖。 * 引入 opencv(BuildRequires + Requires):mrpt-hwdrivers 的 CImageGrabber_OpenCV / CKinect / CMyntEyeCamera 等走 OpenCV 路径 (全部由 #if MRPT_HAS_OPENCV 守护),openEuler 的 opencv 包实测同时提供 /usr/include/opencv4 头、libopencv_*.so 与 OpenCVConfig.cmake。 * 不引入 octomap(内层 -DMRPT_BUILD_OCTOMAP=OFF):本包内层不建 mrpt-maps, libs/hwdrivers 源码亦不含任何 octomap 引用,关开关即可避免顶层 script_octomap.cmake 退回 ExternalProject 下载(同链 libgui/libnav 路线)。 - 修复构建期 ExternalProject 退回 git clone(COPR chroot 无外网必失败): %prep 预置 mrpt 源码到 <top>/mrpt-build/src/mrpt,并把 CMakeLists.txt 的本地 复用路径改写为 ${CMAKE_CURRENT_LIST_DIR}/../mrpt-build、移除 buildfarm HOME 守卫;补 3rdparty/nanogui/include 空目录绕过上游 "git submodules missing!" 致命检查;Source2/Source3 填入 nanoflann 与 simpleini。 - 新增 Source4 = MRPT/rplidar_sdk,提交号取 mrpt 2.15.21 的 submodule gitlink (27445354bddedb1d7373489b6e896c1feb0e3b37):本包装工程是 mrpt 链里唯一对 内层传 -DMRPT_WITH_ROBOPEAK_LIDAR=ON / -DMRPT_BUILD_rplidar_sdk=ON 的包 (mrpt-hwdrivers 的 CRoboPeakLidar 真用它),而 rplidar_sdk 在 archive tarball 里是空 submodule,源文件为空会让 add_library(mrpt_rplidar STATIC) 在 configure 阶段直接报 "No SOURCES given to target"。 - 内层 mrpt 的 CMAKE_ARGS 注入 -DCMAKE_PREFIX_PATH=/opt/ros/humble: mrpt-hwdrivers 对 BUILD_mrpt-*=OFF 的兄弟库走 DeclareMRPTLib.cmake 的 find_package(mrpt-XXX),命中不了时会被静默禁用、产出空包。 - 内层构建并行度按内存自适应(min(nproc, MemTotal/2.5GiB))并降优化级别为 -O1 -g0,防 cc1plus 被 OOM killer 杀死(同链 mrpt-libmath build 112579 教训)。 - Initial import (ROS batch) - 依赖预检无 provider 修复(对齐同链已成功并经 COPR build 112588/112590 验证的 ros-humble-mrpt-libopengl-2.15.20-2 / ros-humble-mrpt-libposes-2.15.20-2 / ros-humble-mrpt-libtclap 处置方式;这些名字在 openEuler 官方源 / EPOL / ROS SIG 外挂源均查无 provider,已逐个 dnf repoquery --whatprovides 实证): * Debian 名修正:libxxf86vm → libXxf86vm-devel,libjpeg → libjpeg-devel, freeglut → freeglut-devel。 * libfreenect-devel / libopenni2-dev / libglfw3-dev / liboctomap-dev / wx-common / wxwidgets 从 BuildRequires 移除,改为关掉内层 mrpt 对应特性: -DMRPT_WITH_KINECT=OFF / -DMRPT_HAS_OPENNI2=OFF / -DMRPT_BUILD_OCTOMAP=OFF (glfw 仅 3rdparty/nanogui 使用,其构建已由包装工程自带的 -DMRPT_BUILD_nanogui=OFF 关闭;wx 仅 mrpt-gui 使用,包装工程自带 -DBUILD_mrpt-gui=OFF 与 -DMRPT_BUILD_wxThings=OFF)。这些条目在 mrpt_libmaps/package.xml 里本就自注为 "not actually required by this ROS package, but we need them for the mrpt/config.h to reflect we have such feature",只影响 config.h 的特性开关。已在 waived_deps.txt 逐条注明理由。 * 按既有基线补齐 openEuler 实际可用的 devel 包:新增 eigen3-devel / git / gtest-devel / libglvnd-devel / libzstd-devel / mesa-libGLU-devel / suitesparse-devel / tbb-devel(mrpt 找不到系统 GLUT 会去编内置 freeglut、 找不到 assimp/openjpeg 会 ExternalProject 下源码,chroot 无外网必挂)。 * BuildRequires/Requires 补齐 ros-humble-mrpt-libbase / -libmath / -libobs / -libopengl / -libposes:本包内层只建 mrpt-maps + mrpt-graphs,而 mrpt-maps 声明依赖 mrpt-obs + mrpt-graphs、mrpt-graphs 依赖 mrpt-opengl、mrpt-obs 依赖 mrpt-opengl + mrpt-tfest,其余 core/io/config/img/math/poses 等兄弟库均走 DeclareMRPTLib.cmake 的 find_package 复用,提供方必须列为构建依赖。 - 修复构建期 ExternalProject 退回 git clone(COPR chroot 无外网必失败): %prep 预置 mrpt 源码到 <top>/mrpt-build/src/mrpt,并把 CMakeLists.txt 的本地 复用路径改写为 ${CMAKE_CURRENT_LIST_DIR}/../mrpt-build、移除 buildfarm HOME 守卫;补 3rdparty/nanogui/include 与 3rdparty/rplidar_sdk/sdk/src 空目录绕过 上游 "git submodules missing!" 致命检查;Source2/Source3 填入 nanoflann 与 simpleini;%build 增加 gitclone 闸门与 libmrpt-maps/libmrpt-graphs 产物闸门。 - 内层 mrpt 的 CMAKE_ARGS 注入 -DCMAKE_PREFIX_PATH=/opt/ros/humble: mrpt-maps / mrpt-graphs 对 BUILD_mrpt-*=OFF 的兄弟库走 DeclareMRPTLib.cmake 的 find_package(mrpt-XXX),命中不了时会被静默禁用、产出空包。 - 内层构建并行度按内存自适应(min(nproc, MemTotal/2.5GiB))并降优化级别为 -O1 -g0,防 cc1plus 被 OOM killer 杀死(同链 mrpt-libmath build 112579 教训)。 - Release 2(上一版 2.15.20-1 依赖预检失败,无产物)。 - 修复 build 112594 的 %build 失败(COPR 日志实锤): `/builddir/.../libs/maps/src/maps/CColouredOctoMap.cpp:21:10: fatal error: octomap/ColorOcTree.h: No such file or directory`。 根因是 Release 2 的判断错误——当时认为 `-DMRPT_BUILD_OCTOMAP=OFF` 能把 COctoMap* 代码路径整体关掉,实测不成立。读上游源码(mrpt-2.15.21)确认: * `cmakemodules/DeclareMRPTLib.cmake` 对 `libs/maps/src/*.cpp` 与 `libs/maps/src/maps/*.cpp` 只做 glob + 仅过滤 `*_WIN.cpp` / `*_LIN.cpp` / `*_unittest.cpp`,**没有**任何 "#if MRPT_HAS_xxx 源文件筛选" 机制;`libs/maps/CMakeLists.txt` 里 `if (CMAKE_MRPT_HAS_OCTOMAP)` 只包住 `link_directories` / `target_link_libraries` / `add_dependencies(EP_octomap)`。 * `CColouredOctoMap.cpp`、`COctoMap.cpp` 顶部无条件 `#include <octomap/ColorOcTree.h>`,没有宏守护。 * `script_octomap.cmake` 里 `MRPT_BUILD_OCTOMAP` 只出现在 `if (NOT OCTOMAP_FOUND)` 分支内,是"找不到系统 octomap 时退化为构建内置版" 的开关;置 OFF 只会让 `CMAKE_MRPT_HAS_OCTOMAP=0`、不加 octomap 的 -I, 源文件依旧被编译 → 头找不到。 即 octomap 对 mrpt-maps 是**硬依赖**,不能靠关开关绕开。修法改走"提供系统 octomap": * `BuildRequires: octomap-devel` + `Requires: octomap`。经 `dnf repoquery --whatprovides '*/octomap/ColorOcTree.h'` 实证 openEuler 官方源有 octomap-devel-1.9.8-2.oe2403sp4(aarch64 同样可用,rc=0),提供 /usr/include/octomap/ColorOcTree.h 与 /usr/lib64/octomap/octomap{-config,-targets,-config-version}.cmake。 * 内层 CMAKE_ARGS 注入由 `-DMRPT_BUILD_OCTOMAP=OFF` 改为 `-DOCTOMAP_DIR=/usr/lib64/octomap`,让 `find_package(OCTOMAP QUIET)` 命中 系统 config(本地以解包 rpm 的 config 目录实测:OCTOMAP_FOUND=1、 OCTOMAP_INCLUDE_DIRS=<prefix>/include、OCTOMAP_VERSION=1.9.8; 注意 `project(... NONE)` 无架构信息时 CMake 不搜 lib64,故显式给 OCTOMAP_DIR 而非依赖默认搜索路径)。 * mrpt 用到的 octomap 符号(ColorOcTree、ColorOcTreeNode、OcTree、 OcTreeNode、OcTreeKey、KeySet、Pointcloud、point3d)已逐个在 1.9.8 头中 核对存在;Ubuntu 22.04 的系统 octomap 同为 1.9.8,是 mrpt 的既有支持面。 * 新增两处闸门:%prep 校验 OCTOMAP_DIR 注入成功;%build 开头校验 /usr/include/octomap/ColorOcTree.h 存在,把"BuildRequires 失效"变成 构建早期失败而非 18% 处才炸。 * waived_deps.txt 中 liboctomap-dev 条目改注为"Debian 名 ↔ RPM 名 octomap-devel,已真实引入"。 - Release 2(上一版 2.15.20-1 依赖预检失败;2.15.20-2 因上述 octomap 误判 %build 失败,无产物)。 - 依赖预检无 provider 修复(对齐同链已成功并经 COPR build 112588/112590 验证的 ros-humble-mrpt-libopengl-2.15.20-2 / ros-humble-mrpt-libposes-2.15.20-2 / ros-humble-mrpt-libtclap 处置方式;这些名字在 openEuler 官方源 / EPOL / ROS SIG 外挂源均查无 provider,已逐个 dnf repoquery --whatprovides 实证): * Debian 名修正:libxxf86vm → libXxf86vm-devel,libjpeg → libjpeg-devel, freeglut → freeglut-devel。 * libfreenect-devel / libopenni2-dev / libglfw3-dev / liboctomap-dev / wx-common / wxwidgets 从 BuildRequires 移除,改为关掉内层 mrpt 对应特性: -DMRPT_WITH_KINECT=OFF / -DMRPT_HAS_OPENNI2=OFF / -DMRPT_BUILD_OCTOMAP=OFF (glfw 仅 3rdparty/nanogui 使用,其构建已由包装工程自带的 -DMRPT_BUILD_nanogui=OFF 关闭;wx 仅 mrpt-gui 使用,包装工程自带 -DBUILD_mrpt-gui=OFF 与 -DMRPT_BUILD_wxThings=OFF)。这些条目在 mrpt_libmaps/package.xml 里本就自注为 "not actually required by this ROS package, but we need them for the mrpt/config.h to reflect we have such feature",只影响 config.h 的特性开关。已在 waived_deps.txt 逐条注明理由。 * 按既有基线补齐 openEuler 实际可用的 devel 包:新增 eigen3-devel / git / gtest-devel / libglvnd-devel / libzstd-devel / mesa-libGLU-devel / suitesparse-devel / tbb-devel(mrpt 找不到系统 GLUT 会去编内置 freeglut、 找不到 assimp/openjpeg 会 ExternalProject 下源码,chroot 无外网必挂)。 * BuildRequires/Requires 补齐 ros-humble-mrpt-libbase / -libmath / -libobs / -libopengl / -libposes:本包内层只建 mrpt-maps + mrpt-graphs,而 mrpt-maps 声明依赖 mrpt-obs + mrpt-graphs、mrpt-graphs 依赖 mrpt-opengl、mrpt-obs 依赖 mrpt-opengl + mrpt-tfest,其余 core/io/config/img/math/poses 等兄弟库均走 DeclareMRPTLib.cmake 的 find_package 复用,提供方必须列为构建依赖。 - 修复构建期 ExternalProject 退回 git clone(COPR chroot 无外网必失败): %prep 预置 mrpt 源码到 <top>/mrpt-build/src/mrpt,并把 CMakeLists.txt 的本地 复用路径改写为 ${CMAKE_CURRENT_LIST_DIR}/../mrpt-build、移除 buildfarm HOME 守卫;补 3rdparty/nanogui/include 与 3rdparty/rplidar_sdk/sdk/src 空目录绕过 上游 "git submodules missing!" 致命检查;Source2/Source3 填入 nanoflann 与 simpleini;%build 增加 gitclone 闸门与 libmrpt-maps/libmrpt-graphs 产物闸门。 - 内层 mrpt 的 CMAKE_ARGS 注入 -DCMAKE_PREFIX_PATH=/opt/ros/humble: mrpt-maps / mrpt-graphs 对 BUILD_mrpt-*=OFF 的兄弟库走 DeclareMRPTLib.cmake 的 find_package(mrpt-XXX),命中不了时会被静默禁用、产出空包。 - 内层构建并行度按内存自适应(min(nproc, MemTotal/2.5GiB))并降优化级别为 -O1 -g0,防 cc1plus 被 OOM killer 杀死(同链 mrpt-libmath build 112579 教训)。 - Release 2(上一版 2.15.20-1 依赖预检失败,无产物)。 - 修复 build 112594 的 %build 失败(COPR 日志实锤): `/builddir/.../libs/maps/src/maps/CColouredOctoMap.cpp:21:10: fatal error: octomap/ColorOcTree.h: No such file or directory`。 根因是 Release 2 的判断错误——当时认为 `-DMRPT_BUILD_OCTOMAP=OFF` 能把 COctoMap* 代码路径整体关掉,实测不成立。读上游源码(mrpt-2.15.21)确认: * `cmakemodules/DeclareMRPTLib.cmake` 对 `libs/maps/src/*.cpp` 与 `libs/maps/src/maps/*.cpp` 只做 glob + 仅过滤 `*_WIN.cpp` / `*_LIN.cpp` / `*_unittest.cpp`,**没有**任何 "#if MRPT_HAS_xxx 源文件筛选" 机制;`libs/maps/CMakeLists.txt` 里 `if (CMAKE_MRPT_HAS_OCTOMAP)` 只包住 `link_directories` / `target_link_libraries` / `add_dependencies(EP_octomap)`。 * `CColouredOctoMap.cpp`、`COctoMap.cpp` 顶部无条件 `#include <octomap/ColorOcTree.h>`,没有宏守护。 * `script_octomap.cmake` 里 `MRPT_BUILD_OCTOMAP` 只出现在 `if (NOT OCTOMAP_FOUND)` 分支内,是"找不到系统 octomap 时退化为构建内置版" 的开关;置 OFF 只会让 `CMAKE_MRPT_HAS_OCTOMAP=0`、不加 octomap 的 -I, 源文件依旧被编译 → 头找不到。 即 octomap 对 mrpt-maps 是**硬依赖**,不能靠关开关绕开。修法改走"提供系统 octomap": * `BuildRequires: octomap-devel` + `Requires: octomap`。经 `dnf repoquery --whatprovides '*/octomap/ColorOcTree.h'` 实证 openEuler 官方源有 octomap-devel-1.9.8-2.oe2403sp4(aarch64 同样可用,rc=0),提供 /usr/include/octomap/ColorOcTree.h 与 /usr/lib64/octomap/octomap{-config,-targets,-config-version}.cmake。 * 内层 CMAKE_ARGS 注入由 `-DMRPT_BUILD_OCTOMAP=OFF` 改为 `-DOCTOMAP_DIR=/usr/lib64/octomap`,让 `find_package(OCTOMAP QUIET)` 命中 系统 config(本地以解包 rpm 的 config 目录实测:OCTOMAP_FOUND=1、 OCTOMAP_INCLUDE_DIRS=<prefix>/include、OCTOMAP_VERSION=1.9.8; 注意 `project(... NONE)` 无架构信息时 CMake 不搜 lib64,故显式给 OCTOMAP_DIR 而非依赖默认搜索路径)。 * mrpt 用到的 octomap 符号(ColorOcTree、ColorOcTreeNode、OcTree、 OcTreeNode、OcTreeKey、KeySet、Pointcloud、point3d)已逐个在 1.9.8 头中 核对存在;Ubuntu 22.04 的系统 octomap 同为 1.9.8,是 mrpt 的既有支持面。 * 新增两处闸门:%prep 校验 OCTOMAP_DIR 注入成功;%build 开头校验 /usr/include/octomap/ColorOcTree.h 存在,把"BuildRequires 失效"变成 构建早期失败而非 18% 处才炸。 * waived_deps.txt 中 liboctomap-dev 条目改注为"Debian 名 ↔ RPM 名 octomap-devel,已真实引入"。 - Release 2(上一版 2.15.20-1 依赖预检失败;2.15.20-2 因上述 octomap 误判 %build 失败,无产物)。 - 依赖预检无 provider 修复(7 个缺口全部对齐既有的 ros-humble-mrpt-libbase-2.15.20-3 处置方式;这些名字在 openEuler 官方源 / EPOL / ROS SIG 外挂源均查无 provider): * Debian 名修正:libxxf86vm → libXxf86vm-devel。 * libfreenect-devel / libopenni2-dev / libglfw3-dev / wx-common / wxwidgets / nanoflann_vendor 从 BuildRequires 移除,改为关掉内层 mrpt 对应特性: -DMRPT_WITH_KINECT=OFF / -DMRPT_HAS_OPENNI2=OFF / -DMRPT_WITH_GLFW=OFF / -DMRPT_BUILD_wxThings=OFF;nanoflann 改用 Source2 喂 3rdparty/nanoflann (mrpt 的强制依赖,openEuler 无系统包)。这些条目在 mrpt_libmath/package.xml 里本就自注为 "not actually required by this ROS package, but we need them for the mrpt/config.h to reflect we have such feature",只影响 config.h 的 特性开关,mrpt-math 本体并不使用。 * 按既有基线补齐 openEuler 实际可用的 devel 包:freeglut → freeglut-devel、 libjpeg → libjpeg-devel,新增 libglvnd-devel / mesa-libGLU-devel / libzstd-devel / tbb-devel / gtest-devel / git。 - 修复构建期 ExternalProject 退回 git clone(COPR chroot 无外网必失败): %prep 预置 mrpt 源码到 <top>/mrpt-build/src/mrpt,并把 CMakeLists.txt 的本地 复用路径改写为 ${CMAKE_CURRENT_LIST_DIR}/../mrpt-build、移除 buildfarm HOME 守卫;补 3rdparty/nanogui/include 与 3rdparty/rplidar_sdk/sdk/src 空目录绕过 上游 "git submodules missing!" 致命检查;Source2/Source3 填入 nanoflann 与 simpleini;%build 增加 gitclone 闸门。 - 内层 mrpt 的 CMAKE_ARGS 注入 -DCMAKE_PREFIX_PATH=/opt/ros/humble: mrpt-math 依赖 mrpt-serialization/mrpt-random/mrpt-system,而本包内层 BUILD_mrpt-*=OFF,靠 DeclareMRPTLib.cmake 的 find_package(mrpt-XXX) 复用 mrpt-libbase 已安装版本;命中不了时 mrpt-math 会被静默禁用、产出空包。 - 修复 %build 阶段 cc1plus 被 OOM killer 杀死(build 112579 实测:编译 libs/math/src/CMatrixFixed.cpp 时 "c++: fatal error: Killed signal terminated program cc1plus",随后 .s 被截断报 unknown pseudo-op: `.l')。 根因:mrpt-math 的定长矩阵实例化 TU 单进程峰值内存达 GB 级,而 COPR builder 只有 4 核 / 6.9GiB 内存 / 无 swap(hw_info.log),`make -j4` 四路 cc1plus 叠峰打爆内存。 * %build 在 make 前覆盖 CFLAGS/CXXFLAGS 为 -O1 -g0(+ 保留 hardening 项): CMake 用环境变量初始化 CMAKE_<LANG>_FLAGS,内层 mrpt 因此以更低优化级别 编译;本包 debug_package 已 ,去掉 -g 不损失产物内容。 * %build 用 min(nproc, MemTotal/2.5GiB) 计算并行度(本例得 -j2)替代 `make -j${RPM_BUILD_NCPUS}`,保证至少 1 路,避免再次触发 OOM。 - Release 2(上一版 2.15.20-1 构建失败,无产物)。 - 修复 build 段注释里的宏指令字样被 rpm 当宏定义提取、行尾残留文本被当命令 执行(build 112584:编译已 100% 通过、libmrpt-math.so 已链接,随后 "/var/tmp/rpm-tmp.utF2pB: line 105: command not found" 导致 "Bad exit status from ... (build 段)")。rpm 的 scriptlet 解析器会把 注释行里「百分号 + global/define + 名字 + 值」形式的文本提取为宏定义, 定义之后同一行的剩余文本会被丢出来当脚本体执行——上一轮把 OOM 结论写进 注释时踩到了这个坑。处置:该注释块改为不含百分号的纯文字(技术结论不变)。 - 本轮构建日志同时确认上一轮的 OOM 治理已生效:-j2 + 内层 -O1 下全部 CXX TU(含 CMatrixFixed.cpp 等实例化 TU,41 个)编译完成、libmrpt-math.so 链接成功,全程无 cc1plus 被杀记录(build 112584)。 - 依赖预检无 provider 修复(7 个缺口全部对齐既有的 ros-humble-mrpt-libbase-2.15.20-3 处置方式;这些名字在 openEuler 官方源 / EPOL / ROS SIG 外挂源均查无 provider): * Debian 名修正:libxxf86vm → libXxf86vm-devel。 * libfreenect-devel / libopenni2-dev / libglfw3-dev / wx-common / wxwidgets / nanoflann_vendor 从 BuildRequires 移除,改为关掉内层 mrpt 对应特性: -DMRPT_WITH_KINECT=OFF / -DMRPT_HAS_OPENNI2=OFF / -DMRPT_WITH_GLFW=OFF / -DMRPT_BUILD_wxThings=OFF;nanoflann 改用 Source2 喂 3rdparty/nanoflann (mrpt 的强制依赖,openEuler 无系统包)。这些条目在 mrpt_libmath/package.xml 里本就自注为 "not actually required by this ROS package, but we need them for the mrpt/config.h to reflect we have such feature",只影响 config.h 的 特性开关,mrpt-math 本体并不使用。 * 按既有基线补齐 openEuler 实际可用的 devel 包:freeglut → freeglut-devel、 libjpeg → libjpeg-devel,新增 libglvnd-devel / mesa-libGLU-devel / libzstd-devel / tbb-devel / gtest-devel / git。 - 修复构建期 ExternalProject 退回 git clone(COPR chroot 无外网必失败): %prep 预置 mrpt 源码到 <top>/mrpt-build/src/mrpt,并把 CMakeLists.txt 的本地 复用路径改写为 ${CMAKE_CURRENT_LIST_DIR}/../mrpt-build、移除 buildfarm HOME 守卫;补 3rdparty/nanogui/include 与 3rdparty/rplidar_sdk/sdk/src 空目录绕过 上游 "git submodules missing!" 致命检查;Source2/Source3 填入 nanoflann 与 simpleini;%build 增加 gitclone 闸门。 - 内层 mrpt 的 CMAKE_ARGS 注入 -DCMAKE_PREFIX_PATH=/opt/ros/humble: mrpt-math 依赖 mrpt-serialization/mrpt-random/mrpt-system,而本包内层 BUILD_mrpt-*=OFF,靠 DeclareMRPTLib.cmake 的 find_package(mrpt-XXX) 复用 mrpt-libbase 已安装版本;命中不了时 mrpt-math 会被静默禁用、产出空包。 - 修复 %build 阶段 cc1plus 被 OOM killer 杀死(build 112579 实测:编译 libs/math/src/CMatrixFixed.cpp 时 "c++: fatal error: Killed signal terminated program cc1plus",随后 .s 被截断报 unknown pseudo-op: `.l')。 根因:mrpt-math 的定长矩阵实例化 TU 单进程峰值内存达 GB 级,而 COPR builder 只有 4 核 / 6.9GiB 内存 / 无 swap(hw_info.log),`make -j4` 四路 cc1plus 叠峰打爆内存。 * %build 在 make 前覆盖 CFLAGS/CXXFLAGS 为 -O1 -g0(+ 保留 hardening 项): CMake 用环境变量初始化 CMAKE_<LANG>_FLAGS,内层 mrpt 因此以更低优化级别 编译;本包 debug_package 已 ,去掉 -g 不损失产物内容。 * %build 用 min(nproc, MemTotal/2.5GiB) 计算并行度(本例得 -j2)替代 `make -j${RPM_BUILD_NCPUS}`,保证至少 1 路,避免再次触发 OOM。 - Release 2(上一版 2.15.20-1 构建失败,无产物)。 - 修复 build 段注释里的宏指令字样被 rpm 当宏定义提取、行尾残留文本被当命令 执行(build 112584:编译已 100% 通过、libmrpt-math.so 已链接,随后 "/var/tmp/rpm-tmp.utF2pB: line 105: command not found" 导致 "Bad exit status from ... (build 段)")。rpm 的 scriptlet 解析器会把 注释行里「百分号 + global/define + 名字 + 值」形式的文本提取为宏定义, 定义之后同一行的剩余文本会被丢出来当脚本体执行——上一轮把 OOM 结论写进 注释时踩到了这个坑。处置:该注释块改为不含百分号的纯文字(技术结论不变)。 - 本轮构建日志同时确认上一轮的 OOM 治理已生效:-j2 + 内层 -O1 下全部 CXX TU(含 CMatrixFixed.cpp 等实例化 TU,41 个)编译完成、libmrpt-math.so 链接成功,全程无 cc1plus 被杀记录(build 112584)。 - 依赖预检无 provider 修复(对齐同链已构建成功的 ros-humble-mrpt-libopengl-2 / -libposes-2 / -libobs-2 / -libgui-2 / -libmaps-3 处置方式;这些名字在 openEuler 官方源 / EPOL / ROS SIG 外挂源均查无 provider,已逐个 dnf repoquery --whatprovides 实证): * Debian 名修正:libxxf86vm → libXxf86vm-devel,libjpeg → libjpeg-devel, freeglut → freeglut-devel。 * libfreenect-devel / libopenni2-dev / libglfw3-dev / wx-common / wxwidgets 从 BuildRequires 移除,改为关掉内层 mrpt 对应特性:-DMRPT_WITH_KINECT=OFF / -DMRPT_HAS_OPENNI2=OFF(glfw 仅 3rdparty/nanogui 使用,其构建已由包装工程 自带的 -DMRPT_BUILD_nanogui=OFF 关闭;wx 仅 mrpt-gui 使用,包装工程自带 -DBUILD_mrpt-gui=OFF 与 -DMRPT_BUILD_wxThings=OFF)。这些条目在 mrpt_libnav/package.xml 里本就自注为 "not actually required by this ROS package, but we need them for the mrpt/config.h to reflect we have such feature",只影响 config.h 的特性开关。已在 waived_deps.txt 逐条注明理由。 * 按既有基线补齐 openEuler 实际可用的 devel 包:新增 eigen3-devel / git / gtest-devel / libglvnd-devel / libzstd-devel / mesa-libGLU-devel / suitesparse-devel / tbb-devel(mrpt 找不到系统 GLUT 会去编内置 freeglut、 找不到 assimp/openjpeg 会 ExternalProject 下源码,chroot 无外网必挂)。 * BuildRequires/Requires 补齐 ros-humble-mrpt-libbase / -libmath / -libobs / -libmaps / -libopengl / -libposes:本包内层只建 mrpt-nav + mrpt-kinematics, 按上游 define_mrpt_lib 声明 mrpt-nav ← mrpt-maps + mrpt-kinematics、 mrpt-kinematics ← mrpt-opengl,而 mrpt-maps 的 config 又要 find_dependency(mrpt-obs, mrpt-graphs)、mrpt-obs 又要 mrpt-opengl + mrpt-tfest,其余 core/io/config/img/math/poses 等兄弟库均走 DeclareMRPTLib.cmake 的 find_package 复用,提供方必须列为构建依赖。 * octomap 不引入:本包不建 mrpt-maps,nav/kinematics 源码亦不引用 octomap 头(已逐个 grep 实证),内层以 -DMRPT_BUILD_OCTOMAP=OFF 关掉内置下载分支 即可(顶层 CMakeLists 无条件 include script_octomap.cmake,不关的话 ExternalProject_Add(EP_octomap) 会在 chroot 里去 GitHub 下 zip)。 - 修复构建期 ExternalProject 退回 git clone(COPR chroot 无外网必失败): %prep 预置 mrpt 源码到 <top>/mrpt-build/src/mrpt,并把 CMakeLists.txt 的本地 复用路径改写为 ${CMAKE_CURRENT_LIST_DIR}/../mrpt-build、移除 buildfarm HOME 守卫;补 3rdparty/nanogui/include 与 3rdparty/rplidar_sdk/sdk/src 空目录绕过 上游 "git submodules missing!" 致命检查;Source2/Source3 填入 nanoflann 与 simpleini;%build 增加 gitclone 闸门与 libmrpt-nav/libmrpt-kinematics 产物闸门。 - 内层 mrpt 的 CMAKE_ARGS 注入 -DCMAKE_PREFIX_PATH=/opt/ros/humble: mrpt-nav / mrpt-kinematics 对 BUILD_mrpt-*=OFF 的兄弟库走 DeclareMRPTLib.cmake 的 find_package(mrpt-XXX),命中不了时会被静默禁用、 产出空包。 - 内层构建并行度按内存自适应(min(nproc, MemTotal/2.5GiB))并降优化级别为 -O1 -g0,防 cc1plus 被 OOM killer 杀死(同链 mrpt-libmath build 112579 教训)。 - Release 2(上一版 2.15.20-1 依赖预检失败,无产物)。 - 依赖预检无 provider 修复(对齐同链已构建成功的 ros-humble-mrpt-libopengl-2 / -libposes-2 / -libobs-2 / -libgui-2 / -libmaps-3 处置方式;这些名字在 openEuler 官方源 / EPOL / ROS SIG 外挂源均查无 provider,已逐个 dnf repoquery --whatprovides 实证): * Debian 名修正:libxxf86vm → libXxf86vm-devel,libjpeg → libjpeg-devel, freeglut → freeglut-devel。 * libfreenect-devel / libopenni2-dev / libglfw3-dev / wx-common / wxwidgets 从 BuildRequires 移除,改为关掉内层 mrpt 对应特性:-DMRPT_WITH_KINECT=OFF / -DMRPT_HAS_OPENNI2=OFF(glfw 仅 3rdparty/nanogui 使用,其构建已由包装工程 自带的 -DMRPT_BUILD_nanogui=OFF 关闭;wx 仅 mrpt-gui 使用,包装工程自带 -DBUILD_mrpt-gui=OFF 与 -DMRPT_BUILD_wxThings=OFF)。这些条目在 mrpt_libnav/package.xml 里本就自注为 "not actually required by this ROS package, but we need them for the mrpt/config.h to reflect we have such feature",只影响 config.h 的特性开关。已在 waived_deps.txt 逐条注明理由。 * 按既有基线补齐 openEuler 实际可用的 devel 包:新增 eigen3-devel / git / gtest-devel / libglvnd-devel / libzstd-devel / mesa-libGLU-devel / suitesparse-devel / tbb-devel(mrpt 找不到系统 GLUT 会去编内置 freeglut、 找不到 assimp/openjpeg 会 ExternalProject 下源码,chroot 无外网必挂)。 * BuildRequires/Requires 补齐 ros-humble-mrpt-libbase / -libmath / -libobs / -libmaps / -libopengl / -libposes:本包内层只建 mrpt-nav + mrpt-kinematics, 按上游 define_mrpt_lib 声明 mrpt-nav ← mrpt-maps + mrpt-kinematics、 mrpt-kinematics ← mrpt-opengl,而 mrpt-maps 的 config 又要 find_dependency(mrpt-obs, mrpt-graphs)、mrpt-obs 又要 mrpt-opengl + mrpt-tfest,其余 core/io/config/img/math/poses 等兄弟库均走 DeclareMRPTLib.cmake 的 find_package 复用,提供方必须列为构建依赖。 * octomap 不引入:本包不建 mrpt-maps,nav/kinematics 源码亦不引用 octomap 头(已逐个 grep 实证),内层以 -DMRPT_BUILD_OCTOMAP=OFF 关掉内置下载分支 即可(顶层 CMakeLists 无条件 include script_octomap.cmake,不关的话 ExternalProject_Add(EP_octomap) 会在 chroot 里去 GitHub 下 zip)。 - 修复构建期 ExternalProject 退回 git clone(COPR chroot 无外网必失败): %prep 预置 mrpt 源码到 <top>/mrpt-build/src/mrpt,并把 CMakeLists.txt 的本地 复用路径改写为 ${CMAKE_CURRENT_LIST_DIR}/../mrpt-build、移除 buildfarm HOME 守卫;补 3rdparty/nanogui/include 与 3rdparty/rplidar_sdk/sdk/src 空目录绕过 上游 "git submodules missing!" 致命检查;Source2/Source3 填入 nanoflann 与 simpleini;%build 增加 gitclone 闸门与 libmrpt-nav/libmrpt-kinematics 产物闸门。 - 内层 mrpt 的 CMAKE_ARGS 注入 -DCMAKE_PREFIX_PATH=/opt/ros/humble: mrpt-nav / mrpt-kinematics 对 BUILD_mrpt-*=OFF 的兄弟库走 DeclareMRPTLib.cmake 的 find_package(mrpt-XXX),命中不了时会被静默禁用、 产出空包。 - 内层构建并行度按内存自适应(min(nproc, MemTotal/2.5GiB))并降优化级别为 -O1 -g0,防 cc1plus 被 OOM killer 杀死(同链 mrpt-libmath build 112579 教训)。 - Release 2(上一版 2.15.20-1 依赖预检失败,无产物)。 - 依赖预检无 provider 修复(对齐同链已成功并经 COPR build 112590 验证的 ros-humble-mrpt-libopengl-2.15.20-2 / ros-humble-mrpt-libposes-2.15.20-2 / ros-humble-mrpt-libtclap 处置方式;这些名字在 openEuler 官方源 / EPOL / ROS SIG 外挂源均查无 provider,已逐个 dnf repoquery --whatprovides 实证): * Debian 名修正:libxxf86vm → libXxf86vm-devel,libjpeg → libjpeg-devel, freeglut → freeglut-devel。 * libfreenect-devel / libopenni2-dev / libglfw3-dev / wx-common / wxwidgets 从 BuildRequires 移除,改为关掉内层 mrpt 对应特性:-DMRPT_WITH_KINECT=OFF / -DMRPT_HAS_OPENNI2=OFF(glfw 仅 3rdparty/nanogui 使用,其构建已由包装工程 自带的 -DMRPT_BUILD_nanogui=OFF 关闭;wx 仅 mrpt-gui 使用,包装工程自带 -DBUILD_mrpt-gui=OFF 与 -DMRPT_BUILD_wxThings=OFF)。这些条目在 mrpt_libobs/package.xml 里本就自注为 "not actually required by this ROS package, but we need them for the mrpt/config.h to reflect we have such feature",只影响 config.h 的特性开关。已在 waived_deps.txt 逐条注明理由。 * 按既有基线补齐 openEuler 实际可用的 devel 包:新增 eigen3-devel / git / gtest-devel / libglvnd-devel / libzstd-devel / mesa-libGLU-devel / suitesparse-devel / tbb-devel(mrpt 找不到系统 GLUT 会去编内置 freeglut、 找不到 assimp/openjpeg 会 ExternalProject 下源码,chroot 无外网必挂)。 * BuildRequires/Requires 补齐 ros-humble-mrpt-libbase / -libmath / -libopengl / -libposes:本包内层只建 mrpt-obs + mrpt-topography,而 mrpt-obs 声明依赖 mrpt-opengl 与 mrpt-tfest,其余 core/io/config/img/math/poses 等兄弟库均走 DeclareMRPTLib.cmake 的 find_package 复用,提供方必须列为构建依赖。 - 修复构建期 ExternalProject 退回 git clone(COPR chroot 无外网必失败): %prep 预置 mrpt 源码到 <top>/mrpt-build/src/mrpt,并把 CMakeLists.txt 的本地 复用路径改写为 ${CMAKE_CURRENT_LIST_DIR}/../mrpt-build、移除 buildfarm HOME 守卫;补 3rdparty/nanogui/include 与 3rdparty/rplidar_sdk/sdk/src 空目录绕过 上游 "git submodules missing!" 致命检查;Source2/Source3 填入 nanoflann 与 simpleini;%build 增加 gitclone 闸门。 - 内层 mrpt 的 CMAKE_ARGS 注入 -DCMAKE_PREFIX_PATH=/opt/ros/humble: mrpt-obs 对 BUILD_mrpt-*=OFF 的兄弟库走 DeclareMRPTLib.cmake 的 find_package(mrpt-XXX),命中不了时会被静默禁用、产出空包。 - 内层构建并行度按内存自适应(min(nproc, MemTotal/2.5GiB))并降优化级别为 -O1 -g0,防 cc1plus 被 OOM killer 杀死(同链 mrpt-libmath build 112579 教训)。 - Release 2(上一版 2.15.20-1 依赖预检失败,无产物)。 - 依赖预检无 provider 修复(对齐同链已成功并经 COPR build 112590 验证的 ros-humble-mrpt-libopengl-2.15.20-2 / ros-humble-mrpt-libposes-2.15.20-2 / ros-humble-mrpt-libtclap 处置方式;这些名字在 openEuler 官方源 / EPOL / ROS SIG 外挂源均查无 provider,已逐个 dnf repoquery --whatprovides 实证): * Debian 名修正:libxxf86vm → libXxf86vm-devel,libjpeg → libjpeg-devel, freeglut → freeglut-devel。 * libfreenect-devel / libopenni2-dev / libglfw3-dev / wx-common / wxwidgets 从 BuildRequires 移除,改为关掉内层 mrpt 对应特性:-DMRPT_WITH_KINECT=OFF / -DMRPT_HAS_OPENNI2=OFF(glfw 仅 3rdparty/nanogui 使用,其构建已由包装工程 自带的 -DMRPT_BUILD_nanogui=OFF 关闭;wx 仅 mrpt-gui 使用,包装工程自带 -DBUILD_mrpt-gui=OFF 与 -DMRPT_BUILD_wxThings=OFF)。这些条目在 mrpt_libobs/package.xml 里本就自注为 "not actually required by this ROS package, but we need them for the mrpt/config.h to reflect we have such feature",只影响 config.h 的特性开关。已在 waived_deps.txt 逐条注明理由。 * 按既有基线补齐 openEuler 实际可用的 devel 包:新增 eigen3-devel / git / gtest-devel / libglvnd-devel / libzstd-devel / mesa-libGLU-devel / suitesparse-devel / tbb-devel(mrpt 找不到系统 GLUT 会去编内置 freeglut、 找不到 assimp/openjpeg 会 ExternalProject 下源码,chroot 无外网必挂)。 * BuildRequires/Requires 补齐 ros-humble-mrpt-libbase / -libmath / -libopengl / -libposes:本包内层只建 mrpt-obs + mrpt-topography,而 mrpt-obs 声明依赖 mrpt-opengl 与 mrpt-tfest,其余 core/io/config/img/math/poses 等兄弟库均走 DeclareMRPTLib.cmake 的 find_package 复用,提供方必须列为构建依赖。 - 修复构建期 ExternalProject 退回 git clone(COPR chroot 无外网必失败): %prep 预置 mrpt 源码到 <top>/mrpt-build/src/mrpt,并把 CMakeLists.txt 的本地 复用路径改写为 ${CMAKE_CURRENT_LIST_DIR}/../mrpt-build、移除 buildfarm HOME 守卫;补 3rdparty/nanogui/include 与 3rdparty/rplidar_sdk/sdk/src 空目录绕过 上游 "git submodules missing!" 致命检查;Source2/Source3 填入 nanoflann 与 simpleini;%build 增加 gitclone 闸门。 - 内层 mrpt 的 CMAKE_ARGS 注入 -DCMAKE_PREFIX_PATH=/opt/ros/humble: mrpt-obs 对 BUILD_mrpt-*=OFF 的兄弟库走 DeclareMRPTLib.cmake 的 find_package(mrpt-XXX),命中不了时会被静默禁用、产出空包。 - 内层构建并行度按内存自适应(min(nproc, MemTotal/2.5GiB))并降优化级别为 -O1 -g0,防 cc1plus 被 OOM killer 杀死(同链 mrpt-libmath build 112579 教训)。 - Release 2(上一版 2.15.20-1 依赖预检失败,无产物)。 - 依赖预检无 provider 修复(对齐同链已成功的 ros-humble-mrpt-libposes-2.15.20-2 / ros-humble-mrpt-libmath-2.15.20-3 / ros-humble-mrpt-libbase 处置方式;这些名字在 openEuler 官方源 / EPOL / ROS SIG 外挂源均查无 provider,已逐个实证): * Debian 名修正:libxxf86vm → libXxf86vm-devel,freeglut → freeglut-devel, libjpeg → libjpeg-devel。 * libfreenect-devel / libopenni2-dev / libglfw3-dev / wx-common / wxwidgets 从 BuildRequires 移除,改为关掉内层 mrpt 对应特性:-DMRPT_WITH_KINECT=OFF / -DMRPT_HAS_OPENNI2=OFF(glfw 仅 3rdparty/nanogui 使用,其构建已由包装工程 自带的 -DMRPT_BUILD_nanogui=OFF 关闭)。这些条目在 mrpt_libopengl/package.xml 里本就自注为 "not actually required by this ROS package, but we need them for the mrpt/config.h to reflect we have such feature",只影响 config.h 的特性开关。 * 按既有基线补齐 openEuler 实际可用的 devel 包:新增 eigen3-devel / git / gtest-devel / libglvnd-devel / libzstd-devel / mesa-libGLU-devel / suitesparse-devel / tbb-devel(mrpt-opengl 找不到系统 GLUT 会去编内置 freeglut、找不到 assimp/openjpeg 会 ExternalProject 下源码,chroot 无外网必挂)。 * BuildRequires/Requires 补齐 ros-humble-mrpt-libmath 与 ros-humble-mrpt-libposes: mrpt-opengl 依赖 mrpt-poses 与 mrpt-img,后者依赖 mrpt-io/-math/-config。 - 修复构建期 ExternalProject 退回 git clone(COPR chroot 无外网必失败): %prep 预置 mrpt 源码到 <top>/mrpt-build/src/mrpt,并把 CMakeLists.txt 的本地 复用路径改写为 ${CMAKE_CURRENT_LIST_DIR}/../mrpt-build、移除 buildfarm HOME 守卫;补 3rdparty/nanogui/include 与 3rdparty/rplidar_sdk/sdk/src 空目录绕过 上游 "git submodules missing!" 致命检查;Source2/Source3 填入 nanoflann 与 simpleini;%build 增加 gitclone 闸门。 - 内层 mrpt 的 CMAKE_ARGS 注入 -DCMAKE_PREFIX_PATH=/opt/ros/humble: mrpt-opengl/mrpt-img 对 BUILD_mrpt-*=OFF 的兄弟库走 DeclareMRPTLib.cmake 的 find_package(mrpt-XXX),命中不了时会被静默禁用、产出空包。 - 内层构建并行度按内存自适应(min(nproc, MemTotal/2.5GiB))并降优化级别为 -O1 -g0,防 cc1plus 被 OOM killer 杀死(同链 mrpt-libmath build 112579 教训)。 - Release 2(上一版 2.15.20-1 依赖预检失败,无产物)。 - 依赖预检无 provider 修复(对齐同链已成功的 ros-humble-mrpt-libposes-2.15.20-2 / ros-humble-mrpt-libmath-2.15.20-3 / ros-humble-mrpt-libbase 处置方式;这些名字在 openEuler 官方源 / EPOL / ROS SIG 外挂源均查无 provider,已逐个实证): * Debian 名修正:libxxf86vm → libXxf86vm-devel,freeglut → freeglut-devel, libjpeg → libjpeg-devel。 * libfreenect-devel / libopenni2-dev / libglfw3-dev / wx-common / wxwidgets 从 BuildRequires 移除,改为关掉内层 mrpt 对应特性:-DMRPT_WITH_KINECT=OFF / -DMRPT_HAS_OPENNI2=OFF(glfw 仅 3rdparty/nanogui 使用,其构建已由包装工程 自带的 -DMRPT_BUILD_nanogui=OFF 关闭)。这些条目在 mrpt_libopengl/package.xml 里本就自注为 "not actually required by this ROS package, but we need them for the mrpt/config.h to reflect we have such feature",只影响 config.h 的特性开关。 * 按既有基线补齐 openEuler 实际可用的 devel 包:新增 eigen3-devel / git / gtest-devel / libglvnd-devel / libzstd-devel / mesa-libGLU-devel / suitesparse-devel / tbb-devel(mrpt-opengl 找不到系统 GLUT 会去编内置 freeglut、找不到 assimp/openjpeg 会 ExternalProject 下源码,chroot 无外网必挂)。 * BuildRequires/Requires 补齐 ros-humble-mrpt-libmath 与 ros-humble-mrpt-libposes: mrpt-opengl 依赖 mrpt-poses 与 mrpt-img,后者依赖 mrpt-io/-math/-config。 - 修复构建期 ExternalProject 退回 git clone(COPR chroot 无外网必失败): %prep 预置 mrpt 源码到 <top>/mrpt-build/src/mrpt,并把 CMakeLists.txt 的本地 复用路径改写为 ${CMAKE_CURRENT_LIST_DIR}/../mrpt-build、移除 buildfarm HOME 守卫;补 3rdparty/nanogui/include 与 3rdparty/rplidar_sdk/sdk/src 空目录绕过 上游 "git submodules missing!" 致命检查;Source2/Source3 填入 nanoflann 与 simpleini;%build 增加 gitclone 闸门。 - 内层 mrpt 的 CMAKE_ARGS 注入 -DCMAKE_PREFIX_PATH=/opt/ros/humble: mrpt-opengl/mrpt-img 对 BUILD_mrpt-*=OFF 的兄弟库走 DeclareMRPTLib.cmake 的 find_package(mrpt-XXX),命中不了时会被静默禁用、产出空包。 - 内层构建并行度按内存自适应(min(nproc, MemTotal/2.5GiB))并降优化级别为 -O1 -g0,防 cc1plus 被 OOM killer 杀死(同链 mrpt-libmath build 112579 教训)。 - Release 2(上一版 2.15.20-1 依赖预检失败,无产物)。 - 依赖预检无 provider 修复(对齐同链已成功的 ros-humble-mrpt-libposes-2.15.20-2 / ros-humble-mrpt-libmath-2.15.20-3 / ros-humble-mrpt-libbase 处置方式;这些名字在 openEuler 官方源 / EPOL / ROS SIG 外挂源均查无 provider,已逐个实证): * Debian 名修正:libxxf86vm → libXxf86vm-devel,freeglut → freeglut-devel, libjpeg → libjpeg-devel。 * libfreenect-devel / libopenni2-dev / libglfw3-dev / wx-common / wxwidgets 从 BuildRequires 移除,改为关掉内层 mrpt 对应特性:-DMRPT_WITH_KINECT=OFF / -DMRPT_HAS_OPENNI2=OFF(glfw 仅 3rdparty/nanogui 使用,其构建已由包装工程 自带的 -DMRPT_BUILD_nanogui=OFF 关闭)。这些条目在 mrpt_libopengl/package.xml 里本就自注为 "not actually required by this ROS package, but we need them for the mrpt/config.h to reflect we have such feature",只影响 config.h 的特性开关。 * 按既有基线补齐 openEuler 实际可用的 devel 包:新增 eigen3-devel / git / gtest-devel / libglvnd-devel / libzstd-devel / mesa-libGLU-devel / suitesparse-devel / tbb-devel(mrpt-opengl 找不到系统 GLUT 会去编内置 freeglut、找不到 assimp/openjpeg 会 ExternalProject 下源码,chroot 无外网必挂)。 * BuildRequires/Requires 补齐 ros-humble-mrpt-libmath 与 ros-humble-mrpt-libposes: mrpt-opengl 依赖 mrpt-poses 与 mrpt-img,后者依赖 mrpt-io/-math/-config。 - 修复构建期 ExternalProject 退回 git clone(COPR chroot 无外网必失败): %prep 预置 mrpt 源码到 <top>/mrpt-build/src/mrpt,并把 CMakeLists.txt 的本地 复用路径改写为 ${CMAKE_CURRENT_LIST_DIR}/../mrpt-build、移除 buildfarm HOME 守卫;补 3rdparty/nanogui/include 与 3rdparty/rplidar_sdk/sdk/src 空目录绕过 上游 "git submodules missing!" 致命检查;Source2/Source3 填入 nanoflann 与 simpleini;%build 增加 gitclone 闸门。 - 内层 mrpt 的 CMAKE_ARGS 注入 -DCMAKE_PREFIX_PATH=/opt/ros/humble: mrpt-opengl/mrpt-img 对 BUILD_mrpt-*=OFF 的兄弟库走 DeclareMRPTLib.cmake 的 find_package(mrpt-XXX),命中不了时会被静默禁用、产出空包。 - 内层构建并行度按内存自适应(min(nproc, MemTotal/2.5GiB))并降优化级别为 -O1 -g0,防 cc1plus 被 OOM killer 杀死(同链 mrpt-libmath build 112579 教训)。 - Release 2(上一版 2.15.20-1 依赖预检失败,无产物)。 - 依赖预检无 provider 修复(对齐同链已成功的 ros-humble-mrpt-libposes-2.15.20-2 / ros-humble-mrpt-libmath-2.15.20-3 / ros-humble-mrpt-libbase 处置方式;这些名字在 openEuler 官方源 / EPOL / ROS SIG 外挂源均查无 provider,已逐个实证): * Debian 名修正:libxxf86vm → libXxf86vm-devel,freeglut → freeglut-devel, libjpeg → libjpeg-devel。 * libfreenect-devel / libopenni2-dev / libglfw3-dev / wx-common / wxwidgets 从 BuildRequires 移除,改为关掉内层 mrpt 对应特性:-DMRPT_WITH_KINECT=OFF / -DMRPT_HAS_OPENNI2=OFF(glfw 仅 3rdparty/nanogui 使用,其构建已由包装工程 自带的 -DMRPT_BUILD_nanogui=OFF 关闭)。这些条目在 mrpt_libopengl/package.xml 里本就自注为 "not actually required by this ROS package, but we need them for the mrpt/config.h to reflect we have such feature",只影响 config.h 的特性开关。 * 按既有基线补齐 openEuler 实际可用的 devel 包:新增 eigen3-devel / git / gtest-devel / libglvnd-devel / libzstd-devel / mesa-libGLU-devel / suitesparse-devel / tbb-devel(mrpt-opengl 找不到系统 GLUT 会去编内置 freeglut、找不到 assimp/openjpeg 会 ExternalProject 下源码,chroot 无外网必挂)。 * BuildRequires/Requires 补齐 ros-humble-mrpt-libmath 与 ros-humble-mrpt-libposes: mrpt-opengl 依赖 mrpt-poses 与 mrpt-img,后者依赖 mrpt-io/-math/-config。 - 修复构建期 ExternalProject 退回 git clone(COPR chroot 无外网必失败): %prep 预置 mrpt 源码到 <top>/mrpt-build/src/mrpt,并把 CMakeLists.txt 的本地 复用路径改写为 ${CMAKE_CURRENT_LIST_DIR}/../mrpt-build、移除 buildfarm HOME 守卫;补 3rdparty/nanogui/include 与 3rdparty/rplidar_sdk/sdk/src 空目录绕过 上游 "git submodules missing!" 致命检查;Source2/Source3 填入 nanoflann 与 simpleini;%build 增加 gitclone 闸门。 - 内层 mrpt 的 CMAKE_ARGS 注入 -DCMAKE_PREFIX_PATH=/opt/ros/humble: mrpt-opengl/mrpt-img 对 BUILD_mrpt-*=OFF 的兄弟库走 DeclareMRPTLib.cmake 的 find_package(mrpt-XXX),命中不了时会被静默禁用、产出空包。 - 内层构建并行度按内存自适应(min(nproc, MemTotal/2.5GiB))并降优化级别为 -O1 -g0,防 cc1plus 被 OOM killer 杀死(同链 mrpt-libmath build 112579 教训)。 - Release 2(上一版 2.15.20-1 依赖预检失败,无产物)。 - 依赖预检无 provider 修复(对齐同链既有的 ros-humble-mrpt-libmath-2.15.20-3 与 ros-humble-mrpt-libbase 处置方式;这些名字在 openEuler 官方源 / EPOL / ROS SIG 外挂源均查无 provider,已逐个实证): * Debian 名修正:libxxf86vm → libXxf86vm-devel。 * libfreenect-devel / libopenni2-dev / libglfw3-dev / wx-common / wxwidgets 从 BuildRequires 移除,改为关掉内层 mrpt 对应特性: -DMRPT_WITH_KINECT=OFF / -DMRPT_HAS_OPENNI2=OFF / -DMRPT_WITH_GLFW=OFF / -DMRPT_BUILD_wxThings=OFF。这些条目在 mrpt_libposes/package.xml 里本就自注为 "not actually required by this ROS package, but we need them for the mrpt/config.h to reflect we have such feature",只影响 config.h 的特性开关。 * 按既有基线补齐 openEuler 实际可用的 devel 包:freeglut → freeglut-devel、 libjpeg → libjpeg-devel,新增 libglvnd-devel / mesa-libGLU-devel / libzstd-devel / tbb-devel / gtest-devel / git / eigen3-devel / suitesparse-devel。 - 修复构建期 ExternalProject 退回 git clone(COPR chroot 无外网必失败): %prep 预置 mrpt 源码到 <top>/mrpt-build/src/mrpt,并把 CMakeLists.txt 的本地 复用路径改写为 ${CMAKE_CURRENT_LIST_DIR}/../mrpt-build、移除 buildfarm HOME 守卫;补 3rdparty/nanogui/include 与 3rdparty/rplidar_sdk/sdk/src 空目录绕过 上游 "git submodules missing!" 致命检查;Source2/Source3 填入 nanoflann 与 simpleini;%build 增加 gitclone 闸门。 - 内层 mrpt 的 CMAKE_ARGS 注入 -DCMAKE_PREFIX_PATH=/opt/ros/humble: mrpt-poses/tfest/bayes 依赖 mrpt-math 等,而本包内层 BUILD_mrpt-*=OFF,靠 DeclareMRPTLib.cmake 的 find_package(mrpt-XXX) 复用 mrpt-libbase / mrpt-libmath 已安装版本;命中不了时会被静默禁用、产出空包。 - 内层构建并行度按内存自适应(min(nproc, MemTotal/2.5GiB))并降优化级别为 -O1 -g0,防 cc1plus 被 OOM killer 杀死(同链 mrpt-libmath build 112579 教训)。 - Release 2(上一版 2.15.20-1 依赖预检失败,无产物)。 - 依赖预检无 provider 修复(对齐同链既有的 ros-humble-mrpt-libmath-2.15.20-3 与 ros-humble-mrpt-libbase 处置方式;这些名字在 openEuler 官方源 / EPOL / ROS SIG 外挂源均查无 provider,已逐个实证): * Debian 名修正:libxxf86vm → libXxf86vm-devel。 * libfreenect-devel / libopenni2-dev / libglfw3-dev / wx-common / wxwidgets 从 BuildRequires 移除,改为关掉内层 mrpt 对应特性: -DMRPT_WITH_KINECT=OFF / -DMRPT_HAS_OPENNI2=OFF / -DMRPT_WITH_GLFW=OFF / -DMRPT_BUILD_wxThings=OFF。这些条目在 mrpt_libposes/package.xml 里本就自注为 "not actually required by this ROS package, but we need them for the mrpt/config.h to reflect we have such feature",只影响 config.h 的特性开关。 * 按既有基线补齐 openEuler 实际可用的 devel 包:freeglut → freeglut-devel、 libjpeg → libjpeg-devel,新增 libglvnd-devel / mesa-libGLU-devel / libzstd-devel / tbb-devel / gtest-devel / git / eigen3-devel / suitesparse-devel。 - 修复构建期 ExternalProject 退回 git clone(COPR chroot 无外网必失败): %prep 预置 mrpt 源码到 <top>/mrpt-build/src/mrpt,并把 CMakeLists.txt 的本地 复用路径改写为 ${CMAKE_CURRENT_LIST_DIR}/../mrpt-build、移除 buildfarm HOME 守卫;补 3rdparty/nanogui/include 与 3rdparty/rplidar_sdk/sdk/src 空目录绕过 上游 "git submodules missing!" 致命检查;Source2/Source3 填入 nanoflann 与 simpleini;%build 增加 gitclone 闸门。 - 内层 mrpt 的 CMAKE_ARGS 注入 -DCMAKE_PREFIX_PATH=/opt/ros/humble: mrpt-poses/tfest/bayes 依赖 mrpt-math 等,而本包内层 BUILD_mrpt-*=OFF,靠 DeclareMRPTLib.cmake 的 find_package(mrpt-XXX) 复用 mrpt-libbase / mrpt-libmath 已安装版本;命中不了时会被静默禁用、产出空包。 - 内层构建并行度按内存自适应(min(nproc, MemTotal/2.5GiB))并降优化级别为 -O1 -g0,防 cc1plus 被 OOM killer 杀死(同链 mrpt-libmath build 112579 教训)。 - Release 2(上一版 2.15.20-1 依赖预检失败,无产物)。 - 依赖可用性预检无 provider 修复(对齐同链已构建成功的 ros-humble-mrpt-libopengl / -libposes / -libtclap / -libobs / -libgui / -libmaps 处置方式;这些名字在 openEuler 官方源 / EPOL / ROS SIG 外挂源均查无 provider,已逐个 dnf repoquery --whatprovides 实证): * Debian 名修正:libxxf86vm → libXxf86vm-devel,libjpeg → libjpeg-devel, freeglut → freeglut-devel。 * libfreenect-devel / libopenni2-dev / libglfw3-dev / wx-common / wxwidgets 从 BuildRequires 移除,改为关掉内层 mrpt 对应特性:-DMRPT_WITH_KINECT=OFF / -DMRPT_HAS_OPENNI2=OFF(glfw 仅 3rdparty/nanogui 使用,包装工程自带 -DMRPT_BUILD_nanogui=OFF;wx 仅 mrpt-gui 使用,包装工程自带 -DBUILD_mrpt-gui=OFF 与 -DMRPT_BUILD_wxThings=OFF)。这些条目在 mrpt_libslam/package.xml 里本就自注为 "not actually required by this ROS package, but we need them for the mrpt/config.h to reflect we have such feature",只影响 config.h 的特性开关。已在 waived_deps.txt 逐条注明理由。 * BuildRequires/Requires 补齐 ros-humble-mrpt-libbase / -libmath / -libposes / -libopengl / -libobs / -libmaps:本包内层只建 mrpt-slam + mrpt-vision, mrpt-slam 声明依赖 mrpt-vision + mrpt-maps,mrpt-vision 依赖 mrpt-obs, 其余 core/io/config/img/math/poses/tfest/graphs 等兄弟库均走 DeclareMRPTLib.cmake 的 find_package 复用,提供方必须列为构建依赖。 * 引入 opencv(BuildRequires + Requires):mrpt-vision 有 29/30 个源文件使用 OpenCV(全部由 #if MRPT_HAS_OPENCV 守护),openEuler 的 opencv 包实测同时 提供 /usr/include/opencv4 头、libopencv_*.so 与 OpenCVConfig.cmake, pkg.remap 亦把 libopencv-dev 映射到它;同链 libopengl 已用同一个 opencv-4.5.2 编译 mrpt-img 的 opencv 路径成功。 * 引入 octomap-devel 并注入 -DOCTOMAP_DIR=/usr/lib64/octomap:上游 script_octomap.cmake 在 find_package(OCTOMAP QUIET) 失配时会退回 ExternalProject 下源码(chroot 无外网),同链 mrpt-libmaps 已实证系统 octomap 1.9.8 可用(dnf repoquery --whatprovides 实证)。 - 修复构建期 ExternalProject 退回 git clone(COPR chroot 无外网必失败): %prep 预置 mrpt 源码到 <top>/mrpt-build/src/mrpt,并把 CMakeLists.txt 的本地 复用路径改写为 ${CMAKE_CURRENT_LIST_DIR}/../mrpt-build、移除 buildfarm HOME 守卫;补 3rdparty/nanogui/include 与 3rdparty/rplidar_sdk/sdk/src 空目录绕过 上游 "git submodules missing!" 致命检查;Source2/Source3 填入 nanoflann 与 simpleini;%build 增加 gitclone 闸门与 libmrpt-slam/libmrpt-vision 产物闸门、 octomap/opencv 前置闸门(防止内层静默降级为空包)。 - 内层 mrpt 的 CMAKE_ARGS 注入 -DCMAKE_PREFIX_PATH=/opt/ros/humble: mrpt-slam / mrpt-vision 对 BUILD_mrpt-*=OFF 的兄弟库走 DeclareMRPTLib.cmake 的 find_package(mrpt-XXX),命中不了时会被静默禁用、产出空包。 - 内层构建并行度按内存自适应(min(nproc, MemTotal/2.5GiB))并降优化级别为 -O1 -g0,防 cc1plus 被 OOM killer 杀死(同链 mrpt-libmath build 112579 教训)。 - Initial import (ROS batch) - 修复 build 112599 的构建期自杀:构建段里"内层必须命中系统 OpenCV/octomap" 两个闸门原本放在 make 之前,而内层 ExternalProject 的 configure 由 make 触发, 彼时内层 mrpt-build/src/mrpt-build/CMakeCache.txt 与 EP_octomap-prefix 都还 不存在,grep 必然 No such file or directory 而 exit 1(日志实证:外层 cmake 已 100% 成功,失败纯粹来自该闸门)。现改为:make 之前只保留头文件/cmake config 的存在性前置检查(/usr/include/octomap/ColorOcTree.h、 /usr/include/opencv4/opencv2/core.hpp、lib64/cmake/OpenCV/OpenCVConfig.cmake, 本轮日志已实证三项均通过),两个内层 cache 闸门移到 make 之后与 libmrpt-slam/libmrpt-vision 产物闸门同处校验。 与同链已构建成功的 mrpt-libopengl / -libmaps / -libobs / -libposes 等包一致: 它们在 make 之前只保留 mrpt-gitclone.cmake(预置源码复用)闸门。 - 依赖可用性预检无 provider 修复(对齐同链已构建成功的 ros-humble-mrpt-libopengl / -libposes / -libtclap / -libobs / -libgui / -libmaps 处置方式;这些名字在 openEuler 官方源 / EPOL / ROS SIG 外挂源均查无 provider,已逐个 dnf repoquery --whatprovides 实证): * Debian 名修正:libxxf86vm → libXxf86vm-devel,libjpeg → libjpeg-devel, freeglut → freeglut-devel。 * libfreenect-devel / libopenni2-dev / libglfw3-dev / wx-common / wxwidgets 从 BuildRequires 移除,改为关掉内层 mrpt 对应特性:-DMRPT_WITH_KINECT=OFF / -DMRPT_HAS_OPENNI2=OFF(glfw 仅 3rdparty/nanogui 使用,包装工程自带 -DMRPT_BUILD_nanogui=OFF;wx 仅 mrpt-gui 使用,包装工程自带 -DBUILD_mrpt-gui=OFF 与 -DMRPT_BUILD_wxThings=OFF)。这些条目在 mrpt_libslam/package.xml 里本就自注为 "not actually required by this ROS package, but we need them for the mrpt/config.h to reflect we have such feature",只影响 config.h 的特性开关。已在 waived_deps.txt 逐条注明理由。 * BuildRequires/Requires 补齐 ros-humble-mrpt-libbase / -libmath / -libposes / -libopengl / -libobs / -libmaps:本包内层只建 mrpt-slam + mrpt-vision, mrpt-slam 声明依赖 mrpt-vision + mrpt-maps,mrpt-vision 依赖 mrpt-obs, 其余 core/io/config/img/math/poses/tfest/graphs 等兄弟库均走 DeclareMRPTLib.cmake 的 find_package 复用,提供方必须列为构建依赖。 * 引入 opencv(BuildRequires + Requires):mrpt-vision 有 29/30 个源文件使用 OpenCV(全部由 #if MRPT_HAS_OPENCV 守护),openEuler 的 opencv 包实测同时 提供 /usr/include/opencv4 头、libopencv_*.so 与 OpenCVConfig.cmake, pkg.remap 亦把 libopencv-dev 映射到它;同链 libopengl 已用同一个 opencv-4.5.2 编译 mrpt-img 的 opencv 路径成功。 * 引入 octomap-devel 并注入 -DOCTOMAP_DIR=/usr/lib64/octomap:上游 script_octomap.cmake 在 find_package(OCTOMAP QUIET) 失配时会退回 ExternalProject 下源码(chroot 无外网),同链 mrpt-libmaps 已实证系统 octomap 1.9.8 可用(dnf repoquery --whatprovides 实证)。 - 修复构建期 ExternalProject 退回 git clone(COPR chroot 无外网必失败): %prep 预置 mrpt 源码到 <top>/mrpt-build/src/mrpt,并把 CMakeLists.txt 的本地 复用路径改写为 ${CMAKE_CURRENT_LIST_DIR}/../mrpt-build、移除 buildfarm HOME 守卫;补 3rdparty/nanogui/include 与 3rdparty/rplidar_sdk/sdk/src 空目录绕过 上游 "git submodules missing!" 致命检查;Source2/Source3 填入 nanoflann 与 simpleini;%build 增加 gitclone 闸门与 libmrpt-slam/libmrpt-vision 产物闸门、 octomap/opencv 前置闸门(防止内层静默降级为空包)。 - 内层 mrpt 的 CMAKE_ARGS 注入 -DCMAKE_PREFIX_PATH=/opt/ros/humble: mrpt-slam / mrpt-vision 对 BUILD_mrpt-*=OFF 的兄弟库走 DeclareMRPTLib.cmake 的 find_package(mrpt-XXX),命中不了时会被静默禁用、产出空包。 - 内层构建并行度按内存自适应(min(nproc, MemTotal/2.5GiB))并降优化级别为 -O1 -g0,防 cc1plus 被 OOM killer 杀死(同链 mrpt-libmath build 112579 教训)。 - Initial import (ROS batch) - 修复 build 112599 的构建期自杀:构建段里"内层必须命中系统 OpenCV/octomap" 两个闸门原本放在 make 之前,而内层 ExternalProject 的 configure 由 make 触发, 彼时内层 mrpt-build/src/mrpt-build/CMakeCache.txt 与 EP_octomap-prefix 都还 不存在,grep 必然 No such file or directory 而 exit 1(日志实证:外层 cmake 已 100% 成功,失败纯粹来自该闸门)。现改为:make 之前只保留头文件/cmake config 的存在性前置检查(/usr/include/octomap/ColorOcTree.h、 /usr/include/opencv4/opencv2/core.hpp、lib64/cmake/OpenCV/OpenCVConfig.cmake, 本轮日志已实证三项均通过),两个内层 cache 闸门移到 make 之后与 libmrpt-slam/libmrpt-vision 产物闸门同处校验。 与同链已构建成功的 mrpt-libopengl / -libmaps / -libobs / -libposes 等包一致: 它们在 make 之前只保留 mrpt-gitclone.cmake(预置源码复用)闸门。 - 依赖预检修复:删除在 openEuler 全部已配置源(官方 everything/update/EPOL + ROS SIG 外挂源)均无 provider 的 rosdep 键/裸名(libfreenect-devel、 libglfw3-dev、libopenni2-dev、libxxf86vm、libjpeg、nanoflann_vendor、 wx-common、wxwidgets、freeglut、python3-pip)——mrpt 上游 cmake 对它们均为 可选特性探测,本包只构建 mrpt-tclap 粒度用不到;对应豁免见 waived_deps.txt。 改名补入 openEuler 真实包:freeglut-devel、libjpeg-devel、libXxf86vm-devel、 libglvnd-devel、mesa-libGLU-devel、libzstd-devel、tbb-devel、gtest-devel、git。 - 离线构建支持(对齐已成功构建的 mrpt-libbase):Source1 预取 mrpt 2.15.21 源码 喂 ExternalProject 的 SOURCE_DIR,避免 COPR chroot 无外网时 git clone 失败; Source2/Source3 补 nanoflann 1.5.5 与 simpleini 4.22 两个 submodule。 - 内层 mrpt 注入 -DMRPT_HAS_LIBFYAML=OFF / -DMRPT_WITH_KINECT=OFF / -DMRPT_HAS_OPENNI2=OFF / -DMRPT_BUILD_OCTOMAP=OFF。 - Rebase to 2.15.21-2 (ROS batch import) - 依赖预检修复:删除在 openEuler 全部已配置源(官方 everything/update/EPOL + ROS SIG 外挂源)均无 provider 的 rosdep 键/裸名(libfreenect-devel、 libglfw3-dev、libopenni2-dev、libxxf86vm、libjpeg、nanoflann_vendor、 wx-common、wxwidgets、freeglut、python3-pip)——mrpt 上游 cmake 对它们均为 可选特性探测,本包只构建 mrpt-tclap 粒度用不到;对应豁免见 waived_deps.txt。 改名补入 openEuler 真实包:freeglut-devel、libjpeg-devel、libXxf86vm-devel、 libglvnd-devel、mesa-libGLU-devel、libzstd-devel、tbb-devel、gtest-devel、git。 - 离线构建支持(对齐已成功构建的 mrpt-libbase):Source1 预取 mrpt 2.15.21 源码 喂 ExternalProject 的 SOURCE_DIR,避免 COPR chroot 无外网时 git clone 失败; Source2/Source3 补 nanoflann 1.5.5 与 simpleini 4.22 两个 submodule。 - 内层 mrpt 注入 -DMRPT_HAS_LIBFYAML=OFF / -DMRPT_WITH_KINECT=OFF / -DMRPT_HAS_OPENNI2=OFF / -DMRPT_BUILD_OCTOMAP=OFF。 - Rebase to 2.15.21-2 (ROS batch import) - 修复 ROS_VERSION 环境变量未传入导致 CMake 走 ROS 1 分支、BUILDROOT 为空的问题 - Initial package for openEuler ROS SIG (ros-humble-mrpt-msgs) - 修复 ROS_VERSION 环境变量未传入导致 CMake 走 ROS 1 分支、BUILDROOT 为空的问题 - Initial package for openEuler ROS SIG (ros-humble-mrpt-msgs) - Initial package for ros-humble-mrpt_msgs - Initial package for ros-humble-mrpt_msgs - 初始引入 ros-humble-nebula-continental-common(ament_cmake / autoware_cmake 形态)。 - 源自 tier4/nebula monorepo commit 26749c80(branch main),子包 src/nebula_continental/nebula_continental_common。 - 头包(INTERFACE),仅安装头文件与 CMake 导出目标。 - 初始引入 ros-humble-nebula-continental-common(ament_cmake / autoware_cmake 形态)。 - 源自 tier4/nebula monorepo commit 26749c80(branch main),子包 src/nebula_continental/nebula_continental_common。 - 头包(INTERFACE),仅安装头文件与 CMake 导出目标。 - 初始引入 ros-humble-nebula-core-hw-interfaces(ament_cmake / autoware_cmake 形态)。 - 源自 tier4/nebula monorepo commit 26749c80(branch main),子包 src/nebula_core/nebula_core_hw_interfaces。 - 构建 header-only INTERFACE 库 nebula_core_hw_interfaces,安装硬件接口头文件与 CMake 导出。 - 初始引入 ros-humble-nebula-core-hw-interfaces(ament_cmake / autoware_cmake 形态)。 - 源自 tier4/nebula monorepo commit 26749c80(branch main),子包 src/nebula_core/nebula_core_hw_interfaces。 - 构建 header-only INTERFACE 库 nebula_core_hw_interfaces,安装硬件接口头文件与 CMake 导出。 - 初始引入 ros-humble-nebula-hesai-hw-interfaces(ament_cmake / autoware_cmake 形态)。 - 源自 tier4/nebula monorepo commit 26749c80(branch main),子包 src/nebula_hesai/nebula_hesai_hw_interfaces。 - 构建 SHARED 库 libnebula_hesai_hw_interfaces.so,安装 Hesai 硬件接口与头文件。 - 初始引入 ros-humble-nebula-hesai-hw-interfaces(ament_cmake / autoware_cmake 形态)。 - 源自 tier4/nebula monorepo commit 26749c80(branch main),子包 src/nebula_hesai/nebula_hesai_hw_interfaces。 - 构建 SHARED 库 libnebula_hesai_hw_interfaces.so,安装 Hesai 硬件接口与头文件。 - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial package - Initial package - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial package for ros-humble-pandar-msgs (pandar_msgs 1.2.0) - Initial package for ros-humble-pandar-msgs (pandar_msgs 1.2.0) - Initial import (ROS batch) - Bundle plansys2-popf-plan-solver from the same source tree instead of depending on the broken additional-repo RPM (requires unavailable ros-humble-popf; popf is exec_depend only, not a build dep) - Add ros-humble-pluginlib BuildRequires/Requires for popf_plan_solver - Remove ros-humble-plansys2-popf-plan-solver from BuildRequires/Requires - Pass -Dplansys2_popf_plan_solver_DIR to domain_expert cmake so it locates the staged popf_plan_solver Config.cmake (ament_cmake rebuilds CMAKE_PREFIX_PATH from AMENT_PREFIX_PATH at find_package(ament_cmake) time and drops the build-tree stage prefix) - Initial import (ROS batch) - Bundle plansys2-popf-plan-solver from the same source tree instead of depending on the broken additional-repo RPM (requires unavailable ros-humble-popf; popf is exec_depend only, not a build dep) - Add ros-humble-pluginlib BuildRequires/Requires for popf_plan_solver - Remove ros-humble-plansys2-popf-plan-solver from BuildRequires/Requires - Pass -Dplansys2_popf_plan_solver_DIR to domain_expert cmake so it locates the staged popf_plan_solver Config.cmake (ament_cmake rebuilds CMAKE_PREFIX_PATH from AMENT_PREFIX_PATH at find_package(ament_cmake) time and drops the build-tree stage prefix) - Initial import (ROS batch) - Remove ros-humble-plansys2-popf-plan-solver from BuildRequires/Requires; the popf_plan_solver library, headers and cmake config are provided by ros-humble-plansys2-domain-expert (bundled from the same source tree in build 113131). The additional-repo plansys2-popf-plan-solver RPM requires unavailable ros-humble-popf (exec_depend only, not a build dep) and cannot be installed, breaking dnf builddep. - Initial import (ROS batch) - Remove ros-humble-plansys2-popf-plan-solver from BuildRequires/Requires; the popf_plan_solver library, headers and cmake config are provided by ros-humble-plansys2-domain-expert (bundled from the same source tree in build 113131). The additional-repo plansys2-popf-plan-solver RPM requires unavailable ros-humble-popf (exec_depend only, not a build dep) and cannot be installed, breaking dnf builddep. - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch), commit 6b0648d55ec304468c12d7c0e5b176f9fe331efc - Initial import (ROS batch), commit 6b0648d55ec304468c12d7c0e5b176f9fe331efc - Initial package for ros-humble-pointcloud-to-ply - Initial package for ros-humble-pointcloud-to-ply - Initial import (ROS batch) - Initial import (ROS batch) - Initial package for openEuler 24.03 LTS (ROS 2 humble) - Initial package for openEuler 24.03 LTS (ROS 2 humble) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial package for ros-humble-robotont-msgs built from humble-devel branch snapshot - Initial package for ros-humble-robotont-msgs built from humble-devel branch snapshot - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial import (ROS batch) - Initial package - Initial package - Move files from devel subpackage to main package so urdfdom-headers RPM is produced (CI installability fix) - Add Provides: urdfdom-headers-devel for backward compatibility - Initial package - Move files from devel subpackage to main package so urdfdom-headers RPM is produced (CI installability fix) - Add Provides: urdfdom-headers-devel for backward compatibility - Initial package - Move files from devel subpackage to main package so urdfdom-headers RPM is produced (CI installability fix) - Add Provides: urdfdom-headers-devel for backward compatibility - Initial package - Move files from devel subpackage to main package so urdfdom-headers RPM is produced (CI installability fix) - Add Provides: urdfdom-headers-devel for backward compatibility - Initial package - Move files from devel subpackage to main package so urdfdom-headers RPM is produced (CI installability fix) - Add Provides: urdfdom-headers-devel for backward compatibility - Initial package - Move files from devel subpackage to main package so urdfdom-headers RPM is produced (CI installability fix) - Add Provides: urdfdom-headers-devel for backward compatibility - Initial package - Move files from devel subpackage to main package so urdfdom-headers RPM is produced (CI installability fix) - Add Provides: urdfdom-headers-devel for backward compatibility - Bump Release to 3 to force fresh NVR and repodata regeneration after persistent CI "No match" failures with stale CDN repodata - Initial package - Move files from devel subpackage to main package so urdfdom-headers RPM is produced (CI installability fix) - Add Provides: urdfdom-headers-devel for backward compatibility - Bump Release to 3 to force fresh NVR and repodata regeneration after persistent CI "No match" failures with stale CDN repodata - Initial package - Move files from devel subpackage to main package so urdfdom-headers RPM is produced (CI installability fix) - Add Provides: urdfdom-headers-devel for backward compatibility - Bump Release to 3 to force fresh NVR and repodata regeneration after persistent CI "No match" failures with stale CDN repodata - Initial package - Move files from devel subpackage to main package so urdfdom-headers RPM is produced (CI installability fix) - Add Provides: urdfdom-headers-devel for backward compatibility - Bump Release to 3 to force fresh NVR and repodata regeneration after persistent CI "No match" failures with stale CDN repodata - Initial package