dora-image-view takes std/media/v1/Image, and dora's compatibility graph has no edge from std/core/v1/UInt8 to it, so wiring the two failed `dora validate` whatever the node actually sent. Its flat-buffer fallback would not have decoded these frames either: it reads width/height metadata, and this node only published shape. image and depth now go out as the Image struct, camera_info and point_cloud as Float32 arrays and camera_state as a string, all built against the Arrow C data interface in src/arrow so the node still links no Arrow C++. Shape, dtype and encoding metadata are dropped where the payload describes itself; intrinsics, frame_id and both timestamps are unchanged. tests/run.sh covers the packing without a camera or the SDK, round-tripping each array through pyarrow and rebuilding it under the sanitizers. Breaking: image_bgr is renamed to image and every payload changes shape. dataflow_plot.yml is replaced by dataflow_view.yml, which wires the viewer from a tag and repeats its contract in input_types so validate checks both sides of the wiring.
51 lines
1.6 KiB
YAML
51 lines
1.6 KiB
YAML
# Two gates, neither of which needs a camera, the ZED SDK or CUDA: the dataflows
|
|
# are checked against the typed contract in dora-node.yml without running the
|
|
# node, and the payload packing is compiled and tested on its own.
|
|
name: validate
|
|
|
|
on: [push, pull_request]
|
|
|
|
env:
|
|
DORA_VERSION: v1.0.1
|
|
DORA_TARGET: x86_64-unknown-linux-gnu
|
|
|
|
jobs:
|
|
validate:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Install the dora CLI
|
|
run: |
|
|
curl -fsSL -o dora-cli.tar.gz \
|
|
"https://github.com/dora-rs/dora/releases/download/${DORA_VERSION}/dora-cli-${DORA_TARGET}.tar.gz"
|
|
tar xzf dora-cli.tar.gz
|
|
mkdir -p "$HOME/.local/bin"
|
|
install -m 755 "dora-cli-${DORA_TARGET}/dora" "$HOME/.local/bin/dora"
|
|
echo "$HOME/.local/bin" >> "$GITHUB_PATH"
|
|
rm -rf dora-cli.tar.gz "dora-cli-${DORA_TARGET}"
|
|
|
|
- run: dora --version
|
|
|
|
# strict_types: true in each dataflow turns a type warning into a
|
|
# non-zero exit, so a mismatched annotation fails here rather than at
|
|
# runtime. The viewer file is checked too: it wires the same outputs, and
|
|
# a rename that breaks only the consumer should still fail the build.
|
|
- name: Validate the dataflows
|
|
run: |
|
|
dora validate dataflow.yml
|
|
dora validate dataflow_view.yml
|
|
|
|
test:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Install uv
|
|
run: |
|
|
curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
echo "$HOME/.local/bin" >> "$GITHUB_PATH"
|
|
|
|
- name: Test the payload packing
|
|
run: tests/run.sh
|