Skip to content

Simplify example run.rs files to use dora_cli build and run functions#1165

Merged
haixuanTao merged 6 commits intomainfrom
simplifying-example-with-build-and-run-function-from-cli
Nov 4, 2025
Merged

Simplify example run.rs files to use dora_cli build and run functions#1165
haixuanTao merged 6 commits intomainfrom
simplifying-example-with-build-and-run-function-from-cli

Conversation

@haixuanTao
Copy link
Copy Markdown
Collaborator

This commit standardizes all example run.rs files to use the dora_cli::build and dora_cli::run functions directly instead of spawning cargo commands with tokio::process::Command. This simplification:

  • Removes custom build_dataflow and run_dataflow helper functions
  • Uses dora_cli::{build, run} API directly
  • Standardizes error messages for tracing setup to use .wrap_err("failed to set up tracing subscriber")
  • Reduces code duplication across all examples
  • Makes the codebase more maintainable

Modified examples:

  • All Rust examples (rust-dataflow, rust-dataflow-git, rust-dataflow-url, rust-ros2-dataflow)
  • All C/C++ examples (c-dataflow, c++-dataflow, c++-arrow-dataflow, c++-ros2-dataflow, cmake-dataflow)
  • All Python examples (python-dataflow, python-operator-dataflow, python-ros2-dataflow)
  • Benchmark example

Total reduction: 289 lines of boilerplate code removed.

🤖 Generated with Claude Code

This commit standardizes all example run.rs files to use the `dora_cli::build` and
`dora_cli::run` functions directly instead of spawning cargo commands with
tokio::process::Command. This simplification:

- Removes custom `build_dataflow` and `run_dataflow` helper functions
- Uses `dora_cli::{build, run}` API directly
- Standardizes error messages for tracing setup to use
  `.wrap_err("failed to set up tracing subscriber")`
- Reduces code duplication across all examples
- Makes the codebase more maintainable

Modified examples:
- All Rust examples (rust-dataflow, rust-dataflow-git, rust-dataflow-url, rust-ros2-dataflow)
- All C/C++ examples (c-dataflow, c++-dataflow, c++-arrow-dataflow, c++-ros2-dataflow, cmake-dataflow)
- All Python examples (python-dataflow, python-operator-dataflow, python-ros2-dataflow)
- Benchmark example

Total reduction: 289 lines of boilerplate code removed.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
Copy link
Copy Markdown
Collaborator

@phil-opp phil-opp left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice!

We should make the test functions sync now though, as both the build and run functions are blocking. I assume that's also why the CI fails.

@phil-opp
Copy link
Copy Markdown
Collaborator

The log output is very mangled unfortunately: https://github.com/dora-rs/dora/actions/runs/18831862990/job/53724683004?pr=1165

runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout
runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout warning: missing documentation for a struct
runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout --> libraries/message/src/descriptor.rs:515:1
runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout |
runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout 515 | pub struct RuntimeNode {
runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout | ^^^^^^^^^^^^^^^^^^^^^^
runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout
runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout warning: missing documentation for a struct
runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout --> libraries/message/src/descriptor.rs:521:1
runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout |
runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout 521 | pub struct OperatorDefinition {

@haixuanTao haixuanTao force-pushed the simplifying-example-with-build-and-run-function-from-cli branch from 9530de8 to 6c7cbb6 Compare November 3, 2025 13:19
@haixuanTao
Copy link
Copy Markdown
Collaborator Author

The log output is very mangled unfortunately: https://github.com/dora-rs/dora/actions/runs/18831862990/job/53724683004?pr=1165

runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout runtime-node: stdout

So FYI, there was a std::current_exe() in the daemon for spawning the runtime process that ended up recursively calling the cargo example process in a loop so I replaced it with a search for dora node.

@haixuanTao
Copy link
Copy Markdown
Collaborator Author

I think those changes should make the CI 30% faster compared to before as the example are now less compile exhaustive.

@haixuanTao haixuanTao merged commit 54b49f7 into main Nov 4, 2025
27 checks passed
@haixuanTao haixuanTao deleted the simplifying-example-with-build-and-run-function-from-cli branch November 4, 2025 12:32
} else {
let mut cmd = tokio::process::Command::new(
std::env::current_exe()
which::which("dora")
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should hightlight this change in the changelog for our next release because this might break people that have installed dora under a different name (e.g. named the executable dora-0.13.3).

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ok

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