Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
83 commits
Select commit Hold shift + click to select a range
52db9ef
feat: add simple devcontainer setup
MJohnson459 Apr 20, 2026
d574ab2
Install CUDA in devcontainer
MJohnson459 May 7, 2026
b6f2b5e
Move to single Dockerfile
MJohnson459 May 11, 2026
ddbd642
Clean up dockerfiles and devcontainers
MJohnson459 May 11, 2026
811cb53
Working Docker and devcontainer
MJohnson459 May 11, 2026
f549650
Update README with dev instructions
MJohnson459 May 12, 2026
3060f51
Remove old dev files
MJohnson459 May 12, 2026
c6fdac9
Cleanup PR
MJohnson459 May 12, 2026
267b798
Last bit of cleanup
MJohnson459 May 12, 2026
418b7f6
feat: transition to conda/pixi part 1
MJohnson459 May 14, 2026
0adde58
feat: can run odm after building with pixi
MJohnson459 May 14, 2026
a3b10cc
fix: remove explicit transitive dependencies
MJohnson459 May 14, 2026
923f70d
first pass at updating dockerfile
MJohnson459 May 14, 2026
db392c4
Working Dockerfile that is roughly the same size
MJohnson459 May 14, 2026
f4058e7
Cleanup and tested run
MJohnson459 May 19, 2026
ad1fa24
pixi working with more dependencies
MJohnson459 May 19, 2026
ad7be35
Cleanup
MJohnson459 May 27, 2026
c7123ee
Move to Ceres 2.2 and conda PDAL
MJohnson459 May 27, 2026
8dd3fa3
Cleanup after PDAL conda move
MJohnson459 May 27, 2026
132ff7d
feat: Remove legacy build
MJohnson459 May 19, 2026
c7dc3a3
Move laszip and untwine to conda deps
MJohnson459 May 27, 2026
6f674bc
Move exiftools to conda
MJohnson459 May 27, 2026
096f6a0
Remove orphaned External cmake files
MJohnson459 May 27, 2026
8ad2aa0
Update lock file
MJohnson459 May 27, 2026
da89c34
Simplify scripts
MJohnson459 May 27, 2026
5cdd9c0
Consistent CMAKE_BUILD_TYPE in opensfm
MJohnson459 May 27, 2026
20bd70a
Revert deletion of windows files
MJohnson459 May 27, 2026
943ea4d
Revert more non-linux removed files
MJohnson459 May 27, 2026
3f689d6
Remove unused portable hack files
MJohnson459 May 27, 2026
8faec0e
Replace portable hack with cmake hack
MJohnson459 May 27, 2026
909a7ef
Fix test values PROJ9 uses a more accurate model
MJohnson459 May 27, 2026
05edfa8
Add .gitattributes for pixi lock file
MJohnson459 May 27, 2026
bab8f49
Fix docker smoke test
MJohnson459 May 27, 2026
26fe443
Fix docker image
MJohnson459 May 27, 2026
cfb1977
feat: Native windows pixi build
MJohnson459 May 26, 2026
1f801a2
fix: Can now run ODM natively on windows
MJohnson459 May 26, 2026
49f27f3
Windows is compiling again
MJohnson459 Jun 2, 2026
b0bd6b9
gpu build working
MJohnson459 Jun 2, 2026
d94d05e
Cleanup docker images to reduce size
MJohnson459 Jun 15, 2026
abce2bf
fix: non-flag arguments to docker failed
MJohnson459 Jun 15, 2026
e64585b
feat: support osx-arm64 & linux-aarch64 platforms
MJohnson459 Jun 15, 2026
e72b042
feat: Add github workflow for macos and arm
MJohnson459 Jun 15, 2026
5ab54ff
patches for osx build
MJohnson459 Jun 15, 2026
74d6de6
More osx build patches
MJohnson459 Jun 15, 2026
4101763
Switch to python scripts
MJohnson459 Jun 17, 2026
64eaaa3
minor cleanup
MJohnson459 Jun 17, 2026
a4f5af8
fix osx build
MJohnson459 Jun 17, 2026
c40d64a
more osx patches
MJohnson459 Jun 17, 2026
a434cc5
re-enable all pixi builds
MJohnson459 Jun 17, 2026
d678630
Use upstream RenderDEM
MJohnson459 Jun 17, 2026
aa20727
Re-enable docker workflow
MJohnson459 Jun 17, 2026
600d24a
Switch from cmake to .patch files
MJohnson459 Jun 17, 2026
2476018
re-add stripped whitespace from patches
MJohnson459 Jun 17, 2026
6e6c794
Remove unused vars
MJohnson459 Jun 17, 2026
6d7ed7b
pixi update
MJohnson459 Jun 17, 2026
7f6fd45
Clean up dependencies
MJohnson459 Jun 17, 2026
1d44bc5
Separate gpu and cpu solve-groups
MJohnson459 Jun 17, 2026
321184a
Fix gpu image deps
MJohnson459 Jun 23, 2026
5359cae
Cleanup readme
MJohnson459 Jun 23, 2026
8ec55c6
Package Windows .exe from the pixi workspace
MJohnson459 Jun 17, 2026
03d6efd
Remove obsolete configure_macos.sh
MJohnson459 Jun 23, 2026
8d541c9
Move Windows installer scripts into scripts/
MJohnson459 Jun 23, 2026
06b0b35
Add make to build deps for PoissonRecon
MJohnson459 Jun 23, 2026
fb6dfee
Clean up pixi.toml
MJohnson459 Jun 23, 2026
0803c9b
Installer and PR cleanup
MJohnson459 Jun 23, 2026
fd14299
More cleanup of scripts
MJohnson459 Jun 23, 2026
32fc1f1
Add a cmake helper to avoid double apply patch
MJohnson459 Jul 1, 2026
ba1a99a
fix: restore Polygon cutline schema for Shapely 2
MJohnson459 Jul 2, 2026
9e997d9
fix: macos failed to find dynlibs
MJohnson459 Jul 3, 2026
98a0da6
Don't test windows OpenMVS in smoke
MJohnson459 Jul 3, 2026
291a0ce
Add OCI image labels carrying git commit SHA to Docker images
MJohnson459 Jul 15, 2026
8125b4b
Add static OCI descriptive labels to Docker images
MJohnson459 Jul 15, 2026
6b777c0
Add pixi docker-build task
MJohnson459 Jul 15, 2026
56a0848
Tag docker-build image with branch name off master
MJohnson459 Jul 15, 2026
67efc1b
Fix docker build
MJohnson459 Jul 15, 2026
2a29dcd
Merge branch 'master' into pixi
MJohnson459 Jul 30, 2026
90ce73f
Fixes after merge
MJohnson459 Jul 30, 2026
ed5059c
Added Flag to explicitly control CUDA usage
DodgySpaniard Jul 30, 2026
7f71244
Fix execution on windows
DodgySpaniard Jul 31, 2026
f72f8ee
Bringing OpenSfM:v1 (ODM:370).
DodgySpaniard Jul 31, 2026
d5f2a01
feat(opensfm): allow passthrough of sfm-algorithm selection + gps acc…
spwoodcock Jul 18, 2026
0ff5125
fix(opensfm): send per-axis gps accuracy to opensfm
spwoodcock Jul 19, 2026
e698697
test: add a few tests for axis-aware gps accuracy passthru
spwoodcock Jul 19, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 26 additions & 0 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
{
"name": "ODM",
"build": {
"context": "..",
"dockerfile": "../Dockerfile",
"target": "dev"
},
"features": {
// https://github.com/devcontainers/features/blob/main/src/common-utils/main.sh
// Add `odm` user for consistency with the GPU image
"ghcr.io/devcontainers/features/common-utils:2": {
"installZsh": "true",
"username": "odm",
"upgradePackages": "true"
}
},
"remoteUser": "odm",
"postCreateCommand": "pixi install --locked",
// Use the `code` directory for compatibility with direct Docker workflows
"workspaceMount": "source=${localWorkspaceFolder},target=/code,type=bind",
"workspaceFolder": "/code",
"mounts": [
"source=${localEnv:HOME}${localEnv:USERPROFILE},target=/home/odm,type=bind,consistency=cached"
]
}
29 changes: 29 additions & 0 deletions .devcontainer/gpu/devcontainer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
{
"name": "ODM GPU",
"build": {
"context": "../..",
"dockerfile": "../../gpu.Dockerfile",
"target": "dev"
},
"features": {
// https://github.com/devcontainers/features/blob/main/src/common-utils/main.sh
// Add `odm` user for consistency with the CPU image
"ghcr.io/devcontainers/features/common-utils:2": {
"installZsh": "true",
"username": "odm",
"upgradePackages": "true"
}
},
"remoteUser": "odm",
"postCreateCommand": "pixi install --locked -e gpu",
// Use the `code` directory for compatibility with direct Docker workflows
"workspaceMount": "source=${localWorkspaceFolder},target=/code,type=bind",
"workspaceFolder": "/code",
"mounts": [
"source=${localEnv:HOME}${localEnv:USERPROFILE},target=/home/odm,type=bind,consistency=cached"
],
"hostRequirements": {
"gpu": "true"
}
}
46 changes: 23 additions & 23 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -1,23 +1,23 @@
Dockerfile
SuperBuild/build
SuperBuild/download
SuperBuild/install
SuperBuild/src
build
opensfm
odm_orthophoto
odm_texturing
odm_meshing
odm_georeferencing
images_resize
.git
/contrib
/docs
/hooks
/img
/license
settings.yml
code_of_conduct.md
configure_18_04.sh
index.html
SuperBuild/build
SuperBuild/download
SuperBuild/install
SuperBuild/src
build
opensfm
odm_orthophoto
odm_texturing
odm_meshing
odm_georeferencing
images_resize
.git
venv
.pixi
scripts/pixi-shell-hook
/contrib
/docs
/hooks
/img
/license
settings.yml
code_of_conduct.md
index.html
2 changes: 2 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# SCM syntax highlighting & preventing 3-way merges
pixi.lock merge=binary linguist-language=YAML linguist-generated=true -diff
28 changes: 0 additions & 28 deletions .github/workflows/build_vcpkg_env.yaml

