mirror of
https://github.com/henrydcase/pqc.git
synced 2024-11-26 09:21:28 +00:00
Install test dependencies and build on OSX GCC
This commit is contained in:
parent
4cac434f47
commit
d66bef0284
41
.travis.yml
41
.travis.yml
@ -8,25 +8,54 @@ matrix:
|
|||||||
compiler: gcc
|
compiler: gcc
|
||||||
env:
|
env:
|
||||||
- MAKETARGET="test-all tidy-all check-format"
|
- MAKETARGET="test-all tidy-all check-format"
|
||||||
|
addons:
|
||||||
|
apt:
|
||||||
|
sources:
|
||||||
|
- deadsnakes
|
||||||
|
packages:
|
||||||
|
- valgrind
|
||||||
|
- python3.7
|
||||||
- os: linux
|
- os: linux
|
||||||
compiler: clang
|
compiler: clang
|
||||||
env:
|
env:
|
||||||
- MAKETARGET=test-all
|
- MAKETARGET=test-all
|
||||||
|
addons:
|
||||||
|
apt:
|
||||||
|
sources:
|
||||||
|
- deadsnakes
|
||||||
|
packages:
|
||||||
|
- valgrind
|
||||||
|
- python3.7
|
||||||
- os: osx
|
- os: osx
|
||||||
|
osx_image: xcode10.1
|
||||||
compiler: clang
|
compiler: clang
|
||||||
env:
|
env:
|
||||||
- MAKETARGET=test-all
|
- MAKETARGET=test-all
|
||||||
# This currently appears to be broken.
|
addons:
|
||||||
# - os: osx
|
homebrew:
|
||||||
# env:
|
packages:
|
||||||
# - MATRIX_EVAL="brew install gcc && CC=gcc-8 && CXX=g++-8"
|
- python@3.7
|
||||||
# - MAKETARGET=test-all
|
- os: osx
|
||||||
|
osx_image: xcode10.1
|
||||||
|
compiler: gcc
|
||||||
|
addons:
|
||||||
|
homebrew:
|
||||||
|
packages:
|
||||||
|
- gcc@8
|
||||||
|
- python@3.7
|
||||||
|
env:
|
||||||
|
- MAKETARGET=test-all
|
||||||
|
|
||||||
before_install:
|
before_install:
|
||||||
- eval "${MATRIX_EVAL}"
|
- python3.7 --version
|
||||||
|
- curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
|
||||||
|
- python3.7 get-pip.py --user
|
||||||
|
- python3.7 -mpip install -r requirements.txt
|
||||||
|
|
||||||
script:
|
script:
|
||||||
- make ${MAKETARGET}
|
- make ${MAKETARGET}
|
||||||
|
|
||||||
|
|
||||||
|
cache: pip
|
||||||
|
|
||||||
# vim: set ft=yaml ts=2 sw=2 tw=0 et :
|
# vim: set ft=yaml ts=2 sw=2 tw=0 et :
|
||||||
|
8
Makefile
8
Makefile
@ -149,22 +149,22 @@ run-valgrind-all:
|
|||||||
|
|
||||||
.PHONY: run-testvectors
|
.PHONY: run-testvectors
|
||||||
run-testvectors: test/check_testvectors.py | require_scheme
|
run-testvectors: test/check_testvectors.py | require_scheme
|
||||||
python3 test/check_testvectors.py $(SCHEME) || exit 1; \
|
python3.7 test/check_testvectors.py $(SCHEME) || exit 1; \
|
||||||
|
|
||||||
.PHONY: run-symbol-namespace
|
.PHONY: run-symbol-namespace
|
||||||
run-symbol-namespace: test/check_symbol_namespace.py | require_scheme
|
run-symbol-namespace: test/check_symbol_namespace.py | require_scheme
|
||||||
python3 test/check_symbol_namespace.py $(SCHEME) || exit 1; \
|
python3.7 test/check_symbol_namespace.py $(SCHEME) || exit 1; \
|
||||||
|
|
||||||
.PHONY: run-testvectors-all
|
.PHONY: run-testvectors-all
|
||||||
run-testvectors-all: test/check_testvectors.py
|
run-testvectors-all: test/check_testvectors.py
|
||||||
@for scheme in $(ALL_SCHEMES); do \
|
@for scheme in $(ALL_SCHEMES); do \
|
||||||
python3 test/check_testvectors.py $$scheme || exit 1; \
|
python3.7 test/check_testvectors.py $$scheme || exit 1; \
|
||||||
done
|
done
|
||||||
|
|
||||||
.PHONY: run-symbol-namespace-all
|
.PHONY: run-symbol-namespace-all
|
||||||
run-symbol-namespace-all:
|
run-symbol-namespace-all:
|
||||||
@for scheme in $(ALL_SCHEMES); do \
|
@for scheme in $(ALL_SCHEMES); do \
|
||||||
python3 test/check_symbol_namespace.py $$scheme || exit 1; \
|
python3.7 test/check_symbol_namespace.py $$scheme || exit 1; \
|
||||||
done
|
done
|
||||||
|
|
||||||
.PHONY: run-functest-all
|
.PHONY: run-functest-all
|
||||||
|
@ -16,8 +16,8 @@ SCHEMESHORT = SCHEME.split('/')[1].upper()
|
|||||||
namespace = f"PQCLEAN_{SCHEMESHORT}_".replace('-', '')
|
namespace = f"PQCLEAN_{SCHEMESHORT}_".replace('-', '')
|
||||||
|
|
||||||
# TODO can we do this using object files instead, to preserve file origin?
|
# TODO can we do this using object files instead, to preserve file origin?
|
||||||
sharedlib = f"bin/shared_{SCHEMEFULL}_clean.so"
|
sharedlib = "bin/shared_{}_clean.so".format(SCHEMEFULL)
|
||||||
subprocess.run(["make", sharedlib, f"SCHEME={SCHEME}"])
|
subprocess.run(["make", sharedlib, "SCHEME={}".format(SCHEME)])
|
||||||
p = subprocess.run(["nm", "-D", sharedlib], capture_output=True)
|
p = subprocess.run(["nm", "-D", sharedlib], capture_output=True)
|
||||||
|
|
||||||
symbols = p.stdout.decode('utf-8').strip().split("\n")
|
symbols = p.stdout.decode('utf-8').strip().split("\n")
|
||||||
@ -31,7 +31,7 @@ for symbolstr in symbols:
|
|||||||
|
|
||||||
if non_namespaced:
|
if non_namespaced:
|
||||||
print("! Not all symbols were properly namespaced.", file=sys.stderr)
|
print("! Not all symbols were properly namespaced.", file=sys.stderr)
|
||||||
print(f"! Missing namespace literal {namespace}", file=sys.stderr)
|
print("! Missing namespace literal {}".format(namespace), file=sys.stderr)
|
||||||
for symbol in non_namespaced:
|
for symbol in non_namespaced:
|
||||||
print(f"\t{symbol}", file=sys.stderr)
|
print("\t{}".format(symbol), file=sys.stderr)
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
@ -17,24 +17,26 @@ SCHEME = sys.argv[1]
|
|||||||
SCHEMEFULL = SCHEME.replace('/', '_') # e.g. crypto_kem_kyber768
|
SCHEMEFULL = SCHEME.replace('/', '_') # e.g. crypto_kem_kyber768
|
||||||
SCHEMESHORT = SCHEME.split('/')[1].upper()
|
SCHEMESHORT = SCHEME.split('/')[1].upper()
|
||||||
|
|
||||||
|
|
||||||
def get_hash(scheme):
|
def get_hash(scheme):
|
||||||
with open(f"{scheme}/META.yml", 'r') as stream:
|
with open("{}/META.yml".format(scheme), 'r') as stream:
|
||||||
meta = yaml.load(stream)
|
meta = yaml.load(stream)
|
||||||
return hex(meta['testvectors-sha3-256']).replace('0x', '')
|
return hex(meta['testvectors-sha3-256']).replace('0x', '')
|
||||||
|
|
||||||
|
|
||||||
expectedTestvectorsHash = get_hash(SCHEME)
|
expectedTestvectorsHash = get_hash(SCHEME)
|
||||||
|
|
||||||
subprocess.run(["make", "testvectors", f"SCHEME={SCHEME}"])
|
subprocess.run(["make", "testvectors", "SCHEME={}".format(SCHEME)])
|
||||||
implementations = [x for x in os.listdir('bin') if 'testvectors' in x and SCHEMEFULL in x]
|
implementations = [
|
||||||
|
x for x in os.listdir('bin') if 'testvectors' in x and SCHEMEFULL in x]
|
||||||
|
|
||||||
for impl in implementations:
|
for impl in implementations:
|
||||||
testvectors = subprocess.run([f"bin/{impl}"],stdout=subprocess.PIPE)
|
testvectors = subprocess.run(["bin/{}".format(impl)],
|
||||||
|
stdout=subprocess.PIPE)
|
||||||
testvectorsHash = hashlib.sha3_256(testvectors.stdout).hexdigest()
|
testvectorsHash = hashlib.sha3_256(testvectors.stdout).hexdigest()
|
||||||
if testvectorsHash.lower() != expectedTestvectorsHash.lower():
|
if testvectorsHash.lower() != expectedTestvectorsHash.lower():
|
||||||
print(f"testvectors of {SCHEME} should be {expectedTestvectorsHash}, but is {testvectorsHash}")
|
print("testvectors of {} should be {}, but is {}"
|
||||||
|
.format(SCHEME, expectedTestvectorsHash, testvectorsHash))
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
else:
|
else:
|
||||||
print(f"testvectors of {SCHEME} matched expected hash")
|
print("testvectors of {} matched expected hash".format(SCHEME))
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user