commit:     ec86568a3fb6ee37be869bd606194343da0770fa
Author:     Nicolas PARLANT <nicolas.parlant <AT> parhuet <DOT> fr>
AuthorDate: Fri Mar 28 09:15:22 2025 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Fri Mar 28 17:23:59 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=ec86568a

sci-libs/octomap: add 1.10.0, qt6

bump EAPI8

switch to qt6 by default (see trivial patch with a PR in upstream)

use soname 1.10 for subslot, instead of expected 110 (19 in tree)

patches:
* cmake_min bump to 3.10
* fix destdir
* filter -Werror and -O3
* use pkgconf for libGQLViewer
* switch qt4/qt5 to qt5/qt6

tests passed here without jobs restriction

open bugs for 1.9.8 are hopefully addressed

Bug: https://bugs.gentoo.org/801232
Bug: https://bugs.gentoo.org/890433
Bug: https://bugs.gentoo.org/890489
Bug: https://bugs.gentoo.org/928853
Closes: https://bugs.gentoo.org/949090
Signed-off-by: Nicolas PARLANT <nicolas.parlant <AT> parhuet.fr>
Closes: https://github.com/gentoo/gentoo/pull/41342
Signed-off-by: Sam James <sam <AT> gentoo.org>

 sci-libs/octomap/Manifest                          |   1 +
 .../octomap/files/octomap-1.10.0-cmake_bump.patch  |  42 ++++++
 .../files/octomap-1.10.0-destdir_edt3d.patch       |  18 +++
 .../files/octomap-1.10.0-filter_flags.patch        |  16 +++
 .../octomap-1.10.0-pkgconf_libqglviewer.patch      |  32 +++++
 .../octomap/files/octomap-1.10.0-qt5_qt6.patch     | 143 +++++++++++++++++++++
 sci-libs/octomap/octomap-1.10.0.ebuild             |  91 +++++++++++++
 7 files changed, 343 insertions(+)

diff --git a/sci-libs/octomap/Manifest b/sci-libs/octomap/Manifest
index 1b96b736d561..4e41334e1f6b 100644
--- a/sci-libs/octomap/Manifest
+++ b/sci-libs/octomap/Manifest
@@ -1 +1,2 @@
+DIST octomap-1.10.0.tar.gz 1694103 BLAKE2B 
0415ee5e961ea456b9d497b35aeadd0d21a742a3f252eac67c717536e1d9f39fa4117170e259a3762ab6101b776afe65dec6fcff5a6e8d66f1957ea0b0ea5552
 SHA512 
1cbee4f6b3569587986774447ad9ec4190f597310c4d6865ffa7cd8865ece2492e4a42fa369b633d9d7a9da782560d49deaa62a18601ea4f56396bdf1a6a5f52
 DIST octomap-1.9.8.tar.gz 1693311 BLAKE2B 
476e4a644287e5ebcaa36de3051b7a2079b733bee3cd80b192fecfab0a85c5de70e3ad087a6cb499141167c735692de72ba2a7b1fb8b318e461f8f21f20020ae
 SHA512 
60afeecc36a190f136dcbe33cb9cd6c06c16233988b383b0b010f65f81e6a3630b55902c5b5ad756ac35dee4c4ec26ec5722d6bd9b8e079f70b7d286293c518e

diff --git a/sci-libs/octomap/files/octomap-1.10.0-cmake_bump.patch 
b/sci-libs/octomap/files/octomap-1.10.0-cmake_bump.patch
new file mode 100644
index 000000000000..7afef4bc95a7
--- /dev/null
+++ b/sci-libs/octomap/files/octomap-1.10.0-cmake_bump.patch
@@ -0,0 +1,42 @@
+https://github.com/OctoMap/octomap/pull/432.patch
+bump cmake_minimum to prepare cmake-4
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index f1eb31f3..63498f5b 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -1,4 +1,4 @@
+-CMAKE_MINIMUM_REQUIRED(VERSION 3.0.2)
++CMAKE_MINIMUM_REQUIRED(VERSION 3.10)
+ PROJECT( octomap-distribution )
+ 
+ ENABLE_TESTING()  # enable CTest environment of subprojects
+diff --git a/dynamicEDT3D/CMakeLists.txt b/dynamicEDT3D/CMakeLists.txt
+index 7edfdde9..3dfd2399 100644
+--- a/dynamicEDT3D/CMakeLists.txt
++++ b/dynamicEDT3D/CMakeLists.txt
+@@ -1,4 +1,4 @@
+-CMAKE_MINIMUM_REQUIRED(VERSION 3.5)
++CMAKE_MINIMUM_REQUIRED(VERSION 3.10)
+ PROJECT(dynamicEDT3D)
+ 
+ include(CTest)
+diff --git a/octomap/CMakeLists.txt b/octomap/CMakeLists.txt
+index 87a78e9c..148a1332 100644
+--- a/octomap/CMakeLists.txt
++++ b/octomap/CMakeLists.txt
+@@ -1,4 +1,4 @@
+-CMAKE_MINIMUM_REQUIRED(VERSION 3.5)
++CMAKE_MINIMUM_REQUIRED(VERSION 3.10)
+ PROJECT( octomap )
+ 
+ include(CTest)
+diff --git a/octovis/CMakeLists.txt b/octovis/CMakeLists.txt
+index 84fa3675..79e6978f 100644
+--- a/octovis/CMakeLists.txt
++++ b/octovis/CMakeLists.txt
+@@ -1,4 +1,4 @@
+-CMAKE_MINIMUM_REQUIRED(VERSION 3.5)
++CMAKE_MINIMUM_REQUIRED(VERSION 3.10)
+ PROJECT( octovis )
+ 
+ include(CTest)