This file was deleted.

6 changes: 4 additions & 2 deletions .github/workflows/publish-docker.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -44,10 +44,12 @@ jobs:
id: docker_build
uses: docker/build-push-action@v2
with:
file: ./portable.Dockerfile
file: ./Dockerfile
target: runtime
platforms: linux/amd64,linux/arm64
push: true
no-cache: true
cache-from: type=registry,ref=opendronemap/odm:buildcache
cache-to: type=registry,ref=opendronemap/odm:buildcache,mode=max
build-args: |
GIT_COMMIT=${{ github.sha }}
BUILD_DATE=${{ steps.buildmeta.outputs.date }}
Expand Down
51 changes: 25 additions & 26 deletions .github/workflows/publish-windows.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ on:
- master
tags:
- v*
workflow_dispatch:

permissions:
contents: write
Expand All @@ -23,31 +24,20 @@ jobs:
environment: azuresigning
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Setup Python
uses: actions/setup-python@v2
uses: actions/checkout@v6
- name: Setup pixi
uses: prefix-dev/setup-pixi@v0.9.3
with:
python-version: '3.12.9'
architecture: 'x64'
- uses: Jimver/cuda-toolkit@v0.2.24
id: cuda-toolkit
with:
cuda: '12.8.1'
- name: Setup cmake
uses: jwlawson/actions-setup-cmake@v1.13
with:
cmake-version: '3.24.x'
- name: Install venv
run: |
python -m pip install virtualenv
- name: Build sources
run: |
python configure.py build
pixi-version: latest
locked: true
# The build env (gpu) and the shipped runtime env (gpu-prod) are both needed.
environments: >-
gpu
gpu-prod
- name: Build SuperBuild (with CUDA)
run: pixi run -e gpu build
- name: Free up space
run: |
rmdir SuperBuild\download /s /q
rmdir SuperBuild\build /s /q
shell: cmd
run: cmd /c "rd /s /q SuperBuild\build 2>nul & rd /s /q SuperBuild\src 2>nul & exit /b 0"
- name: Retrieve the metadata and decode it to a file
env:
AZURESIGNING_METADATA: ${{ secrets.AZURESIGNING_METADATA }}
Expand All @@ -61,15 +51,25 @@ jobs:
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
- name: Create setup
run: |
python configure.py dist --signtool-path "C:\Program Files (x86)\Windows Kits\10\bin\10.0.26100.0\x64\signtool.exe" --azure-signing-metadata "%RUNNER_TEMP%\metadata.json"
run: pixi run -e gpu dist -- --signtool-path "C:\Program Files (x86)\Windows Kits\10\bin\10.0.26100.0\x64\signtool.exe" --azure-signing-metadata "%RUNNER_TEMP%\metadata.json"
shell: cmd
- name: Upload Setup File
if: always()
uses: actions/upload-artifact@v4
with:
name: Setup
path: dist\*.exe
# Silent-install to a path different from the build dir and run the CLI in a
# shell with no inherited CONDA_PREFIX. This is the real test that the bundled
# conda env relocates: it fails here if activate.d doesn't honor %CONDA_PREFIX%.
- name: Verify relocated install
shell: cmd
run: |
for %%f in (dist\ODM_Setup_*.exe) do start /wait "" "%%f" /SILENT /SUPPRESSMSGBOXES /DIR=C:\ODMtest /LOG=C:\install.log
if not exist C:\ODMtest\run.py exit /b 1
cd /d C:\ODMtest
call win32env.bat
python -X utf8 run.py --help
- name: Upload Setup to Release
uses: svenstaro/upload-release-action@v2
if: startsWith(github.ref, 'refs/tags/')
Expand All @@ -79,4 +79,3 @@ jobs:
file_glob: true
tag: ${{ github.ref }}
overwrite: true

