Skip to content

MacOS clang Build With 3rdparty possionrecon Fails at build/poisson/src/ext_poisson/PoissonRecon/Src/SparseMatrix.inl #7500

Description

@essandess

Checklist

Steps to reproduce the issue

I’ve submitted a MacPorts Portfile for Open3D at macports/macports-ports#32787

The clang build fails when compiling possionrecon at build/poisson/src/ext_poisson/PoissonRecon/Src/SparseMatrix.inl with error:

build/poisson/src/ext_poisson/PoissonRecon/Src/SparseMatrix.inl:466:24: error: reference to non-static member function must be called
  466 |         for( size_t i=0 ; i<A.rows ; i++ )
      |                             ~~^~~~

A hack fix is in this patch of cpp/open3d/ml/impl/misc/VoxelPooling.h, which hacks into the cmake build a patch of ${CMAKE_BINARY_DIR}/poisson/src/ext_poisson/PoissonRecon/Src/SparseMatrix.inl that edits A.rows into A.rows() at lines 466 and 499:

--- ./3rdparty/possionrecon/possionrecon.cmake	2026-05-15 12:38:49
+++ ./3rdparty/possionrecon/possionrecon.cmake	2026-05-16 00:42:33
@@ -1,5 +1,27 @@
 include(ExternalProject)
 
+# Fix https://github.com/isl-org/Open3D/issues/7390
+# A.rows() rather than A.rows
+set(PATCH_SCRIPT_NAME "fix_issue_7390.sh")
+set(PATCH_SCRIPT_PATH "${CMAKE_SOURCE_DIR}/3rdparty/possionrecon/${PATCH_SCRIPT_NAME}")
+if(NOT EXISTS "${PATCH_SCRIPT_PATH}")
+    file(GENERATE
+        OUTPUT "${PATCH_SCRIPT_PATH}" 
+        CONTENT "#!/bin/bash -x
+
+if [ -f ${CMAKE_BINARY_DIR}/poisson/src/ext_poisson/PoissonRecon/Src/SparseMatrix.inl ] $<SEMICOLON> then
+    for lineno in 466 499 $<SEMICOLON> do
+        sed -E -i '' \"\$\{lineno\}s|(A\\.rows)([[:space:]]+)|\\1()\\2|\" \\
+            ${CMAKE_BINARY_DIR}/poisson/src/ext_poisson/PoissonRecon/Src/SparseMatrix.inl \\
+            && echo 'sed -E SUCCESSFUL' || echo 'sed -E FAILED' $<SEMICOLON>
+    done $<SEMICOLON>
+else
+   echo \"File '${CMAKE_BINARY_DIR}/poisson/src/ext_poisson/PoissonRecon/Src/SparseMatrix.inl' NOT FOUND!\" $<SEMICOLON>
+fi"
+        FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
+    )
+endif()
+
 ExternalProject_Add(
     ext_poisson
     PREFIX poisson
@@ -10,7 +32,13 @@
     UPDATE_COMMAND ""
     CONFIGURE_COMMAND ""
     BUILD_COMMAND ""
-    INSTALL_COMMAND ""

+    # INSTALL_COMMAND ""
+
+    INSTALL_COMMAND bash -x -c "if [ -x ${PATCH_SCRIPT_PATH} ] $<SEMICOLON> then \
+            ${PATCH_SCRIPT_PATH} $<SEMICOLON> \
+        else \
+            echo '${PATCH_SCRIPT_PATH} NOT FOUND!' $<SEMICOLON> \
+        fi"
 )

ExternalProject_Get_Property(ext_poisson SOURCE_DIR)

Additional information

Related: #7390

Error message

build/poisson/src/ext_poisson/PoissonRecon/Src/SparseMatrix.inl:466:24: error: reference to non-static member function must be called
  466 |         for( size_t i=0 ; i<A.rows ; i++ )
      |                             ~~^~~~

Open3D, Python and System information

- Operating system: macOS 26
- Python version: Python 3.14`
- Open3D version: 0.19.0`
- System architecture: arm64
- Is this a remote workstation?: no
- How did you install Open3D?: build from source
- Compiler version (if built from source): clang

Additional information

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions