Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add related projects section #18

Draft
wants to merge 4 commits into
base: main
Choose a base branch
from
Draft
Changes from all commits
Commits
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
42 changes: 42 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,48 @@ Below is the list of examples available in the repository.
* [`licensekey_handler`](apps/licensekey_handler/src/main.rs)
: An example that illustrates how to check the licensekey status.

## Related projects

This is not the only initiative to facilitate building Rust applications for Axis devices.
Below is a survey of other projects known to the author.

### cargo-acap

[cargo-acap] is a Rust binary crate that cross-compiles and packages Rust programs for Axis devices.
Installing it and building eap files for virtually every architecture can be done like
```sh
cargo install cargo-acap
cargo acap build
```

Praises
* Depends only on Cargo et al and Docker.
* Requires no ACAP specific boilerplate.
* Supports old products, including ARTPEC-4 and ARTPEC-5.

Reasonable complaints
* Unaware of the ACAP manifest.
* Does not validate the ACAP manifest.
* Requires information to be duplicated in `Cargo.toml` if the ACAP manifest is to be used.
* Does not use dynamic user.
* Requires Docker
* Cannot easily be used from within a Docker container.
* The default docker image cannot be used to link the ACAP SDK APIs.
* Assumes custom target triples with the vendor set to `axis`.
* Restricts how docker images can be built.
* May cause bugs in crates that use conditional compilation[^1].
* Does not support workspace projects
* Does not support bundling target-specific files[^2].

Unreasonable complaints
* Does not facilitate any interaction with the device including
* compiling and running tests
* installing the built `.eap` file

[cargo-acap]: https://github.com/trunnion/cargo-acap
[^1]: https://github.com/trunnion/cargo-acap/commit/6748c52ef1c13a6a12cc327a65a333c012c5725b
[^2]: This has been discussed but not implemented https://github.com/trunnion/cargo-acap/pull/5

## License

[MIT](LICENSE)
Expand Down