opendp / opendp

The core library of differential privacy algorithms powering the OpenDP Project.

Home Page:https://opendp.org

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Rust check feature combinations

mccalluc opened this issue · comments

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