111 changes: 38 additions & 73 deletions .github/workflows/test-build-prs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,86 +2,51 @@ name: Build PRs

on:
pull_request:
workflow_dispatch:

jobs:
pixi:
strategy:
matrix:
platform:
- ubuntu-latest
- windows-2022
- macos-latest
- ubuntu-24.04-arm
runs-on: ${{ matrix.platform }}
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Setup pixi
uses: prefix-dev/setup-pixi@v0.9.3
with:
pixi-version: latest
- name: Install environment
run: pixi install --locked
- name: Build SuperBuild
run: pixi run build
- name: Test
run: pixi run test
- name: Smoke
run: pixi run smoke
- name: Install prod environment
run: pixi install --locked -e prod
- name: Prod smoke
run: pixi run -e prod smoke

docker:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Set Swap Space
uses: pierotofy/set-swap-space@master
with:
swap-size-gb: 12
- name: Set up QEMU
uses: docker/setup-qemu-action@v1
uses: actions/checkout@v6
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
- name: Build
uses: docker/build-push-action@v2
uses: docker/setup-buildx-action@v3
- name: Build runtime image
uses: docker/build-push-action@v6
with:
file: ./portable.Dockerfile
file: ./Dockerfile
target: runtime
platforms: linux/amd64
push: false

