- version: 2.1
-
- .emulated_job: &defaultjob
- machine: true
- steps:
- - checkout
- - run: &checkouttask
- name: Pull submodules
- command: |
- git submodule init
- git submodule update
- git checkout $CIRCLECI_BRANCH
- git reset --hard $CIRCLECI_SHA1
- - run:
- name: Install the emulation handlers
- command: docker run --rm --privileged multiarch/qemu-user-static:register --reset
- - restore_cache:
- keys:
- - v1-ccache-{{ .Environment.CIRCLE_JOB }}
- - run:
- name: Run the tests in a container
- command: |
- docker run -e CI=true -e PQCLEAN_ONLY_TYPES -e PQCLEAN_ONLY_DIFF=1 -e PQCLEAN_SKIP_SCHEMES=sphincs-haraka-128f-robust,sphincs-haraka-192s-robust,sphincs-sha256-128f-robust,sphincs-sha256-192s-robust,sphincs-shake256-128f-robust,sphincs-shake256-192s-robust,sphincs-haraka-128f-simple,sphincs-haraka-192s-simple,sphincs-sha256-128f-simple,sphincs-sha256-192s-simple,sphincs-shake256-128f-simple,sphincs-shake256-192s-simple,sphincs-haraka-128s-robust,sphincs-haraka-256f-robust,sphincs-sha256-128s-robust,sphincs-sha256-256f-robust,sphincs-shake256-128s-robust,sphincs-shake256-256f-robust,sphincs-haraka-128s-simple,sphincs-haraka-256f-simple,sphincs-sha256-128s-simple,sphincs-sha256-256f-simple,sphincs-shake256-128s-simple,sphincs-shake256-256f-simple,sphincs-haraka-192f-robust,sphincs-haraka-256s-robust,sphincs-sha256-192f-robust,sphincs-sha256-256s-robust,sphincs-shake256-192f-robust,sphincs-shake256-256s-robust,sphincs-haraka-192f-simple,sphincs-haraka-256s-simple,sphincs-sha256-192f-simple,sphincs-sha256-256s-simple,sphincs-shake256-192f-simple,sphincs-shake256-256s-simple --rm -v `pwd`:`pwd` -w `pwd` -v ~/ccache:/ccache "pqclean/ci-container:$ARCH" /bin/bash -c "
- uname -a &&
- PQCLEAN_SKIP_TESTS=api_h,char,duplicate_consistency,metadata,preprocessor,no_symlinks,microsoft_nmakefile_present,makefile_present,format,license,clang_tidy
- export CCACHE_NOSTATS=1 &&
- export CCACHE_DIR=/ccache &&
- export CCACHE_SLOPPINESS=include_file_mtime &&
- export CC=\"ccache ${CC}\" &&
- pip3 install -r requirements.txt &&
- mkdir test-results &&
- cd test && python3 -m pytest --verbose --junitxml=test-results/pytest/results.xml --numprocesses=2"
- no_output_timeout: 2h
- - save_cache:
- key: v1-ccache-{{ .Environment.CIRCLE_JOB }}
- paths:
- - ~/ccache
- - store_test_results:
- path: test/test-results
-
- .native_job: &nativejob
- docker:
- - image: pqclean/ci-container:$ARCH
- steps:
- - checkout
- - run:
- <<: *checkouttask
- - restore_cache:
- keys:
- - v1-ccache-{{ .Environment.CIRCLE_JOB }}
- - run:
- name: Run tests
- command: |
- export CCACHE_NOSTATS=1
- export CCACHE_DIR=/ccache
- export CCACHE_SLOPPINESS=include_file_mtime
- export CC="ccache ${CC}"
- export PQCLEAN_ONLY_DIFF=1
- export PQCLEAN_SKIP_SCHEMES=sphincs-haraka-128f-robust,sphincs-haraka-192s-robust,sphincs-sha256-128f-robust,sphincs-sha256-192s-robust,sphincs-shake256-128f-robust,sphincs-shake256-192s-robust,sphincs-haraka-128f-simple,sphincs-haraka-192s-simple,sphincs-sha256-128f-simple,sphincs-sha256-192s-simple,sphincs-shake256-128f-simple,sphincs-shake256-192s-simple,sphincs-haraka-128s-robust,sphincs-haraka-256f-robust,sphincs-sha256-128s-robust,sphincs-sha256-256f-robust,sphincs-shake256-128s-robust,sphincs-shake256-256f-robust,sphincs-haraka-128s-simple,sphincs-haraka-256f-simple,sphincs-sha256-128s-simple,sphincs-sha256-256f-simple,sphincs-shake256-128s-simple,sphincs-shake256-256f-simple,sphincs-haraka-192f-robust,sphincs-haraka-256s-robust,sphincs-sha256-192f-robust,sphincs-sha256-256s-robust,sphincs-shake256-192f-robust,sphincs-shake256-256s-robust,sphincs-haraka-192f-simple,sphincs-haraka-256s-simple,sphincs-sha256-192f-simple,sphincs-sha256-256s-simple,sphincs-shake256-192f-simple,sphincs-shake256-256s-simple
- pip3 install -r requirements.txt
- mkdir test-results
- cd test
- python3 -m pytest --verbose --junitxml=test-results/pytest/results.xml --numprocesses=2
- no_output_timeout: 2h
- - store_test_results:
- path: test/test-results
- - store_artifacts:
- path: test/test-results
- - save_cache:
- key: v1-ccache-{{ .Environment.CIRCLE_JOB }}
- paths:
- - /ccache
-
- jobs:
- # First the KEM jobs
- arm32-gcc-kem:
- <<: *defaultjob
- environment:
- CC: gcc
- ARCH: armhf
- PQCLEAN_ONLY_TYPES: kem
- arm32-clang-kem:
- <<: *defaultjob
- environment:
- CC: clang
- ARCH: armhf
- PQCLEAN_ONLY_TYPES: kem
- ppc-clang-kem:
- <<: *defaultjob
- environment:
- CC: clang
- ARCH: unstable-ppc
- PQCLEAN_ONLY_TYPES: kem
- ppc-gcc-kem:
- <<: *defaultjob
- environment:
- CC: gcc
- ARCH: unstable-ppc
- PQCLEAN_ONLY_TYPES: kem
- amd64-gcc-kem:
- <<: *nativejob
- environment:
- CC: gcc
- ARCH: amd64
- PQCLEAN_ONLY_TYPES: kem
- amd64-clang-kem:
- <<: *nativejob
- environment:
- CC: clang
- ARCH: amd64
- PQCLEAN_ONLY_TYPES: kem
- amd64-clang-sanitizers-kem:
- <<: *nativejob
- environment:
- PQCLEAN_ONLY_TESTS: test_functest_sanitizers
- RUN_SLOW: 1
- CC: clang
- ARCH: amd64
- PQCLEAN_ONLY_TYPES: kem
- amd64-clang-sanitizers-sign:
- <<: *nativejob
- environment:
- PQCLEAN_ONLY_TESTS: test_functest_sanitizers
- RUN_SLOW: 1
- CC: clang
- ARCH: amd64
- PQCLEAN_ONLY_TYPES: sign
- i386-gcc-kem:
- <<: *nativejob
- environment:
- CC: gcc
- ARCH: i386
- PQCLEAN_ONLY_TYPES: kem
- i386-clang-kem:
- <<: *nativejob
- environment:
- CC: clang
- ARCH: i386
- PQCLEAN_ONLY_TYPES: kem
- # These are for the scheduled builds
- arm32-gcc-slow-kem:
- <<: *defaultjob
- environment:
- CC: gcc
- ARCH: armhf
- RUN_SLOW: 1
- PQCLEAN_ONLY_TYPES: kem
- arm32-clang-slow-kem:
- <<: *defaultjob
- environment:
- CC: clang
- ARCH: armhf
- RUN_SLOW: 1
- PQCLEAN_ONLY_TYPES: kem
- ppc-clang-slow-kem:
- <<: *defaultjob
- environment:
- CC: clang
- ARCH: unstable-ppc
- RUN_SLOW: 1
- PQCLEAN_ONLY_TYPES: kem
- ppc-gcc-slow-kem:
- <<: *defaultjob
- environment:
- CC: gcc
- ARCH: unstable-ppc
- RUN_SLOW: 1
- PQCLEAN_ONLY_TYPES: kem
- amd64-gcc-slow-kem:
- <<: *nativejob
- environment:
- CC: gcc
- ARCH: amd64
- RUN_SLOW: 1
- PQCLEAN_ONLY_TYPES: kem
- amd64-clang-slow-kem:
- <<: *nativejob
- environment:
- CC: clang
- ARCH: amd64
- RUN_SLOW: 1
- PQCLEAN_ONLY_TYPES: kem
- i386-gcc-slow-kem:
- <<: *nativejob
- environment:
- CC: gcc
- ARCH: i386
- RUN_SLOW: 1
- PQCLEAN_ONLY_TYPES: kem
- i386-clang-slow-kem:
- <<: *nativejob
- environment:
- CC: clang
- ARCH: i386
- RUN_SLOW: 1
- PQCLEAN_ONLY_TYPES: kem
- # the Sign jobs
- arm32-gcc-sign:
- <<: *defaultjob
- environment:
- CC: gcc
- ARCH: armhf
- PQCLEAN_ONLY_TYPES: sign
- arm32-clang-sign:
- <<: *defaultjob
- environment:
- CC: clang
- ARCH: armhf
- PQCLEAN_ONLY_TYPES: sign
- ppc-clang-sign:
- <<: *defaultjob
- environment:
- CC: clang
- ARCH: unstable-ppc
- PQCLEAN_ONLY_TYPES: sign
- ppc-gcc-sign:
- <<: *defaultjob
- environment:
- CC: gcc
- ARCH: unstable-ppc
- PQCLEAN_ONLY_TYPES: sign
- amd64-gcc-sign:
- <<: *nativejob
- environment:
- CC: gcc
- ARCH: amd64
- PQCLEAN_ONLY_TYPES: sign
- amd64-clang-sign:
- <<: *nativejob
- environment:
- CC: clang
- ARCH: amd64
- PQCLEAN_ONLY_TYPES: sign
- i386-gcc-sign:
- <<: *nativejob
- environment:
- CC: gcc
- ARCH: i386
- PQCLEAN_ONLY_TYPES: sign
- i386-clang-sign:
- <<: *nativejob
- environment:
- CC: clang
- ARCH: i386
- PQCLEAN_ONLY_TYPES: sign
- # These are for the scheduled builds
- arm32-gcc-slow-sign:
- <<: *defaultjob
- environment:
- CC: gcc
- ARCH: armhf
- RUN_SLOW: 1
- PQCLEAN_ONLY_TYPES: sign
- arm32-clang-slow-sign:
- <<: *defaultjob
- environment:
- CC: clang
- ARCH: armhf
- RUN_SLOW: 1
- PQCLEAN_ONLY_TYPES: sign
- ppc-clang-slow-sign:
- <<: *defaultjob
- environment:
- CC: clang
- ARCH: unstable-ppc
- RUN_SLOW: 1
- PQCLEAN_ONLY_TYPES: sign
- ppc-gcc-slow-sign:
- <<: *defaultjob
- environment:
- CC: gcc
- ARCH: unstable-ppc
- RUN_SLOW: 1
- PQCLEAN_ONLY_TYPES: sign
- amd64-gcc-slow-sign:
- <<: *nativejob
- environment:
- CC: gcc
- ARCH: amd64
- RUN_SLOW: 1
- PQCLEAN_ONLY_TYPES: sign
- amd64-clang-slow-sign:
- <<: *nativejob
- environment:
- CC: clang
- ARCH: amd64
- RUN_SLOW: 1
- PQCLEAN_ONLY_TYPES: sign
- i386-gcc-slow-sign:
- <<: *nativejob
- environment:
- CC: gcc
- ARCH: i386
- RUN_SLOW: 1
- PQCLEAN_ONLY_TYPES: sign
- i386-clang-slow-sign:
- <<: *nativejob
- environment:
- CC: clang
- ARCH: i386
- RUN_SLOW: 1
- PQCLEAN_ONLY_TYPES: sign
-
- workflows:
- version: 2
- build:
- jobs:
- # AMD64
- - amd64-gcc-kem
- - amd64-clang-kem
- - amd64-gcc-sign
- - amd64-clang-sign
- - amd64-clang-sanitizers-kem: &sanitizers
- requires:
- - amd64-gcc-kem
- - amd64-gcc-sign
- - amd64-clang-kem
- - amd64-clang-sign
- - amd64-clang-sanitizers-sign:
- <<: *sanitizers
- # i386
- - i386-gcc-kem: &i386
- requires:
- - amd64-gcc-kem
- - amd64-gcc-sign
- - amd64-clang-kem
- - amd64-clang-sign
- - i386-clang-kem:
- <<: *i386
- - i386-gcc-sign:
- <<: *i386
- - i386-clang-sign:
- <<: *i386
- # ARM 32 bit
- - arm32-gcc-kem: &arm32
- requires:
- - i386-gcc-kem
- - i386-gcc-sign
- - i386-clang-kem
- - i386-clang-sign
- - arm32-clang-kem:
- <<: *arm32
- - arm32-gcc-sign:
- <<: *arm32
- - arm32-clang-sign:
- <<: *arm32
- # PPC
- - ppc-gcc-kem: &ppc
- requires:
- - arm32-gcc-kem
- - arm32-clang-kem
- - arm32-gcc-sign
- - arm32-clang-sign
- - ppc-clang-kem:
- <<: *ppc
- - ppc-gcc-sign:
- <<: *ppc
- - ppc-clang-sign:
- <<: *ppc
- scheduled:
- triggers:
- - schedule:
- cron: "0 5 * * 6"
- filters:
- branches:
- only: master
- jobs:
- - amd64-clang-slow-kem
- - amd64-clang-slow-sign
- - amd64-gcc-slow-kem
- - amd64-gcc-slow-sign
- - arm32-clang-slow-kem
- - arm32-clang-slow-sign
- - arm32-gcc-slow-kem
- - arm32-gcc-slow-sign
- - i386-clang-slow-kem
- - i386-clang-slow-sign
- - i386-gcc-slow-kem
- - i386-gcc-slow-sign
- - ppc-clang-slow-kem
- - ppc-clang-slow-sign
- - ppc-gcc-slow-kem
- - ppc-gcc-slow-sign
-
- # vim: set ft=yaml ts=2 sw=2 tw=0 et :
-
- # vim: set ft=yaml ts=2 sw=2 tw=0 et :
|