Vector: Support cross-compiling for MIPS

Created on 23 Aug 2020  路  8Comments  路  Source: timberio/vector

Current Vector Version

v0.10.0

Use-cases

Support for MIPS would enable running Vector on cheap OpenWrt routers and other MIPS boards.

Attempted Solutions

Currently there are some issues with building due to missing native 64-bit atomics. Possible solution is to use atomic_shim, as it provides a fallback with proper target detection. Also quanta & metrics-runtime dependencies need to be bumped to at least 0.3.2 and 0.13.1, since similar changes were required.

Proposal

Bump quanta to 0.3.2 and metrics-runtime to 0.13.1, use atomic_shim where 64-bit atomics are required (at least in src/sinks/datadog/metrics.rs, can submit a PR if needed).
CI can be handled with cross and mips(el)-unknown-linux-musl target, probably with vendored version of C/C++ dependencies.

References

https://github.com/metrics-rs/quanta/issues/22

enhancement

All 8 comments

@Hoverbear probably has thoughts/feelz here.

Hi @nazar554 , unfortunately we can't use cross at the moment. (We have some pretty esoteric crates that are hard to cross compile, and cross doesn't have C++ support for MUSL targets).

It's something we're actively investigating and hoping to adopt though. I'm planning to do some exploratory work with cross next week. I'll let you know if we manage to add support!

@Hoverbear Are you sure about C++ being unsupported? I see a checkbox in README in row for mipsel-unknown-linux-musl. Also I had sucess building vector with cross once, but I am unsure whether I included all features.

Oh heck you're right. :) Well, then I might be able to slip it in with our cross adoption!!! Good catch!

WIP PR here https://github.com/timberio/vector/pull/3599

Need to figure out static linking issues and vendor-sasl one.
Also unsure why I need to specify libstdc++ and others manually, I thought they will get picked up by dependencies

@nazar554 Thank you!

Yeah I've encountered those issues before too. It's OK to not have sasl for mips at first. :) You can turn it off via feature flag.

You might find things from https://github.com/timberio/vector/blob/cross-env/Makefile useful? I'm not sure. It was an earlier attempt of mine at a more general solution.

@nazar554 we're about to merge https://github.com/timberio/vector/pull/3701 which should make this task much easier

Was this page helpful?
0 / 5 - 0 ratings

Related issues

lewisthompson picture lewisthompson  路  3Comments

a-rodin picture a-rodin  路  3Comments

MOZGIII picture MOZGIII  路  3Comments

binarylogic picture binarylogic  路  3Comments

LucioFranco picture LucioFranco  路  3Comments