diff --git a/sci-libs/octomap/files/octomap-1.10.0-destdir_edt3d.patch 
b/sci-libs/octomap/files/octomap-1.10.0-destdir_edt3d.patch
new file mode 100644
index 000000000000..2d44dd5954e5
--- /dev/null
+++ b/sci-libs/octomap/files/octomap-1.10.0-destdir_edt3d.patch
@@ -0,0 +1,18 @@
+use cmake variables
+diff --git a/dynamicEDT3D/CMakeLists.txt b/dynamicEDT3D/CMakeLists.txt
+index 7edfdde..14bdf49 100644
+--- a/dynamicEDT3D/CMakeLists.txt
++++ b/dynamicEDT3D/CMakeLists.txt
+@@ -46,9 +46,9 @@ LINK_DIRECTORIES(${CMAKE_LIBRARY_OUTPUT_DIRECTORY})
+ # Installation
+ 
+ set(INSTALL_TARGETS_DEFAULT_ARGS
+-      RUNTIME DESTINATION bin
+-      LIBRARY DESTINATION lib
+-      ARCHIVE DESTINATION lib
++      RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
++      LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
++      ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ )
+ 
+ find_package(octomap REQUIRED

diff --git a/sci-libs/octomap/files/octomap-1.10.0-filter_flags.patch 
b/sci-libs/octomap/files/octomap-1.10.0-filter_flags.patch
new file mode 100644
index 000000000000..7358009c0766
--- /dev/null
+++ b/sci-libs/octomap/files/octomap-1.10.0-filter_flags.patch
@@ -0,0 +1,16 @@
+delete -Werror and -O3
+diff --git a/octomap/CMakeModules/CompilerSettings.cmake 
b/octomap/CMakeModules/CompilerSettings.cmake
+index bae0cc4..a4920fd 100644
+--- a/octomap/CMakeModules/CompilerSettings.cmake
++++ b/octomap/CMakeModules/CompilerSettings.cmake
+@@ -10,8 +10,8 @@ MESSAGE (STATUS "${PROJECT_NAME} building as 
${CMAKE_BUILD_TYPE}")
+ # COMPILER FLAGS
+ IF (CMAKE_COMPILER_IS_GNUCC)
+   SET (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wno-error ")
+-  SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Werror -Wextra -Wpedantic")
+-  SET (CMAKE_CXX_FLAGS_RELEASE "-O3 -funroll-loops -DNDEBUG")
++  SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Wpedantic")
++  SET (CMAKE_CXX_FLAGS_RELEASE "-funroll-loops -DNDEBUG")
+   SET (CMAKE_CXX_FLAGS_DEBUG "-O0 -g")
+   # Shared object compilation under 64bit (vtable)
+   ADD_DEFINITIONS(-fPIC)

diff --git a/sci-libs/octomap/files/octomap-1.10.0-pkgconf_libqglviewer.patch 
b/sci-libs/octomap/files/octomap-1.10.0-pkgconf_libqglviewer.patch
new file mode 100644
index 000000000000..70817fb3d1ed
--- /dev/null
+++ b/sci-libs/octomap/files/octomap-1.10.0-pkgconf_libqglviewer.patch
@@ -0,0 +1,32 @@
+Prefer pkgconfig for QGLViewer, easier than findcmake file and it avoids call 
of 3rd library
+diff --git a/octovis/CMakeLists.txt b/octovis/CMakeLists.txt
+index 84fa367..bc54f36 100644
+--- a/octovis/CMakeLists.txt
++++ b/octovis/CMakeLists.txt
+@@ -77,7 +77,8 @@ endif(NOT OCTOVIS_QT5)
+ IF (OpenGL-NOTFOUND OR Qt4-NOTFOUND)
+       MESSAGE ( "OpenGL and QT4 are required for octovis but could not be 
found.")
+ ELSE()
+-      FIND_PACKAGE(QGLViewer)
++      FIND_PACKAGE(PkgConfig REQUIRED)
++      pkg_check_modules(QGLViewer libQGLViewer)
+       IF(QGLViewer_FOUND)
+         SET( BUILD_VIEWER 1)
+       ELSE()
+diff --git a/octovis/CMakeLists_src.txt b/octovis/CMakeLists_src.txt
+index 35bc1f2..85fd61a 100644
+--- a/octovis/CMakeLists_src.txt
++++ b/octovis/CMakeLists_src.txt
+@@ -57,11 +57,8 @@ else(OCTOVIS_QT5)
+   QT4_ADD_RESOURCES(viewer_RES src/icons.qrc)
+ endif(OCTOVIS_QT5)
+ 
+-#found QGLViewer lib dir
+-link_directories(${QGLViewer_LIBRARY_DIR})
+-
+ INCLUDE_DIRECTORIES(
+-  ${QGLViewer_INCLUDE_DIR}
++  ${QGLViewer_INCLUDE_DIRS}
+ )
+ 
+ SET(viewer_MOC_HDRS

diff --git a/sci-libs/octomap/files/octomap-1.10.0-qt5_qt6.patch 
b/sci-libs/octomap/files/octomap-1.10.0-qt5_qt6.patch
new file mode 100644
index 000000000000..7c6b871679aa
--- /dev/null
+++ b/sci-libs/octomap/files/octomap-1.10.0-qt5_qt6.patch
@@ -0,0 +1,143 @@
+https://github.com/OctoMap/octomap/pull/433.patch
+switch qt4/qt5 to qt5/qt6
+qt6 just works as is
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index f1eb31f3..6a4db7eb 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -6,7 +6,7 @@ set(CMAKE_POSITION_INDEPENDENT_CODE ON)  # enables -fPIC in 
applicable compilers
+ 
+ option(BUILD_OCTOVIS_SUBPROJECT "Build targets from subproject octovis" ON)
+ option(BUILD_DYNAMICETD3D_SUBPROJECT  "Build targets from subproject 
dynamicEDT3D" ON)
+-option(OCTOVIS_QT5 "Link Octovis against Qt5?" ON)
++option(OCTOVIS_QT6 "Link Octovis against Qt6?" ON)
+ 
+ set(CMAKE_CXX_STANDARD 11)
+ 
+diff --git a/octovis/CMakeLists.txt b/octovis/CMakeLists.txt
+index 84fa3675..e6dd604c 100644
+--- a/octovis/CMakeLists.txt
++++ b/octovis/CMakeLists.txt
+@@ -65,17 +65,14 @@ set(INSTALL_TARGETS_DEFAULT_ARGS
+ # libQGLViewer, if dependencies available
+ SET( BUILD_VIEWER 0)
+ 
+-option(OCTOVIS_QT5 "Link Octovis against Qt5?" ON)
++option(OCTOVIS_QT6 "Link Octovis against Qt6?" ON)
+ 
+ # Look for required libraries:
+ set(OpenGL_GL_PREFERENCE LEGACY)
+ FIND_PACKAGE(OpenGL)
+-if(NOT OCTOVIS_QT5)
+-  FIND_PACKAGE(Qt4)
+-endif(NOT OCTOVIS_QT5)
+ 
+-IF (OpenGL-NOTFOUND OR Qt4-NOTFOUND)
+-      MESSAGE ( "OpenGL and QT4 are required for octovis but could not be 
found.")
++IF (OpenGL-NOTFOUND)
++      MESSAGE ( "OpenGL is required for octovis but could not be found.")
+ ELSE()
+       FIND_PACKAGE(QGLViewer)
+       IF(QGLViewer_FOUND)
+diff --git a/octovis/CMakeLists_src.txt b/octovis/CMakeLists_src.txt
+index 35bc1f20..6eaa31ad 100644
+--- a/octovis/CMakeLists_src.txt
++++ b/octovis/CMakeLists_src.txt
+@@ -1,5 +1,8 @@
+ 
+-if(OCTOVIS_QT5)
++if(OCTOVIS_QT6)
++  find_package(Qt6 REQUIRED COMPONENTS Core Gui OpenGLWidgets Widgets Xml)
++  set(QT_LIBRARIES Qt6::Core Qt6::Gui Qt6::OpenGLWidgets Qt6::Widgets 
Qt6::Xml "${OPENGL_gl_LIBRARY}" "${OPENGL_glu_LIBRARY}")
++else(OCTOVIS_QT6)
+   find_package(Qt5Core REQUIRED)
+   find_package(Qt5Gui REQUIRED)
+   find_package(Qt5OpenGL REQUIRED)
+@@ -13,14 +16,7 @@ if(OCTOVIS_QT5)
+     "${Qt5Widgets_INCLUDE_DIRS}"
+     "${Qt5Xml_INCLUDE_DIRS}"
+     )
+-else(OCTOVIS_QT5)
+-  # Qt4-support (more info: http://qtnode.net/wiki?title=Qt_with_cmake)
+-  find_package(Qt4 REQUIRED)
+-  set(QT_USE_QTOPENGL TRUE)
+-  set(QT_USE_QTXML TRUE)
+-  # include the files enabled above
+-  include(${QT_USE_FILE})
+-endif(OCTOVIS_QT5)
++endif(OCTOVIS_QT6)
+ 
+ # Mac OS X seems to require special linker flags:
+ IF(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
+@@ -51,11 +47,11 @@ set(viewer_SRCS
+ )     
+ 
+ # Resource files (icons, ...)
+-if(OCTOVIS_QT5)
++if(OCTOVIS_QT6)
++  QT6_ADD_RESOURCES(viewer_RES src/icons.qrc)
++else(OCTOVIS_QT6)
+   QT5_ADD_RESOURCES(viewer_RES src/icons.qrc)
+-else(OCTOVIS_QT5)
+-  QT4_ADD_RESOURCES(viewer_RES src/icons.qrc)
+-endif(OCTOVIS_QT5)
++endif(OCTOVIS_QT6)
+ 
+ #found QGLViewer lib dir
+ link_directories(${QGLViewer_LIBRARY_DIR})
+@@ -74,11 +70,11 @@ SET(viewer_MOC_HDRS
+ )
+ 
+ # generate list of MOC srcs:
+-if(OCTOVIS_QT5)
++if(OCTOVIS_QT6)
++  QT6_WRAP_CPP(viewer_MOC_SRCS ${viewer_MOC_HDRS})
++else(OCTOVIS_QT6)
+   QT5_WRAP_CPP(viewer_MOC_SRCS ${viewer_MOC_HDRS})
+-else(OCTOVIS_QT5)
+-  QT4_WRAP_CPP(viewer_MOC_SRCS ${viewer_MOC_HDRS})
+-endif(OCTOVIS_QT5)
++endif(OCTOVIS_QT6)
+ 
+ # let cmake generate ui*.h files from .ui files (Qt Designer):
+ SET(viewer_UIS
+@@ -87,11 +83,11 @@ SET(viewer_UIS
+     ${PROJECT_SOURCE_DIR}/include/octovis/ViewerSettingsPanel.ui
+     ${PROJECT_SOURCE_DIR}/include/octovis/ViewerSettingsPanelCamera.ui
+ )
+-if(OCTOVIS_QT5)
++if(OCTOVIS_QT6)
++  QT6_WRAP_UI(viewer_UIS_H ${viewer_UIS})
++else(OCTOVIS_QT6)
+   QT5_WRAP_UI(viewer_UIS_H ${viewer_UIS})
+-else(OCTOVIS_QT5)
+-  QT4_WRAP_UI(viewer_UIS_H ${viewer_UIS})
+-endif(OCTOVIS_QT5)
++endif(OCTOVIS_QT6)
+ 
+ # Don't forget to include output directory, otherwise
+ # the UI file won't be wrapped!
+@@ -101,6 +97,7 @@ include_directories(${CMAKE_CURRENT_BINARY_DIR} 
${CMAKE_BINARY_DIR})
+ # Library target 
+ add_library(octovis-static STATIC ${viewerlib_SRCS})
+ target_link_libraries(octovis-static
++  ${QT_LIBRARIES}
+   ${OPENGL_gl_LIBRARY} 
+   ${OPENGL_glu_LIBRARY} 
+   ${OCTOMAP_LIBRARIES}
+@@ -110,6 +107,7 @@ set_target_properties(octovis-static PROPERTIES 
OUTPUT_NAME octovis)
+ 
+ add_library(octovis-shared SHARED ${viewerlib_SRCS})
+ target_link_libraries(octovis-shared 
++  ${QT_LIBRARIES}
+   ${OPENGL_gl_LIBRARY} 
+   ${OPENGL_glu_LIBRARY} 
+   ${OCTOMAP_LIBRARIES}
+@@ -135,7 +133,6 @@ add_executable(octovis ${viewer_SRCS} ${viewer_UIS_H} 
${viewer_MOC_SRCS} ${viewe
+ 
+ target_link_libraries(octovis 
+ #  ${QGLViewer_LIBRARIES}
+-  ${QT_LIBRARIES}
+   ${OCTOMAP_LIBRARIES}
+   octovis-shared
+ )

diff --git a/sci-libs/octomap/octomap-1.10.0.ebuild 
b/sci-libs/octomap/octomap-1.10.0.ebuild
new file mode 100644
index 000000000000..6fb6dba3d556
--- /dev/null
+++ b/sci-libs/octomap/octomap-1.10.0.ebuild
@@ -0,0 +1,91 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit cmake
+
+DESCRIPTION="Efficient Probabilistic 3D Mapping Framework Based on Octrees"
+HOMEPAGE="https://octomap.github.io/";
+SRC_URI="https://github.com/OctoMap/octomap/archive/v${PV}.tar.gz -> 
${P}.tar.gz"
+
+LICENSE="BSD qt6? ( GPL-2 )"
+SLOT="0/1.10"
+KEYWORDS="~amd64 ~arm"
+IUSE="doc dynamicEDT3D qt6"
+
+RDEPEND="
+       qt6? (
+               dev-qt/qtbase:6[gui,widgets,xml]
+               >=x11-libs/libQGLViewer-2.9.1
+               virtual/glu
+               virtual/opengl
+       )
+"
+DEPEND="${RDEPEND}"
+BDEPEND="doc? ( app-text/doxygen[dot] )"
+
+PATCHES=(
+       "${FILESDIR}"/${PN}-1.10.0-cmake_bump.patch
+       "${FILESDIR}"/${PN}-1.10.0-destdir_edt3d.patch
+       "${FILESDIR}"/${PN}-1.10.0-filter_flags.patch
+       "${FILESDIR}"/${PN}-1.10.0-pkgconf_libqglviewer.patch
+       "${FILESDIR}"/${PN}-1.10.0-qt5_qt6.patch
+)
+
+src_prepare() {
+       if use doc; then
+               doxygen -u octomap/octomap.dox.in 2>/dev/null || die
+               doxygen -u dynamicEDT3D/dynamicEDT3D.dox 2>/dev/null || die
+       fi
+
+       cmake_src_prepare
+}
+
+src_configure() {
+       local mycmakeargs=(
+               -DCMAKE_SKIP_RPATH=ON
+               -DBUILD_DYNAMICETD3D_SUBPROJECT=$(usex dynamicEDT3D)
+               -DBUILD_OCTOVIS_SUBPROJECT=$(usex qt6)
+       )
+
+       cmake_src_configure
+}
+
+src_compile() {
+       cmake_src_compile
+
+       if use doc; then
+               cmake_build docs
+               use dynamicEDT3D && cmake_build docs_dynamicEDT3D
+               # remove doxygen working files
+               find "${S}" \( \
+                       -iname '*.map' -o \
+                       -iname '*.md5' \
+                       \) -delete || die
+       fi
+}
+
+src_test() {
+       local -x LD_LIBRARY_PATH="${S}/lib"
+       cmake_src_test
+}
+
+src_install() {
+       if use doc; then
+               # use docinto to preserve one subdirectory by project in html 
dir
+               docinto html/octomap
+               dodoc -r octomap/doc/html/.
+               if use dynamicEDT3D; then
+                       docinto html/dynamicEDT3D
+                       dodoc -r dynamicEDT3D/doc/html/.
+               fi
+       fi
+
+       cmake_src_install
+
+       # dir with empty files
+       rm -r "${ED}"/usr/share/ament_index || die
+
+       find "${ED}" -name '*.a' -delete || die
+}

Reply via email to