-
Notifications
You must be signed in to change notification settings - Fork 115
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
Need to actually support arm64
builds in a way that is compatible with CI
#357
Comments
non-fips was added exclusively to workaround a short term limitation (#35) (note the issue was closed, should probably be opened as "support fips+arm64"). Do you have a use case for non-fips long term? on x86? |
As someone who has worked at a place where FIPS compliance mattered -
Yes - my contention is that the "right way" to fix this in the long term is to play nice with Cargo in the way I described, rather than fighting it. The simplest and least fragile fix for this limitation is to continue to support |
We have already decided to only ship a FIPS build for ztunnel from the Istio project. Making the default thing with So I am fine with keeping support and with checking in CI, but not making it non-default. |
Aight, if the default-ness is non-negotiable (and we don't intend to publish non- |
This leaves us with 2 options for a clean, automatable build
Because of FIPS cert lag, both of these options necessarily create fragile environmental dependencies on very specific Option # 1 (let To enable this, best approach seems to be to create a ztunnel-specific Generally speaking, that approach is blocked by upstream
and it should cleanly build inside a custom This would unblock both FIPS and non-FIPS CI gates, as well as currently-required arm64 hacks. |
I would much prefer we have a prebuilt boringssl checked in. This avoids the need to have obscure dependencies (until a few weeks ago this was clang-7 which is virtually impossible to install on modern OS's) and ensures I would much prefer changes are made to the upstream library to make the build more flexible to meet our needs |
That approach avoids the need to have obscure dependencies (a problem we can, currently do, and realistically will always have to mitigate with containerized build envs) and introduces the inability to easily call Our "default case" is not The only way upstream changes can enable us to build what we need to build (without us adding options/overrides/env vars/args to plain
First is messy and unreasonable to ask upstream to support IMO, second is less so, and could be an option.
It's a cumbersome practice - especially since we are not Golang - and requires every downstream |
fips
-less builds in CIarm64
(or anything else that may come along) builds in a way that is compatible with CI
arm64
(or anything else that may come along) builds in a way that is compatible with CIarm64
builds in a way that is compatible with CI
Closing this - I think there is still followup work to be done on our end, and potentially in upstream I also think a non-FIPS build is probably something we will have to support eventually. But we have |
Raised #399 to track the only outstanding followups. |
fips
-less builds in CIarm64
(or any other target Rust might otherwise support just fine) with FIPScmake
package missing standard targets/templates (enablesfips
-less builds of ztunnel) tools#2344fips
is always going to be optional/have very specific and unique environmental requirements (which will always be the case - even upstreamboring
Rust lib has FIPS as an opt-in flag, the inverse of what we have) - we should make sure our CI can build with and without it.While we must build with and without
fips
for every CI build, the decision to make thefips
feature adefault
feature complicates the ability to easily perform automated builds with and withoutfips
- becausecargo
doesn't support negating features individually, they either must be optional, or they must be defaults - and the only way to disable defaults is to disable all default features and selectively re-enable them, which sucks (both for forward compat and usability, see current solution), and makes doing CI validation of fips on/off impossible without locally editing files, see current best attempt #139Suggestion:
boring
Rust lib and makefips
a non-default featureBORING_BSSL_PATH="vendor/boringssl-fips/linux_x86_64" BORING_BSSL_INCLUDE_PATH="vendor/boringssl-fips/linux_x86_64/include/" cargo build --features fips
cargo build
This would remove the current obstacles to simple automated builds of both
fips
and non-fips
variants, and is more obvious/normative of an approach.EDIT: Changing this to
we should be able to build on more than one arch in a way that is actually automatable and doesn't create a lot of work for ourselves
- that's the core problem.The text was updated successfully, but these errors were encountered: