Skip to content

Openmvs 240 - #2074

Open
DodgySpaniard wants to merge 4 commits into
masterfrom
openmvs-240
Open

DodgySpaniard wants to merge 4 commits into
masterfrom
openmvs-240

Conversation

@DodgySpaniard

@DodgySpaniard DodgySpaniard commented Aug 31, 2026 •

Copy link
Copy Markdown
Member

Bumping OpenMVS to v2.4.0 branch

  • Pinned a commit hash (v2.4.0) (instead of the 355 branch)
  • Updated pixi dependencies: cgal 5.6 -> 6, added nanoflann.
  • Added new arguments to ODM and forwarded them to preserve default behaviour from v2.2.0
  • Patching GPU flags for GPU compilation

AI Disclaimer: LLMs were used for research and testing

 - Pined a commit hash (v2.4.0)
 - Updated pixi dependencies: cgal 5.6 -> 6, added nanoflann.
 - Added new arguments to preserver default behaviour from v2.2.0
We have the policy for empty variables:

  IF(POLICY CMP0104)
	# Initialize CMAKE_CUDA_ARCHITECTURES when CMAKE_CUDA_COMPILER_ID is NVIDIA. Raise an error if CUDA_ARCHITECTURES is empty.
	CMAKE_POLICY(SET CMP0104 NEW)
  ENDIF()

and then:

   UNSET(CMAKE_CUDA_ARCHITECTURES)

Setting:

   -DCMAKE_CUDA_ARCHITECTURES=OFF

Prevents the policy violation while preserving the intent.
@MJohnson459
MJohnson459 force-pushed the openmvs-240 branch 2 times, most recently from 6644b33 to 6d88ba6 Compare September 16, 2026 10:45
The image builds have been dying on the free GitHub runners at the same
point: once the small externals finish, ninja starts openpointclass,
draco, opensfm, openmvs, pypopsift and poissonrecon together, each
running its own cores+2 inner build. Output stops, and some minutes to
an hour later GitHub reports "The hosted runner lost communication with
the server". The GPU image failed four of five attempts this way, and
the CPU image then failed on both amd64 and arm64 in one run.

Pass CMAKE_BUILD_PARALLEL_LEVEL=3 from both Docker workflows as a build
argument. cmake --build honours it at the SuperBuild level and inside
every ExternalProject that builds through cmake, so the total is bounded
at 9 jobs. The value stays in the workflows because it is tuned to the
runner; each Dockerfile only declares the ARG, so local builds are
unchanged. The native-builds workflow already sets the same variable as
a step env.

Two SuperBuild changes make the cap reach everything. The top-level
nproc block now runs before the External-*.cmake files are included, so
they can share it. External-OpenSfM.cmake no longer computes its own
ProcessorCount and passes --parallel; that was left over from when
OpenSfM built with plain make, and under Ninja it only overrode the cap.
The macOS native build failed linking DensifyPointCloud and
ReconstructMesh with "library not found for -ljxl": the v2.4.0
pkg-config macro fell back to a bare -ljxl because conda-forge ships
libjxl only as a shared library. The fork's omvs-v240 branch now carries
upstream's fix for that macro on top of v2.4.0, and drops the upstream
CI workflow that cannot run without the vcpkg manifest the fork removes.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants