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: clang 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: 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 # 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 :