From 0c17340072a07469160d1605bb3da7105c62feec Mon Sep 17 00:00:00 2001 From: Hennadii Stepanov <32963518+hebasto@users.noreply.github.com> Date: Sat, 26 Aug 2023 09:43:45 +0100 Subject: [PATCH] WIP-00 --- .../install-homebrew-valgrind/action.yml | 24 + .github/workflows/ci.yml | 1500 +++++++++-------- 2 files changed, 777 insertions(+), 747 deletions(-) create mode 100644 .github/actions/install-homebrew-valgrind/action.yml diff --git a/.github/actions/install-homebrew-valgrind/action.yml b/.github/actions/install-homebrew-valgrind/action.yml new file mode 100644 index 0000000000..4a0f4e0bb1 --- /dev/null +++ b/.github/actions/install-homebrew-valgrind/action.yml @@ -0,0 +1,24 @@ +name: "Install Valgrind" +description: "Install Homebrew's Valgrind and cache it." +runs: + using: "composite" + steps: + - run: | + brew tap LouisBrunner/valgrind + brew fetch --HEAD LouisBrunner/valgrind/valgrind + shell: bash + + - run: | + brew --cache + ls -l "$(brew --cache)/valgrind--git" + shell: bash + + - run: | + brew tap LouisBrunner/valgrind + brew install --HEAD LouisBrunner/valgrind/valgrind + shell: bash + + - run: | + which valgrind + valgrind --version + shell: bash diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8e00a5a5c3..648795f503 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -42,595 +42,595 @@ env: EXAMPLES: 'yes' jobs: - docker_cache: - name: "Build Docker image" - runs-on: ubuntu-latest - steps: - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 - with: - # See: https://github.com/moby/buildkit/issues/3969. - driver-opts: | - network=host - - - name: Build container - uses: docker/build-push-action@v4 - with: - file: ./ci/linux-debian.Dockerfile - tags: linux-debian-image - cache-from: type=gha - cache-to: type=gha,mode=min - - linux_debian: - name: "x86_64: Linux (Debian stable)" - runs-on: ubuntu-latest - needs: docker_cache - - strategy: - fail-fast: false - matrix: - configuration: - - env_vars: { WIDEMUL: 'int64', RECOVERY: 'yes' } - - env_vars: { WIDEMUL: 'int64', ECDH: 'yes', SCHNORRSIG: 'yes', ELLSWIFT: 'yes' } - - env_vars: { WIDEMUL: 'int128' } - - env_vars: { WIDEMUL: 'int128_struct', ELLSWIFT: 'yes' } - - env_vars: { WIDEMUL: 'int128', RECOVERY: 'yes', SCHNORRSIG: 'yes', ELLSWIFT: 'yes' } - - env_vars: { WIDEMUL: 'int128', ECDH: 'yes', SCHNORRSIG: 'yes' } - - env_vars: { WIDEMUL: 'int128', ASM: 'x86_64', ELLSWIFT: 'yes' } - - env_vars: { RECOVERY: 'yes', SCHNORRSIG: 'yes' } - - env_vars: { CTIMETESTS: 'no', RECOVERY: 'yes', ECDH: 'yes', SCHNORRSIG: 'yes', CPPFLAGS: '-DVERIFY' } - - env_vars: { BUILD: 'distcheck', WITH_VALGRIND: 'no', CTIMETESTS: 'no', BENCH: 'no' } - - env_vars: { CPPFLAGS: '-DDETERMINISTIC' } - - env_vars: { CFLAGS: '-O0', CTIMETESTS: 'no' } - - env_vars: { CFLAGS: '-O1', RECOVERY: 'yes', ECDH: 'yes', SCHNORRSIG: 'yes', ELLSWIFT: 'yes' } - - env_vars: { ECMULTGENPRECISION: 2, ECMULTWINDOW: 2 } - - env_vars: { ECMULTGENPRECISION: 8, ECMULTWINDOW: 4 } - cc: - - 'gcc' - - 'clang' - - 'gcc-snapshot' - - 'clang-snapshot' - - env: - CC: ${{ matrix.cc }} - - steps: - - name: Checkout - uses: actions/checkout@v3 - - - name: CI script - env: ${{ matrix.configuration.env_vars }} - uses: ./.github/actions/run-in-docker-action - with: - dockerfile: ./ci/linux-debian.Dockerfile - tag: linux-debian-image - - - run: cat tests.log || true - if: ${{ always() }} - - run: cat noverify_tests.log || true - if: ${{ always() }} - - run: cat exhaustive_tests.log || true - if: ${{ always() }} - - run: cat ctime_tests.log || true - if: ${{ always() }} - - run: cat bench.log || true - if: ${{ always() }} - - run: cat config.log || true - if: ${{ always() }} - - run: cat test_env.log || true - if: ${{ always() }} - - name: CI env - run: env - if: ${{ always() }} - - i686_debian: - name: "i686: Linux (Debian stable)" - runs-on: ubuntu-latest - needs: docker_cache - - strategy: - fail-fast: false - matrix: - cc: - - 'i686-linux-gnu-gcc' - - 'clang --target=i686-pc-linux-gnu -isystem /usr/i686-linux-gnu/include' - - env: - HOST: 'i686-linux-gnu' - ECDH: 'yes' - RECOVERY: 'yes' - SCHNORRSIG: 'yes' - ELLSWIFT: 'yes' - CC: ${{ matrix.cc }} - - steps: - - name: Checkout - uses: actions/checkout@v3 - - - name: CI script - uses: ./.github/actions/run-in-docker-action - with: - dockerfile: ./ci/linux-debian.Dockerfile - tag: linux-debian-image - - - run: cat tests.log || true - if: ${{ always() }} - - run: cat noverify_tests.log || true - if: ${{ always() }} - - run: cat exhaustive_tests.log || true - if: ${{ always() }} - - run: cat ctime_tests.log || true - if: ${{ always() }} - - run: cat bench.log || true - if: ${{ always() }} - - run: cat config.log || true - if: ${{ always() }} - - run: cat test_env.log || true - if: ${{ always() }} - - name: CI env - run: env - if: ${{ always() }} - - s390x_debian: - name: "s390x (big-endian): Linux (Debian stable, QEMU)" - runs-on: ubuntu-latest - needs: docker_cache - - env: - WRAPPER_CMD: 'qemu-s390x' - SECP256K1_TEST_ITERS: 16 - HOST: 's390x-linux-gnu' - WITH_VALGRIND: 'no' - ECDH: 'yes' - RECOVERY: 'yes' - SCHNORRSIG: 'yes' - ELLSWIFT: 'yes' - CTIMETESTS: 'no' - - steps: - - name: Checkout - uses: actions/checkout@v3 - - - name: CI script - uses: ./.github/actions/run-in-docker-action - with: - dockerfile: ./ci/linux-debian.Dockerfile - tag: linux-debian-image - - - run: cat tests.log || true - if: ${{ always() }} - - run: cat noverify_tests.log || true - if: ${{ always() }} - - run: cat exhaustive_tests.log || true - if: ${{ always() }} - - run: cat ctime_tests.log || true - if: ${{ always() }} - - run: cat bench.log || true - if: ${{ always() }} - - run: cat config.log || true - if: ${{ always() }} - - run: cat test_env.log || true - if: ${{ always() }} - - name: CI env - run: env - if: ${{ always() }} - - arm32_debian: - name: "ARM32: Linux (Debian stable, QEMU)" - runs-on: ubuntu-latest - needs: docker_cache - - strategy: - fail-fast: false - matrix: - configuration: - - env_vars: {} - - env_vars: { EXPERIMENTAL: 'yes', ASM: 'arm32' } - - env: - WRAPPER_CMD: 'qemu-arm' - SECP256K1_TEST_ITERS: 16 - HOST: 'arm-linux-gnueabihf' - WITH_VALGRIND: 'no' - ECDH: 'yes' - RECOVERY: 'yes' - SCHNORRSIG: 'yes' - ELLSWIFT: 'yes' - CTIMETESTS: 'no' - - steps: - - name: Checkout - uses: actions/checkout@v3 - - - name: CI script - env: ${{ matrix.configuration.env_vars }} - uses: ./.github/actions/run-in-docker-action - with: - dockerfile: ./ci/linux-debian.Dockerfile - tag: linux-debian-image - - - run: cat tests.log || true - if: ${{ always() }} - - run: cat noverify_tests.log || true - if: ${{ always() }} - - run: cat exhaustive_tests.log || true - if: ${{ always() }} - - run: cat ctime_tests.log || true - if: ${{ always() }} - - run: cat bench.log || true - if: ${{ always() }} - - run: cat config.log || true - if: ${{ always() }} - - run: cat test_env.log || true - if: ${{ always() }} - - name: CI env - run: env - if: ${{ always() }} - - arm64_debian: - name: "ARM64: Linux (Debian stable, QEMU)" - runs-on: ubuntu-latest - needs: docker_cache - - env: - WRAPPER_CMD: 'qemu-aarch64' - SECP256K1_TEST_ITERS: 16 - HOST: 'aarch64-linux-gnu' - WITH_VALGRIND: 'no' - ECDH: 'yes' - RECOVERY: 'yes' - SCHNORRSIG: 'yes' - ELLSWIFT: 'yes' - CTIMETESTS: 'no' - - steps: - - name: Checkout - uses: actions/checkout@v3 - - - name: CI script - uses: ./.github/actions/run-in-docker-action - with: - dockerfile: ./ci/linux-debian.Dockerfile - tag: linux-debian-image - - - run: cat tests.log || true - if: ${{ always() }} - - run: cat noverify_tests.log || true - if: ${{ always() }} - - run: cat exhaustive_tests.log || true - if: ${{ always() }} - - run: cat ctime_tests.log || true - if: ${{ always() }} - - run: cat bench.log || true - if: ${{ always() }} - - run: cat config.log || true - if: ${{ always() }} - - run: cat test_env.log || true - if: ${{ always() }} - - name: CI env - run: env - if: ${{ always() }} - - ppc64le_debian: - name: "ppc64le: Linux (Debian stable, QEMU)" - runs-on: ubuntu-latest - needs: docker_cache - - env: - WRAPPER_CMD: 'qemu-ppc64le' - SECP256K1_TEST_ITERS: 16 - HOST: 'powerpc64le-linux-gnu' - WITH_VALGRIND: 'no' - ECDH: 'yes' - RECOVERY: 'yes' - SCHNORRSIG: 'yes' - ELLSWIFT: 'yes' - CTIMETESTS: 'no' - - steps: - - name: Checkout - uses: actions/checkout@v3 - - - name: CI script - uses: ./.github/actions/run-in-docker-action - with: - dockerfile: ./ci/linux-debian.Dockerfile - tag: linux-debian-image - - - run: cat tests.log || true - if: ${{ always() }} - - run: cat noverify_tests.log || true - if: ${{ always() }} - - run: cat exhaustive_tests.log || true - if: ${{ always() }} - - run: cat ctime_tests.log || true - if: ${{ always() }} - - run: cat bench.log || true - if: ${{ always() }} - - run: cat config.log || true - if: ${{ always() }} - - run: cat test_env.log || true - if: ${{ always() }} - - name: CI env - run: env - if: ${{ always() }} - - valgrind_debian: - name: "Valgrind (memcheck)" - runs-on: ubuntu-latest - needs: docker_cache - - strategy: - fail-fast: false - matrix: - configuration: - - env_vars: { CC: 'clang', ASM: 'auto' } - - env_vars: { CC: 'i686-linux-gnu-gcc', HOST: 'i686-linux-gnu', ASM: 'auto' } - - env_vars: { CC: 'clang', ASM: 'no', ECMULTGENPRECISION: 2, ECMULTWINDOW: 2 } - - env_vars: { CC: 'i686-linux-gnu-gcc', HOST: 'i686-linux-gnu', ASM: 'no', ECMULTGENPRECISION: 2, ECMULTWINDOW: 2 } - - env: - # The `--error-exitcode` is required to make the test fail if valgrind found errors, - # otherwise it will return 0 (https://www.valgrind.org/docs/manual/manual-core.html). - WRAPPER_CMD: 'valgrind --error-exitcode=42' - ECDH: 'yes' - RECOVERY: 'yes' - SCHNORRSIG: 'yes' - ELLSWIFT: 'yes' - CTIMETESTS: 'no' - SECP256K1_TEST_ITERS: 2 - - steps: - - name: Checkout - uses: actions/checkout@v3 - - - name: CI script - env: ${{ matrix.configuration.env_vars }} - uses: ./.github/actions/run-in-docker-action - with: - dockerfile: ./ci/linux-debian.Dockerfile - tag: linux-debian-image - - - run: cat tests.log || true - if: ${{ always() }} - - run: cat noverify_tests.log || true - if: ${{ always() }} - - run: cat exhaustive_tests.log || true - if: ${{ always() }} - - run: cat ctime_tests.log || true - if: ${{ always() }} - - run: cat bench.log || true - if: ${{ always() }} - - run: cat config.log || true - if: ${{ always() }} - - run: cat test_env.log || true - if: ${{ always() }} - - name: CI env - run: env - if: ${{ always() }} - - sanitizers_debian: - name: "UBSan, ASan, LSan" - runs-on: ubuntu-latest - needs: docker_cache - - strategy: - fail-fast: false - matrix: - configuration: - - env_vars: { CC: 'clang', ASM: 'auto' } - - env_vars: { CC: 'i686-linux-gnu-gcc', HOST: 'i686-linux-gnu', ASM: 'auto' } - - env_vars: { CC: 'clang', ASM: 'no', ECMULTGENPRECISION: 2, ECMULTWINDOW: 2 } - - env_vars: { CC: 'i686-linux-gnu-gcc', HOST: 'i686-linux-gnu', ASM: 'no', ECMULTGENPRECISION: 2, ECMULTWINDOW: 2 } - - env: - ECDH: 'yes' - RECOVERY: 'yes' - SCHNORRSIG: 'yes' - ELLSWIFT: 'yes' - CTIMETESTS: 'no' - CFLAGS: '-fsanitize=undefined,address -g' - UBSAN_OPTIONS: 'print_stacktrace=1:halt_on_error=1' - ASAN_OPTIONS: 'strict_string_checks=1:detect_stack_use_after_return=1:detect_leaks=1' - LSAN_OPTIONS: 'use_unaligned=1' - SECP256K1_TEST_ITERS: 32 - - steps: - - name: Checkout - uses: actions/checkout@v3 - - - name: CI script - env: ${{ matrix.configuration.env_vars }} - uses: ./.github/actions/run-in-docker-action - with: - dockerfile: ./ci/linux-debian.Dockerfile - tag: linux-debian-image - - - run: cat tests.log || true - if: ${{ always() }} - - run: cat noverify_tests.log || true - if: ${{ always() }} - - run: cat exhaustive_tests.log || true - if: ${{ always() }} - - run: cat ctime_tests.log || true - if: ${{ always() }} - - run: cat bench.log || true - if: ${{ always() }} - - run: cat config.log || true - if: ${{ always() }} - - run: cat test_env.log || true - if: ${{ always() }} - - name: CI env - run: env - if: ${{ always() }} - - msan_debian: - name: "MSan" - runs-on: ubuntu-latest - needs: docker_cache - - strategy: - fail-fast: false - matrix: - configuration: - - env_vars: - CFLAGS: '-fsanitize=memory -g' - - env_vars: - ECMULTGENPRECISION: 2 - ECMULTWINDOW: 2 - CFLAGS: '-fsanitize=memory -g -O3' - - env: - ECDH: 'yes' - RECOVERY: 'yes' - SCHNORRSIG: 'yes' - ELLSWIFT: 'yes' - CTIMETESTS: 'yes' - CC: 'clang' - SECP256K1_TEST_ITERS: 32 - ASM: 'no' - WITH_VALGRIND: 'no' - - steps: - - name: Checkout - uses: actions/checkout@v3 - - - name: CI script - env: ${{ matrix.configuration.env_vars }} - uses: ./.github/actions/run-in-docker-action - with: - dockerfile: ./ci/linux-debian.Dockerfile - tag: linux-debian-image - - - run: cat tests.log || true - if: ${{ always() }} - - run: cat noverify_tests.log || true - if: ${{ always() }} - - run: cat exhaustive_tests.log || true - if: ${{ always() }} - - run: cat ctime_tests.log || true - if: ${{ always() }} - - run: cat bench.log || true - if: ${{ always() }} - - run: cat config.log || true - if: ${{ always() }} - - run: cat test_env.log || true - if: ${{ always() }} - - name: CI env - run: env - if: ${{ always() }} - - mingw_debian: - name: ${{ matrix.configuration.job_name }} - runs-on: ubuntu-latest - needs: docker_cache - - env: - WRAPPER_CMD: 'wine' - WITH_VALGRIND: 'no' - ECDH: 'yes' - RECOVERY: 'yes' - SCHNORRSIG: 'yes' - ELLSWIFT: 'yes' - CTIMETESTS: 'no' - - strategy: - fail-fast: false - matrix: - configuration: - - job_name: 'x86_64 (mingw32-w64): Windows (Debian stable, Wine)' - env_vars: - HOST: 'x86_64-w64-mingw32' - - job_name: 'i686 (mingw32-w64): Windows (Debian stable, Wine)' - env_vars: - HOST: 'i686-w64-mingw32' - - steps: - - name: Checkout - uses: actions/checkout@v3 - - - name: CI script - env: ${{ matrix.configuration.env_vars }} - uses: ./.github/actions/run-in-docker-action - with: - dockerfile: ./ci/linux-debian.Dockerfile - tag: linux-debian-image - - - run: cat tests.log || true - if: ${{ always() }} - - run: cat noverify_tests.log || true - if: ${{ always() }} - - run: cat exhaustive_tests.log || true - if: ${{ always() }} - - run: cat ctime_tests.log || true - if: ${{ always() }} - - run: cat bench.log || true - if: ${{ always() }} - - run: cat config.log || true - if: ${{ always() }} - - run: cat test_env.log || true - if: ${{ always() }} - - name: CI env - run: env - if: ${{ always() }} - - macos-ventura: - name: "x86_64: macOS Ventura" - # See: https://github.com/actions/runner-images#available-images. - runs-on: macos-13 # Use M1 once available https://github.com/github/roadmap/issues/528 - - env: - ASM: 'no' - WITH_VALGRIND: 'no' - CTIMETESTS: 'no' - CC: 'clang' - - strategy: - fail-fast: false - matrix: - env_vars: - - { WIDEMUL: 'int64', RECOVERY: 'yes', ECDH: 'yes', SCHNORRSIG: 'yes', ELLSWIFT: 'yes' } - - { WIDEMUL: 'int64', RECOVERY: 'yes', ECDH: 'yes', SCHNORRSIG: 'yes', ELLSWIFT: 'yes', CC: 'gcc' } - - { WIDEMUL: 'int128_struct', ECMULTGENPRECISION: 2, ECMULTWINDOW: 4 } - - { WIDEMUL: 'int128', ECDH: 'yes', SCHNORRSIG: 'yes', ELLSWIFT: 'yes' } - - { WIDEMUL: 'int128', RECOVERY: 'yes', SCHNORRSIG: 'yes' } - - { WIDEMUL: 'int128', RECOVERY: 'yes', ECDH: 'yes', SCHNORRSIG: 'yes', ELLSWIFT: 'yes', CC: 'gcc' } - - { WIDEMUL: 'int128', RECOVERY: 'yes', ECDH: 'yes', SCHNORRSIG: 'yes', ELLSWIFT: 'yes', CPPFLAGS: '-DVERIFY' } - - BUILD: 'distcheck' - - steps: - - name: Checkout - uses: actions/checkout@v3 - - - name: Install Homebrew packages - env: - HOMEBREW_NO_AUTO_UPDATE: 1 - HOMEBREW_NO_INSTALL_CLEANUP: 1 - run: | - brew install automake libtool gcc - ln -s $(brew --prefix gcc)/bin/gcc-?? /usr/local/bin/gcc - - - name: CI script - env: ${{ matrix.env_vars }} - run: ./ci/ci.sh - - - run: cat tests.log || true - if: ${{ always() }} - - run: cat noverify_tests.log || true - if: ${{ always() }} - - run: cat exhaustive_tests.log || true - if: ${{ always() }} - - run: cat ctime_tests.log || true - if: ${{ always() }} - - run: cat bench.log || true - if: ${{ always() }} - - run: cat config.log || true - if: ${{ always() }} - - run: cat test_env.log || true - if: ${{ always() }} - - name: CI env - run: env - if: ${{ always() }} +# docker_cache: +# name: "Build Docker image" +# runs-on: ubuntu-latest +# steps: +# - name: Set up Docker Buildx +# uses: docker/setup-buildx-action@v2 +# with: +# # See: https://github.com/moby/buildkit/issues/3969. +# driver-opts: | +# network=host + +# - name: Build container +# uses: docker/build-push-action@v4 +# with: +# file: ./ci/linux-debian.Dockerfile +# tags: linux-debian-image +# cache-from: type=gha +# cache-to: type=gha,mode=min + +# linux_debian: +# name: "x86_64: Linux (Debian stable)" +# runs-on: ubuntu-latest +# needs: docker_cache + +# strategy: +# fail-fast: false +# matrix: +# configuration: +# - env_vars: { WIDEMUL: 'int64', RECOVERY: 'yes' } +# - env_vars: { WIDEMUL: 'int64', ECDH: 'yes', SCHNORRSIG: 'yes', ELLSWIFT: 'yes' } +# - env_vars: { WIDEMUL: 'int128' } +# - env_vars: { WIDEMUL: 'int128_struct', ELLSWIFT: 'yes' } +# - env_vars: { WIDEMUL: 'int128', RECOVERY: 'yes', SCHNORRSIG: 'yes', ELLSWIFT: 'yes' } +# - env_vars: { WIDEMUL: 'int128', ECDH: 'yes', SCHNORRSIG: 'yes' } +# - env_vars: { WIDEMUL: 'int128', ASM: 'x86_64', ELLSWIFT: 'yes' } +# - env_vars: { RECOVERY: 'yes', SCHNORRSIG: 'yes' } +# - env_vars: { CTIMETESTS: 'no', RECOVERY: 'yes', ECDH: 'yes', SCHNORRSIG: 'yes', CPPFLAGS: '-DVERIFY' } +# - env_vars: { BUILD: 'distcheck', WITH_VALGRIND: 'no', CTIMETESTS: 'no', BENCH: 'no' } +# - env_vars: { CPPFLAGS: '-DDETERMINISTIC' } +# - env_vars: { CFLAGS: '-O0', CTIMETESTS: 'no' } +# - env_vars: { CFLAGS: '-O1', RECOVERY: 'yes', ECDH: 'yes', SCHNORRSIG: 'yes', ELLSWIFT: 'yes' } +# - env_vars: { ECMULTGENPRECISION: 2, ECMULTWINDOW: 2 } +# - env_vars: { ECMULTGENPRECISION: 8, ECMULTWINDOW: 4 } +# cc: +# - 'gcc' +# - 'clang' +# - 'gcc-snapshot' +# - 'clang-snapshot' + +# env: +# CC: ${{ matrix.cc }} + +# steps: +# - name: Checkout +# uses: actions/checkout@v3 + +# - name: CI script +# env: ${{ matrix.configuration.env_vars }} +# uses: ./.github/actions/run-in-docker-action +# with: +# dockerfile: ./ci/linux-debian.Dockerfile +# tag: linux-debian-image + +# - run: cat tests.log || true +# if: ${{ always() }} +# - run: cat noverify_tests.log || true +# if: ${{ always() }} +# - run: cat exhaustive_tests.log || true +# if: ${{ always() }} +# - run: cat ctime_tests.log || true +# if: ${{ always() }} +# - run: cat bench.log || true +# if: ${{ always() }} +# - run: cat config.log || true +# if: ${{ always() }} +# - run: cat test_env.log || true +# if: ${{ always() }} +# - name: CI env +# run: env +# if: ${{ always() }} + +# i686_debian: +# name: "i686: Linux (Debian stable)" +# runs-on: ubuntu-latest +# needs: docker_cache + +# strategy: +# fail-fast: false +# matrix: +# cc: +# - 'i686-linux-gnu-gcc' +# - 'clang --target=i686-pc-linux-gnu -isystem /usr/i686-linux-gnu/include' + +# env: +# HOST: 'i686-linux-gnu' +# ECDH: 'yes' +# RECOVERY: 'yes' +# SCHNORRSIG: 'yes' +# ELLSWIFT: 'yes' +# CC: ${{ matrix.cc }} + +# steps: +# - name: Checkout +# uses: actions/checkout@v3 + +# - name: CI script +# uses: ./.github/actions/run-in-docker-action +# with: +# dockerfile: ./ci/linux-debian.Dockerfile +# tag: linux-debian-image + +# - run: cat tests.log || true +# if: ${{ always() }} +# - run: cat noverify_tests.log || true +# if: ${{ always() }} +# - run: cat exhaustive_tests.log || true +# if: ${{ always() }} +# - run: cat ctime_tests.log || true +# if: ${{ always() }} +# - run: cat bench.log || true +# if: ${{ always() }} +# - run: cat config.log || true +# if: ${{ always() }} +# - run: cat test_env.log || true +# if: ${{ always() }} +# - name: CI env +# run: env +# if: ${{ always() }} + +# s390x_debian: +# name: "s390x (big-endian): Linux (Debian stable, QEMU)" +# runs-on: ubuntu-latest +# needs: docker_cache + +# env: +# WRAPPER_CMD: 'qemu-s390x' +# SECP256K1_TEST_ITERS: 16 +# HOST: 's390x-linux-gnu' +# WITH_VALGRIND: 'no' +# ECDH: 'yes' +# RECOVERY: 'yes' +# SCHNORRSIG: 'yes' +# ELLSWIFT: 'yes' +# CTIMETESTS: 'no' + +# steps: +# - name: Checkout +# uses: actions/checkout@v3 + +# - name: CI script +# uses: ./.github/actions/run-in-docker-action +# with: +# dockerfile: ./ci/linux-debian.Dockerfile +# tag: linux-debian-image + +# - run: cat tests.log || true +# if: ${{ always() }} +# - run: cat noverify_tests.log || true +# if: ${{ always() }} +# - run: cat exhaustive_tests.log || true +# if: ${{ always() }} +# - run: cat ctime_tests.log || true +# if: ${{ always() }} +# - run: cat bench.log || true +# if: ${{ always() }} +# - run: cat config.log || true +# if: ${{ always() }} +# - run: cat test_env.log || true +# if: ${{ always() }} +# - name: CI env +# run: env +# if: ${{ always() }} + +# arm32_debian: +# name: "ARM32: Linux (Debian stable, QEMU)" +# runs-on: ubuntu-latest +# needs: docker_cache + +# strategy: +# fail-fast: false +# matrix: +# configuration: +# - env_vars: {} +# - env_vars: { EXPERIMENTAL: 'yes', ASM: 'arm32' } + +# env: +# WRAPPER_CMD: 'qemu-arm' +# SECP256K1_TEST_ITERS: 16 +# HOST: 'arm-linux-gnueabihf' +# WITH_VALGRIND: 'no' +# ECDH: 'yes' +# RECOVERY: 'yes' +# SCHNORRSIG: 'yes' +# ELLSWIFT: 'yes' +# CTIMETESTS: 'no' + +# steps: +# - name: Checkout +# uses: actions/checkout@v3 + +# - name: CI script +# env: ${{ matrix.configuration.env_vars }} +# uses: ./.github/actions/run-in-docker-action +# with: +# dockerfile: ./ci/linux-debian.Dockerfile +# tag: linux-debian-image + +# - run: cat tests.log || true +# if: ${{ always() }} +# - run: cat noverify_tests.log || true +# if: ${{ always() }} +# - run: cat exhaustive_tests.log || true +# if: ${{ always() }} +# - run: cat ctime_tests.log || true +# if: ${{ always() }} +# - run: cat bench.log || true +# if: ${{ always() }} +# - run: cat config.log || true +# if: ${{ always() }} +# - run: cat test_env.log || true +# if: ${{ always() }} +# - name: CI env +# run: env +# if: ${{ always() }} + +# arm64_debian: +# name: "ARM64: Linux (Debian stable, QEMU)" +# runs-on: ubuntu-latest +# needs: docker_cache + +# env: +# WRAPPER_CMD: 'qemu-aarch64' +# SECP256K1_TEST_ITERS: 16 +# HOST: 'aarch64-linux-gnu' +# WITH_VALGRIND: 'no' +# ECDH: 'yes' +# RECOVERY: 'yes' +# SCHNORRSIG: 'yes' +# ELLSWIFT: 'yes' +# CTIMETESTS: 'no' + +# steps: +# - name: Checkout +# uses: actions/checkout@v3 + +# - name: CI script +# uses: ./.github/actions/run-in-docker-action +# with: +# dockerfile: ./ci/linux-debian.Dockerfile +# tag: linux-debian-image + +# - run: cat tests.log || true +# if: ${{ always() }} +# - run: cat noverify_tests.log || true +# if: ${{ always() }} +# - run: cat exhaustive_tests.log || true +# if: ${{ always() }} +# - run: cat ctime_tests.log || true +# if: ${{ always() }} +# - run: cat bench.log || true +# if: ${{ always() }} +# - run: cat config.log || true +# if: ${{ always() }} +# - run: cat test_env.log || true +# if: ${{ always() }} +# - name: CI env +# run: env +# if: ${{ always() }} + +# ppc64le_debian: +# name: "ppc64le: Linux (Debian stable, QEMU)" +# runs-on: ubuntu-latest +# needs: docker_cache + +# env: +# WRAPPER_CMD: 'qemu-ppc64le' +# SECP256K1_TEST_ITERS: 16 +# HOST: 'powerpc64le-linux-gnu' +# WITH_VALGRIND: 'no' +# ECDH: 'yes' +# RECOVERY: 'yes' +# SCHNORRSIG: 'yes' +# ELLSWIFT: 'yes' +# CTIMETESTS: 'no' + +# steps: +# - name: Checkout +# uses: actions/checkout@v3 + +# - name: CI script +# uses: ./.github/actions/run-in-docker-action +# with: +# dockerfile: ./ci/linux-debian.Dockerfile +# tag: linux-debian-image + +# - run: cat tests.log || true +# if: ${{ always() }} +# - run: cat noverify_tests.log || true +# if: ${{ always() }} +# - run: cat exhaustive_tests.log || true +# if: ${{ always() }} +# - run: cat ctime_tests.log || true +# if: ${{ always() }} +# - run: cat bench.log || true +# if: ${{ always() }} +# - run: cat config.log || true +# if: ${{ always() }} +# - run: cat test_env.log || true +# if: ${{ always() }} +# - name: CI env +# run: env +# if: ${{ always() }} + +# valgrind_debian: +# name: "Valgrind (memcheck)" +# runs-on: ubuntu-latest +# needs: docker_cache + +# strategy: +# fail-fast: false +# matrix: +# configuration: +# - env_vars: { CC: 'clang', ASM: 'auto' } +# - env_vars: { CC: 'i686-linux-gnu-gcc', HOST: 'i686-linux-gnu', ASM: 'auto' } +# - env_vars: { CC: 'clang', ASM: 'no', ECMULTGENPRECISION: 2, ECMULTWINDOW: 2 } +# - env_vars: { CC: 'i686-linux-gnu-gcc', HOST: 'i686-linux-gnu', ASM: 'no', ECMULTGENPRECISION: 2, ECMULTWINDOW: 2 } + +# env: +# # The `--error-exitcode` is required to make the test fail if valgrind found errors, +# # otherwise it will return 0 (https://www.valgrind.org/docs/manual/manual-core.html). +# WRAPPER_CMD: 'valgrind --error-exitcode=42' +# ECDH: 'yes' +# RECOVERY: 'yes' +# SCHNORRSIG: 'yes' +# ELLSWIFT: 'yes' +# CTIMETESTS: 'no' +# SECP256K1_TEST_ITERS: 2 + +# steps: +# - name: Checkout +# uses: actions/checkout@v3 + +# - name: CI script +# env: ${{ matrix.configuration.env_vars }} +# uses: ./.github/actions/run-in-docker-action +# with: +# dockerfile: ./ci/linux-debian.Dockerfile +# tag: linux-debian-image + +# - run: cat tests.log || true +# if: ${{ always() }} +# - run: cat noverify_tests.log || true +# if: ${{ always() }} +# - run: cat exhaustive_tests.log || true +# if: ${{ always() }} +# - run: cat ctime_tests.log || true +# if: ${{ always() }} +# - run: cat bench.log || true +# if: ${{ always() }} +# - run: cat config.log || true +# if: ${{ always() }} +# - run: cat test_env.log || true +# if: ${{ always() }} +# - name: CI env +# run: env +# if: ${{ always() }} + +# sanitizers_debian: +# name: "UBSan, ASan, LSan" +# runs-on: ubuntu-latest +# needs: docker_cache + +# strategy: +# fail-fast: false +# matrix: +# configuration: +# - env_vars: { CC: 'clang', ASM: 'auto' } +# - env_vars: { CC: 'i686-linux-gnu-gcc', HOST: 'i686-linux-gnu', ASM: 'auto' } +# - env_vars: { CC: 'clang', ASM: 'no', ECMULTGENPRECISION: 2, ECMULTWINDOW: 2 } +# - env_vars: { CC: 'i686-linux-gnu-gcc', HOST: 'i686-linux-gnu', ASM: 'no', ECMULTGENPRECISION: 2, ECMULTWINDOW: 2 } + +# env: +# ECDH: 'yes' +# RECOVERY: 'yes' +# SCHNORRSIG: 'yes' +# ELLSWIFT: 'yes' +# CTIMETESTS: 'no' +# CFLAGS: '-fsanitize=undefined,address -g' +# UBSAN_OPTIONS: 'print_stacktrace=1:halt_on_error=1' +# ASAN_OPTIONS: 'strict_string_checks=1:detect_stack_use_after_return=1:detect_leaks=1' +# LSAN_OPTIONS: 'use_unaligned=1' +# SECP256K1_TEST_ITERS: 32 + +# steps: +# - name: Checkout +# uses: actions/checkout@v3 + +# - name: CI script +# env: ${{ matrix.configuration.env_vars }} +# uses: ./.github/actions/run-in-docker-action +# with: +# dockerfile: ./ci/linux-debian.Dockerfile +# tag: linux-debian-image + +# - run: cat tests.log || true +# if: ${{ always() }} +# - run: cat noverify_tests.log || true +# if: ${{ always() }} +# - run: cat exhaustive_tests.log || true +# if: ${{ always() }} +# - run: cat ctime_tests.log || true +# if: ${{ always() }} +# - run: cat bench.log || true +# if: ${{ always() }} +# - run: cat config.log || true +# if: ${{ always() }} +# - run: cat test_env.log || true +# if: ${{ always() }} +# - name: CI env +# run: env +# if: ${{ always() }} + +# msan_debian: +# name: "MSan" +# runs-on: ubuntu-latest +# needs: docker_cache + +# strategy: +# fail-fast: false +# matrix: +# configuration: +# - env_vars: +# CFLAGS: '-fsanitize=memory -g' +# - env_vars: +# ECMULTGENPRECISION: 2 +# ECMULTWINDOW: 2 +# CFLAGS: '-fsanitize=memory -g -O3' + +# env: +# ECDH: 'yes' +# RECOVERY: 'yes' +# SCHNORRSIG: 'yes' +# ELLSWIFT: 'yes' +# CTIMETESTS: 'yes' +# CC: 'clang' +# SECP256K1_TEST_ITERS: 32 +# ASM: 'no' +# WITH_VALGRIND: 'no' + +# steps: +# - name: Checkout +# uses: actions/checkout@v3 + +# - name: CI script +# env: ${{ matrix.configuration.env_vars }} +# uses: ./.github/actions/run-in-docker-action +# with: +# dockerfile: ./ci/linux-debian.Dockerfile +# tag: linux-debian-image + +# - run: cat tests.log || true +# if: ${{ always() }} +# - run: cat noverify_tests.log || true +# if: ${{ always() }} +# - run: cat exhaustive_tests.log || true +# if: ${{ always() }} +# - run: cat ctime_tests.log || true +# if: ${{ always() }} +# - run: cat bench.log || true +# if: ${{ always() }} +# - run: cat config.log || true +# if: ${{ always() }} +# - run: cat test_env.log || true +# if: ${{ always() }} +# - name: CI env +# run: env +# if: ${{ always() }} + +# mingw_debian: +# name: ${{ matrix.configuration.job_name }} +# runs-on: ubuntu-latest +# needs: docker_cache + +# env: +# WRAPPER_CMD: 'wine' +# WITH_VALGRIND: 'no' +# ECDH: 'yes' +# RECOVERY: 'yes' +# SCHNORRSIG: 'yes' +# ELLSWIFT: 'yes' +# CTIMETESTS: 'no' + +# strategy: +# fail-fast: false +# matrix: +# configuration: +# - job_name: 'x86_64 (mingw32-w64): Windows (Debian stable, Wine)' +# env_vars: +# HOST: 'x86_64-w64-mingw32' +# - job_name: 'i686 (mingw32-w64): Windows (Debian stable, Wine)' +# env_vars: +# HOST: 'i686-w64-mingw32' + +# steps: +# - name: Checkout +# uses: actions/checkout@v3 + +# - name: CI script +# env: ${{ matrix.configuration.env_vars }} +# uses: ./.github/actions/run-in-docker-action +# with: +# dockerfile: ./ci/linux-debian.Dockerfile +# tag: linux-debian-image + +# - run: cat tests.log || true +# if: ${{ always() }} +# - run: cat noverify_tests.log || true +# if: ${{ always() }} +# - run: cat exhaustive_tests.log || true +# if: ${{ always() }} +# - run: cat ctime_tests.log || true +# if: ${{ always() }} +# - run: cat bench.log || true +# if: ${{ always() }} +# - run: cat config.log || true +# if: ${{ always() }} +# - run: cat test_env.log || true +# if: ${{ always() }} +# - name: CI env +# run: env +# if: ${{ always() }} + +# macos-ventura: +# name: "x86_64: macOS Ventura" +# # See: https://github.com/actions/runner-images#available-images. +# runs-on: macos-13 # Use M1 once available https://github.com/github/roadmap/issues/528 + +# env: +# ASM: 'no' +# WITH_VALGRIND: 'no' +# CTIMETESTS: 'no' +# CC: 'clang' + +# strategy: +# fail-fast: false +# matrix: +# env_vars: +# - { WIDEMUL: 'int64', RECOVERY: 'yes', ECDH: 'yes', SCHNORRSIG: 'yes', ELLSWIFT: 'yes' } +# - { WIDEMUL: 'int64', RECOVERY: 'yes', ECDH: 'yes', SCHNORRSIG: 'yes', ELLSWIFT: 'yes', CC: 'gcc' } +# - { WIDEMUL: 'int128_struct', ECMULTGENPRECISION: 2, ECMULTWINDOW: 4 } +# - { WIDEMUL: 'int128', ECDH: 'yes', SCHNORRSIG: 'yes', ELLSWIFT: 'yes' } +# - { WIDEMUL: 'int128', RECOVERY: 'yes', SCHNORRSIG: 'yes' } +# - { WIDEMUL: 'int128', RECOVERY: 'yes', ECDH: 'yes', SCHNORRSIG: 'yes', ELLSWIFT: 'yes', CC: 'gcc' } +# - { WIDEMUL: 'int128', RECOVERY: 'yes', ECDH: 'yes', SCHNORRSIG: 'yes', ELLSWIFT: 'yes', CPPFLAGS: '-DVERIFY' } +# - BUILD: 'distcheck' + +# steps: +# - name: Checkout +# uses: actions/checkout@v3 + +# - name: Install Homebrew packages +# env: +# HOMEBREW_NO_AUTO_UPDATE: 1 +# HOMEBREW_NO_INSTALL_CLEANUP: 1 +# run: | +# brew install automake libtool gcc +# ln -s $(brew --prefix gcc)/bin/gcc-?? /usr/local/bin/gcc + +# - name: CI script +# env: ${{ matrix.env_vars }} +# run: ./ci/ci.sh + +# - run: cat tests.log || true +# if: ${{ always() }} +# - run: cat noverify_tests.log || true +# if: ${{ always() }} +# - run: cat exhaustive_tests.log || true +# if: ${{ always() }} +# - run: cat ctime_tests.log || true +# if: ${{ always() }} +# - run: cat bench.log || true +# if: ${{ always() }} +# - run: cat config.log || true +# if: ${{ always() }} +# - run: cat test_env.log || true +# if: ${{ always() }} +# - name: CI env +# run: env +# if: ${{ always() }} macos-monterey: name: "x86_64: macOS Monterey" @@ -665,161 +665,167 @@ jobs: brew tap LouisBrunner/valgrind brew install --HEAD LouisBrunner/valgrind/valgrind - - name: CI script - env: ${{ matrix.env_vars }} - run: ./ci/ci.sh - - - run: cat tests.log || true - if: ${{ always() }} - - run: cat noverify_tests.log || true - if: ${{ always() }} - - run: cat exhaustive_tests.log || true - if: ${{ always() }} - - run: cat ctime_tests.log || true - if: ${{ always() }} - - run: cat bench.log || true - if: ${{ always() }} - - run: cat config.log || true - if: ${{ always() }} - - run: cat test_env.log || true - if: ${{ always() }} - - name: CI env - run: env - if: ${{ always() }} - - win64-native: - name: ${{ matrix.configuration.job_name }} - # See: https://github.com/actions/runner-images#available-images. - runs-on: windows-2022 - - strategy: - fail-fast: false - matrix: - configuration: - - job_name: 'x64 (MSVC): Windows (VS 2022, shared)' - cmake_options: '-A x64 -DBUILD_SHARED_LIBS=ON' - - job_name: 'x64 (MSVC): Windows (VS 2022, static)' - cmake_options: '-A x64 -DBUILD_SHARED_LIBS=OFF' - - job_name: 'x64 (MSVC): Windows (VS 2022, int128_struct)' - cmake_options: '-A x64 -DSECP256K1_TEST_OVERRIDE_WIDE_MULTIPLY=int128_struct' - - job_name: 'x64 (MSVC): Windows (VS 2022, int128_struct with __(u)mulh)' - cmake_options: '-A x64 -DSECP256K1_TEST_OVERRIDE_WIDE_MULTIPLY=int128_struct' - cpp_flags: '/DSECP256K1_MSVC_MULH_TEST_OVERRIDE' - - job_name: 'x86 (MSVC): Windows (VS 2022)' - cmake_options: '-A Win32' - - steps: - - name: Checkout - uses: actions/checkout@v3 - - - name: Generate buildsystem - run: cmake -E env CFLAGS="/WX ${{ matrix.configuration.cpp_flags }}" cmake -B build -DSECP256K1_ENABLE_MODULE_RECOVERY=ON -DSECP256K1_BUILD_EXAMPLES=ON ${{ matrix.configuration.cmake_options }} - - - name: Build - run: cmake --build build --config RelWithDebInfo -- /p:UseMultiToolTask=true /maxCpuCount - - - name: Binaries info - # Use the bash shell included with Git for Windows. - shell: bash - run: | - cd build/src/RelWithDebInfo && file *tests.exe bench*.exe libsecp256k1-*.dll || true - - - name: Check - run: | - ctest -C RelWithDebInfo --test-dir build -j ([int]$env:NUMBER_OF_PROCESSORS + 1) - build\src\RelWithDebInfo\bench_ecmult.exe - build\src\RelWithDebInfo\bench_internal.exe - build\src\RelWithDebInfo\bench.exe - - win64-native-headers: - name: "x64 (MSVC): C++ (public headers)" - # See: https://github.com/actions/runner-images#available-images. - runs-on: windows-2022 - - steps: - - name: Checkout - uses: actions/checkout@v3 - - - name: Add cl.exe to PATH - uses: ilammy/msvc-dev-cmd@v1 - - - name: C++ (public headers) - run: | - cl.exe -c -WX -TP include/*.h - - cxx_fpermissive_debian: - name: "C++ -fpermissive (entire project)" - runs-on: ubuntu-latest - needs: docker_cache - - env: - CC: 'g++' - CFLAGS: '-fpermissive -g' - CPPFLAGS: '-DSECP256K1_CPLUSPLUS_TEST_OVERRIDE' - WERROR_CFLAGS: - ECDH: 'yes' - RECOVERY: 'yes' - SCHNORRSIG: 'yes' - ELLSWIFT: 'yes' - - steps: - - name: Checkout - uses: actions/checkout@v3 - - - name: CI script - uses: ./.github/actions/run-in-docker-action - with: - dockerfile: ./ci/linux-debian.Dockerfile - tag: linux-debian-image - - - run: cat tests.log || true - if: ${{ always() }} - - run: cat noverify_tests.log || true - if: ${{ always() }} - - run: cat exhaustive_tests.log || true - if: ${{ always() }} - - run: cat ctime_tests.log || true - if: ${{ always() }} - - run: cat bench.log || true - if: ${{ always() }} - - run: cat config.log || true - if: ${{ always() }} - - run: cat test_env.log || true - if: ${{ always() }} - - name: CI env - run: env - if: ${{ always() }} - - cxx_headers_debian: - name: "C++ (public headers)" - runs-on: ubuntu-latest - needs: docker_cache - - steps: - - name: Checkout - uses: actions/checkout@v3 - - - name: CI script - uses: ./.github/actions/run-in-docker-action - with: - dockerfile: ./ci/linux-debian.Dockerfile - tag: linux-debian-image - command: | - g++ -Werror include/*.h - clang -Werror -x c++-header include/*.h - - sage: - name: "SageMath prover" - runs-on: ubuntu-latest - container: - image: sagemath/sagemath:latest - options: --user root - - steps: - - name: Checkout - uses: actions/checkout@v3 - - - name: CI script - run: | - cd sage - sage prove_group_implementations.sage + - name: Install and cache Valgrind + env: + HOMEBREW_NO_AUTO_UPDATE: 1 + HOMEBREW_NO_INSTALL_CLEANUP: 1 + uses: ./.github/actions/install-valgrind + + # - name: CI script + # env: ${{ matrix.env_vars }} + # run: ./ci/ci.sh + + # - run: cat tests.log || true + # if: ${{ always() }} + # - run: cat noverify_tests.log || true + # if: ${{ always() }} + # - run: cat exhaustive_tests.log || true + # if: ${{ always() }} + # - run: cat ctime_tests.log || true + # if: ${{ always() }} + # - run: cat bench.log || true + # if: ${{ always() }} + # - run: cat config.log || true + # if: ${{ always() }} + # - run: cat test_env.log || true + # if: ${{ always() }} + # - name: CI env + # run: env + # if: ${{ always() }} + +# win64-native: +# name: ${{ matrix.configuration.job_name }} +# # See: https://github.com/actions/runner-images#available-images. +# runs-on: windows-2022 + +# strategy: +# fail-fast: false +# matrix: +# configuration: +# - job_name: 'x64 (MSVC): Windows (VS 2022, shared)' +# cmake_options: '-A x64 -DBUILD_SHARED_LIBS=ON' +# - job_name: 'x64 (MSVC): Windows (VS 2022, static)' +# cmake_options: '-A x64 -DBUILD_SHARED_LIBS=OFF' +# - job_name: 'x64 (MSVC): Windows (VS 2022, int128_struct)' +# cmake_options: '-A x64 -DSECP256K1_TEST_OVERRIDE_WIDE_MULTIPLY=int128_struct' +# - job_name: 'x64 (MSVC): Windows (VS 2022, int128_struct with __(u)mulh)' +# cmake_options: '-A x64 -DSECP256K1_TEST_OVERRIDE_WIDE_MULTIPLY=int128_struct' +# cpp_flags: '/DSECP256K1_MSVC_MULH_TEST_OVERRIDE' +# - job_name: 'x86 (MSVC): Windows (VS 2022)' +# cmake_options: '-A Win32' + +# steps: +# - name: Checkout +# uses: actions/checkout@v3 + +# - name: Generate buildsystem +# run: cmake -E env CFLAGS="/WX ${{ matrix.configuration.cpp_flags }}" cmake -B build -DSECP256K1_ENABLE_MODULE_RECOVERY=ON -DSECP256K1_BUILD_EXAMPLES=ON ${{ matrix.configuration.cmake_options }} + +# - name: Build +# run: cmake --build build --config RelWithDebInfo -- /p:UseMultiToolTask=true /maxCpuCount + +# - name: Binaries info +# # Use the bash shell included with Git for Windows. +# shell: bash +# run: | +# cd build/src/RelWithDebInfo && file *tests.exe bench*.exe libsecp256k1-*.dll || true + +# - name: Check +# run: | +# ctest -C RelWithDebInfo --test-dir build -j ([int]$env:NUMBER_OF_PROCESSORS + 1) +# build\src\RelWithDebInfo\bench_ecmult.exe +# build\src\RelWithDebInfo\bench_internal.exe +# build\src\RelWithDebInfo\bench.exe + +# win64-native-headers: +# name: "x64 (MSVC): C++ (public headers)" +# # See: https://github.com/actions/runner-images#available-images. +# runs-on: windows-2022 + +# steps: +# - name: Checkout +# uses: actions/checkout@v3 + +# - name: Add cl.exe to PATH +# uses: ilammy/msvc-dev-cmd@v1 + +# - name: C++ (public headers) +# run: | +# cl.exe -c -WX -TP include/*.h + +# cxx_fpermissive_debian: +# name: "C++ -fpermissive (entire project)" +# runs-on: ubuntu-latest +# needs: docker_cache + +# env: +# CC: 'g++' +# CFLAGS: '-fpermissive -g' +# CPPFLAGS: '-DSECP256K1_CPLUSPLUS_TEST_OVERRIDE' +# WERROR_CFLAGS: +# ECDH: 'yes' +# RECOVERY: 'yes' +# SCHNORRSIG: 'yes' +# ELLSWIFT: 'yes' + +# steps: +# - name: Checkout +# uses: actions/checkout@v3 + +# - name: CI script +# uses: ./.github/actions/run-in-docker-action +# with: +# dockerfile: ./ci/linux-debian.Dockerfile +# tag: linux-debian-image + +# - run: cat tests.log || true +# if: ${{ always() }} +# - run: cat noverify_tests.log || true +# if: ${{ always() }} +# - run: cat exhaustive_tests.log || true +# if: ${{ always() }} +# - run: cat ctime_tests.log || true +# if: ${{ always() }} +# - run: cat bench.log || true +# if: ${{ always() }} +# - run: cat config.log || true +# if: ${{ always() }} +# - run: cat test_env.log || true +# if: ${{ always() }} +# - name: CI env +# run: env +# if: ${{ always() }} + +# cxx_headers_debian: +# name: "C++ (public headers)" +# runs-on: ubuntu-latest +# needs: docker_cache + +# steps: +# - name: Checkout +# uses: actions/checkout@v3 + +# - name: CI script +# uses: ./.github/actions/run-in-docker-action +# with: +# dockerfile: ./ci/linux-debian.Dockerfile +# tag: linux-debian-image +# command: | +# g++ -Werror include/*.h +# clang -Werror -x c++-header include/*.h + +# sage: +# name: "SageMath prover" +# runs-on: ubuntu-latest +# container: +# image: sagemath/sagemath:latest +# options: --user root + +# steps: +# - name: Checkout +# uses: actions/checkout@v3 + +# - name: CI script +# run: | +# cd sage +# sage prove_group_implementations.sage