- 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