Rust check feature combinations
mccalluc opened this issue · comments
- split off from #1338
I think the deliverables here are:
- identify the combos that should work
- document that in development-environment.html
- fix the cases that don't work but should.
- add a test to make sure they keep on working.
here's a script to start with:
import subprocess
import itertools
from utils import run_command
def main():
features = ['untrusted', 'contrib', 'honest-but-curious', 'floating-point', 'bindings', 'ffi', 'derive', 'use-openssl']
feature_sets = []
for size in range(0,len(features)+1):
feature_sets += [','.join(subset) for subset in list(itertools.combinations(features, size))]
fail_sets = []
pass_sets = []
for feature_set in feature_sets:
try:
run_command('check features', cmd=f'cd rust; cargo check --no-default-features --features {feature_set}')
pass_sets.append(feature_set)
except subprocess.CalledProcessError:
fail_sets.append(feature_set)
print(f'pass: {" ".join(pass_sets)}')
print(f'fail: {" ".join(fail_sets)}')
if __name__ == "__main__":
main()
and here's the output:
pass: untrusted honest-but-curious floating-point derive use-openssl untrusted,contrib untrusted,honest-but-curious untrusted,floating-point untrusted,bindings untrusted,ffi untrusted,derive untrusted,use-openssl contrib,honest-but-curious honest-but-curious,floating-point honest-but-curious,derive honest-but-curious,use-openssl floating-point,derive floating-point,use-openssl derive,use-openssl untrusted,contrib,honest-but-curious untrusted,contrib,floating-point untrusted,contrib,bindings untrusted,contrib,ffi untrusted,contrib,derive untrusted,contrib,use-openssl untrusted,honest-but-curious,floating-point untrusted,honest-but-curious,bindings untrusted,honest-but-curious,ffi untrusted,honest-but-curious,derive untrusted,honest-but-curious,use-openssl untrusted,floating-point,bindings untrusted,floating-point,ffi untrusted,floating-point,derive untrusted,floating-point,use-openssl untrusted,bindings,ffi untrusted,bindings,derive untrusted,bindings,use-openssl untrusted,ffi,derive untrusted,ffi,use-openssl untrusted,derive,use-openssl contrib,honest-but-curious,floating-point contrib,honest-but-curious,bindings contrib,honest-but-curious,ffi contrib,honest-but-curious,derive contrib,honest-but-curious,use-openssl honest-but-curious,floating-point,derive honest-but-curious,floating-point,use-openssl honest-but-curious,derive,use-openssl floating-point,derive,use-openssl untrusted,contrib,honest-but-curious,floating-point untrusted,contrib,honest-but-curious,bindings untrusted,contrib,honest-but-curious,ffi untrusted,contrib,honest-but-curious,derive untrusted,contrib,honest-but-curious,use-openssl untrusted,contrib,floating-point,bindings untrusted,contrib,floating-point,ffi untrusted,contrib,floating-point,derive untrusted,contrib,floating-point,use-openssl untrusted,contrib,bindings,ffi untrusted,contrib,bindings,derive untrusted,contrib,bindings,use-openssl untrusted,contrib,ffi,derive untrusted,contrib,ffi,use-openssl untrusted,contrib,derive,use-openssl untrusted,honest-but-curious,floating-point,bindings untrusted,honest-but-curious,floating-point,ffi untrusted,honest-but-curious,floating-point,derive untrusted,honest-but-curious,floating-point,use-openssl untrusted,honest-but-curious,bindings,ffi untrusted,honest-but-curious,bindings,derive untrusted,honest-but-curious,bindings,use-openssl untrusted,honest-but-curious,ffi,derive untrusted,honest-but-curious,ffi,use-openssl untrusted,honest-but-curious,derive,use-openssl untrusted,floating-point,bindings,ffi untrusted,floating-point,bindings,derive untrusted,floating-point,bindings,use-openssl untrusted,floating-point,ffi,derive untrusted,floating-point,ffi,use-openssl untrusted,floating-point,derive,use-openssl untrusted,bindings,ffi,derive untrusted,bindings,ffi,use-openssl untrusted,bindings,derive,use-openssl untrusted,ffi,derive,use-openssl contrib,honest-but-curious,floating-point,bindings contrib,honest-but-curious,floating-point,ffi contrib,honest-but-curious,floating-point,derive contrib,honest-but-curious,floating-point,use-openssl contrib,honest-but-curious,bindings,ffi contrib,honest-but-curious,bindings,derive contrib,honest-but-curious,bindings,use-openssl contrib,honest-but-curious,ffi,derive contrib,honest-but-curious,ffi,use-openssl contrib,honest-but-curious,derive,use-openssl honest-but-curious,floating-point,derive,use-openssl untrusted,contrib,honest-but-curious,floating-point,bindings untrusted,contrib,honest-but-curious,floating-point,ffi untrusted,contrib,honest-but-curious,floating-point,derive untrusted,contrib,honest-but-curious,floating-point,use-openssl untrusted,contrib,honest-but-curious,bindings,ffi untrusted,contrib,honest-but-curious,bindings,derive untrusted,contrib,honest-but-curious,bindings,use-openssl untrusted,contrib,honest-but-curious,ffi,derive untrusted,contrib,honest-but-curious,ffi,use-openssl untrusted,contrib,honest-but-curious,derive,use-openssl untrusted,contrib,floating-point,bindings,ffi untrusted,contrib,floating-point,bindings,derive untrusted,contrib,floating-point,bindings,use-openssl untrusted,contrib,floating-point,ffi,derive untrusted,contrib,floating-point,ffi,use-openssl untrusted,contrib,floating-point,derive,use-openssl untrusted,contrib,bindings,ffi,derive untrusted,contrib,bindings,ffi,use-openssl untrusted,contrib,bindings,derive,use-openssl untrusted,contrib,ffi,derive,use-openssl untrusted,honest-but-curious,floating-point,bindings,ffi untrusted,honest-but-curious,floating-point,bindings,derive untrusted,honest-but-curious,floating-point,bindings,use-openssl untrusted,honest-but-curious,floating-point,ffi,derive untrusted,honest-but-curious,floating-point,ffi,use-openssl untrusted,honest-but-curious,floating-point,derive,use-openssl untrusted,honest-but-curious,bindings,ffi,derive untrusted,honest-but-curious,bindings,ffi,use-openssl untrusted,honest-but-curious,bindings,derive,use-openssl untrusted,honest-but-curious,ffi,derive,use-openssl untrusted,floating-point,bindings,ffi,derive untrusted,floating-point,bindings,ffi,use-openssl untrusted,floating-point,bindings,derive,use-openssl untrusted,floating-point,ffi,derive,use-openssl untrusted,bindings,ffi,derive,use-openssl contrib,honest-but-curious,floating-point,bindings,ffi contrib,honest-but-curious,floating-point,bindings,derive contrib,honest-but-curious,floating-point,bindings,use-openssl contrib,honest-but-curious,floating-point,ffi,derive contrib,honest-but-curious,floating-point,ffi,use-openssl contrib,honest-but-curious,floating-point,derive,use-openssl contrib,honest-but-curious,bindings,ffi,derive contrib,honest-but-curious,bindings,ffi,use-openssl contrib,honest-but-curious,bindings,derive,use-openssl contrib,honest-but-curious,ffi,derive,use-openssl untrusted,contrib,honest-but-curious,floating-point,bindings,ffi untrusted,contrib,honest-but-curious,floating-point,bindings,derive untrusted,contrib,honest-but-curious,floating-point,bindings,use-openssl untrusted,contrib,honest-but-curious,floating-point,ffi,derive untrusted,contrib,honest-but-curious,floating-point,ffi,use-openssl untrusted,contrib,honest-but-curious,floating-point,derive,use-openssl untrusted,contrib,honest-but-curious,bindings,ffi,derive untrusted,contrib,honest-but-curious,bindings,ffi,use-openssl untrusted,contrib,honest-but-curious,bindings,derive,use-openssl untrusted,contrib,honest-but-curious,ffi,derive,use-openssl untrusted,contrib,floating-point,bindings,ffi,derive untrusted,contrib,floating-point,bindings,ffi,use-openssl untrusted,contrib,floating-point,bindings,derive,use-openssl untrusted,contrib,floating-point,ffi,derive,use-openssl untrusted,contrib,bindings,ffi,derive,use-openssl untrusted,honest-but-curious,floating-point,bindings,ffi,derive untrusted,honest-but-curious,floating-point,bindings,ffi,use-openssl untrusted,honest-but-curious,floating-point,bindings,derive,use-openssl untrusted,honest-but-curious,floating-point,ffi,derive,use-openssl untrusted,honest-but-curious,bindings,ffi,derive,use-openssl untrusted,floating-point,bindings,ffi,derive,use-openssl contrib,honest-but-curious,floating-point,bindings,ffi,derive contrib,honest-but-curious,floating-point,bindings,ffi,use-openssl contrib,honest-but-curious,floating-point,bindings,derive,use-openssl contrib,honest-but-curious,floating-point,ffi,derive,use-openssl contrib,honest-but-curious,bindings,ffi,derive,use-openssl untrusted,contrib,honest-but-curious,floating-point,bindings,ffi,derive untrusted,contrib,honest-but-curious,floating-point,bindings,ffi,use-openssl untrusted,contrib,honest-but-curious,floating-point,bindings,derive,use-openssl untrusted,contrib,honest-but-curious,floating-point,ffi,derive,use-openssl untrusted,contrib,honest-but-curious,bindings,ffi,derive,use-openssl untrusted,contrib,floating-point,bindings,ffi,derive,use-openssl untrusted,honest-but-curious,floating-point,bindings,ffi,derive,use-openssl contrib,honest-but-curious,floating-point,bindings,ffi,derive,use-openssl untrusted,contrib,honest-but-curious,floating-point,bindings,ffi,derive,use-openssl
fail: contrib bindings ffi contrib,floating-point contrib,bindings contrib,ffi contrib,derive contrib,use-openssl honest-but-curious,bindings honest-but-curious,ffi floating-point,bindings floating-point,ffi bindings,ffi bindings,derive bindings,use-openssl ffi,derive ffi,use-openssl contrib,floating-point,bindings contrib,floating-point,ffi contrib,floating-point,derive contrib,floating-point,use-openssl contrib,bindings,ffi contrib,bindings,derive contrib,bindings,use-openssl contrib,ffi,derive contrib,ffi,use-openssl contrib,derive,use-openssl honest-but-curious,floating-point,bindings honest-but-curious,floating-point,ffi honest-but-curious,bindings,ffi honest-but-curious,bindings,derive honest-but-curious,bindings,use-openssl honest-but-curious,ffi,derive honest-but-curious,ffi,use-openssl floating-point,bindings,ffi floating-point,bindings,derive floating-point,bindings,use-openssl floating-point,ffi,derive floating-point,ffi,use-openssl bindings,ffi,derive bindings,ffi,use-openssl bindings,derive,use-openssl ffi,derive,use-openssl contrib,floating-point,bindings,ffi contrib,floating-point,bindings,derive contrib,floating-point,bindings,use-openssl contrib,floating-point,ffi,derive contrib,floating-point,ffi,use-openssl contrib,floating-point,derive,use-openssl contrib,bindings,ffi,derive contrib,bindings,ffi,use-openssl contrib,bindings,derive,use-openssl contrib,ffi,derive,use-openssl honest-but-curious,floating-point,bindings,ffi honest-but-curious,floating-point,bindings,derive honest-but-curious,floating-point,bindings,use-openssl honest-but-curious,floating-point,ffi,derive honest-but-curious,floating-point,ffi,use-openssl honest-but-curious,bindings,ffi,derive honest-but-curious,bindings,ffi,use-openssl honest-but-curious,bindings,derive,use-openssl honest-but-curious,ffi,derive,use-openssl floating-point,bindings,ffi,derive floating-point,bindings,ffi,use-openssl floating-point,bindings,derive,use-openssl floating-point,ffi,derive,use-openssl bindings,ffi,derive,use-openssl contrib,floating-point,bindings,ffi,derive contrib,floating-point,bindings,ffi,use-openssl contrib,floating-point,bindings,derive,use-openssl contrib,floating-point,ffi,derive,use-openssl contrib,bindings,ffi,derive,use-openssl honest-but-curious,floating-point,bindings,ffi,derive honest-but-curious,floating-point,bindings,ffi,use-openssl honest-but-curious,floating-point,bindings,derive,use-openssl honest-but-curious,floating-point,ffi,derive,use-openssl honest-but-curious,bindings,ffi,derive,use-openssl floating-point,bindings,ffi,derive,use-openssl contrib,floating-point,bindings,ffi,derive,use-openssl honest-but-curious,floating-point,bindings,ffi,derive,use-openssl
Talking with Mike:
- All combos should work (although in practice some are more plausible than others)
- but we may not want to check more than one in CI
- but something is blowing out the cache, and there might be a way to make the build of different combos faster
And check cargo check --profile test
to make sure that cargo test works