forked from bitcoin-core/secp256k1
-
Notifications
You must be signed in to change notification settings - Fork 3
75 lines (69 loc) · 2.47 KB
/
build-with-cmake.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
name: Build using cmake
# In secp256k1 some assertions are not exactly equal when coverage is enabled
# and when it is not. Hence, it is better to run the two cases separately.
on:
push:
branches:
- frost
pull_request:
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
jobs:
build-with-cmake:
runs-on: ubuntu-22.04
# Use fedora:38 to compile using gcc-13
container:
image: fedora:38
steps:
- name: Install build dependencies
run: |
dnf install -y \
autoconf \
automake \
gcc \
gcovr \
libtool \
pkg-config \
cmake
- uses: actions/checkout@v3
with:
fetch-depth: 1
- name: Create and enter build directory
run: |
mkdir _build
cd _build
- name: Build with CMake
run: |
cmake -B _build -DCMAKE_C_FLAGS="-Werror" -DCMAKE_BUILD_TYPE="Release" -DSECP256K1_EXPERIMENTAL=ON -DSECP256K1_ENABLE_MODULE_FROST=ON -DSECP256K1_BUILD_BENCHMARK=OFF -DSECP256K1_BUILD_EXAMPLES=ON -DSECP256K1_BUILD_EXHAUSTIVE_TESTS=OFF -DSECP256K1_BUILD_TESTS=ON ..
cmake --build _build -- -j
- name: Run FROST example
continue-on-error: true
id: run_frost_example
run: |
./_build/examples/frost_example
- name: Functional tests with -Werror, no code coverage
continue-on-error: true
id: tests_no_coverage
run: |
./_build/src/tests
- name: Summarize outcomes. Fail if any step failed.
run: |
# summary
RED='\033[0;31m'
GREEN='\033[0;32m'
NC='\033[0m' # No Color
echo -n "FROST example: "
if [[ ${{ steps.run_frost_example.outcome }} == "success" ]]; then
printf "${GREEN}SUCCESS${NC}\n"
else
printf "${RED}FAIL${NC} (${{ steps.run_frost_example.outcome }}), please check\n"
fi
echo -n "Functional tests with -Werror, no code coverage: "
if [[ ${{ steps.tests_no_coverage.outcome }} == "success" ]]; then
printf "${GREEN}SUCCESS${NC}\n"
else
printf "${RED}FAIL${NC} (${{ steps.tests_no_coverage.outcome }}), please check\n"
fi
if [[ ${{ steps.tests_with_coverage.outcome }} != "success" ]] || [[ ${{ steps.tests_no_coverage.outcome }} != "success" ]]; then
exit 1
fi