mirror of
https://github.com/henrydcase/pqc.git
synced 2024-11-26 17:31:38 +00:00
e4e6ef930e
* Add ccache to speed up builds * Fix circleci config * fixup! Fix circleci config * Try again with environment variables * Set up ccache on MacOS
363 lines
10 KiB
YAML
363 lines
10 KiB
YAML
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 &&
|
|
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=auto"
|
|
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=auto
|
|
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: gcc
|
|
ARCH: amd64
|
|
PQCLEAN_ONLY_TYPES: kem
|
|
i386-gcc-kem:
|
|
<<: *nativejob
|
|
environment:
|
|
CC: gcc
|
|
ARCH: i386
|
|
PQCLEAN_ONLY_TYPES: kem
|
|
i386-clang-kem:
|
|
<<: *nativejob
|
|
environment:
|
|
CC: gcc
|
|
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: gcc
|
|
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: gcc
|
|
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: gcc
|
|
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: gcc
|
|
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: gcc
|
|
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: gcc
|
|
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
|
|
# 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 :
|