# snapcraft:
# runs-on: ubuntu-latest
# strategy:
# matrix:
# architecture:
# - amd64
# steps:
# - name: Checkout
# uses: actions/checkout@v2
# - name: Set Swap Space
# uses: pierotofy/set-swap-space@master
# with:
# swap-size-gb: 12
# - name: Build
# id: build
# uses: diddlesnaps/snapcraft-multiarch-action@v1
# with:
# architecture: ${{ matrix.architecture }}
# - name: Review
# uses: diddlesnaps/snapcraft-review-tools-action@v1
# with:
# snap: ${{ steps.build.outputs.snap }}
# isClassic: 'false'

windows:
runs-on: windows-2022
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Setup Python
uses: actions/setup-python@v2
with:
python-version: '3.12.9'
architecture: 'x64'
- uses: Jimver/cuda-toolkit@v0.2.24
id: cuda-toolkit
with:
cuda: '12.8.1'
- name: Setup cmake
uses: jwlawson/actions-setup-cmake@v1.13
with:
cmake-version: '3.24.x'
- name: Install venv
run: |
python -m pip install virtualenv
- name: Build sources
run: |
python configure.py build
- name: Free up space
run: |
rmdir SuperBuild\download /s /q
rmdir SuperBuild\build /s /q
shell: cmd
- name: Create setup
run: |
python configure.py dist
- name: Upload Setup File
uses: actions/upload-artifact@v4
with:
name: Setup
path: dist\*.exe
cache-from: type=gha
cache-to: type=gha,mode=max
12 changes: 5 additions & 7 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,6 @@ include/
lib/
logs/
share/


src/

!modules/*
Expand All @@ -29,11 +27,11 @@ __pycache__
*.snap
storage/


vcpkg/
venv/
python312/
scripts/pixi-shell-hook
dist/
innosetup/
azuresigning/
.DS_Store

# pixi environments
.pixi/*
!.pixi/config.toml
Loading
Loading