Skip to content

Commit 5574dab

Browse files
committed
Add mbedtls4 CI coverage
Signed-off-by: Peter M <petermm@gmail.com>
1 parent 9472bfc commit 5574dab

2 files changed

Lines changed: 77 additions & 6 deletions

File tree

.github/workflows/build-and-test-on-freebsd.yaml

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ concurrency:
3535
jobs:
3636
build-and-test-on-freebsd:
3737
runs-on: ubuntu-24.04
38-
name: Build and test AtomVM on FreeBSD
38+
name: Build and test AtomVM on FreeBSD ${{ matrix.os_release }} (${{ matrix.mbedtls }})
3939
env:
4040
ATOMVM_EXAMPLE: "atomvm-example"
4141

@@ -44,6 +44,10 @@ jobs:
4444

4545
matrix:
4646
os_release: ["13.5", "14.3", "15.0"]
47+
mbedtls: ["mbedtls@3"]
48+
include:
49+
- os_release: "14.3"
50+
mbedtls: "mbedtls@4"
4751

4852
steps:
4953

@@ -60,10 +64,25 @@ jobs:
6064
sync: rsync
6165
copyback: false
6266

67+
- name: "Use latest pkg repo for MbedTLS 4"
68+
if: matrix.mbedtls == 'mbedtls@4'
69+
shell: freebsd {0}
70+
run: |
71+
mkdir -p /usr/local/etc/pkg/repos
72+
echo 'FreeBSD: { url: "pkg+https://pkg.FreeBSD.org/${ABI}/latest" }' > /usr/local/etc/pkg/repos/FreeBSD.conf
73+
pkg update -f
74+
6375
- name: "Install deps"
76+
if: matrix.mbedtls == 'mbedtls@3'
77+
shell: freebsd {0}
78+
run: |
79+
pkg install -y curl cmake gperf erlang elixir rebar3 ninja mbedtls3 socat
80+
81+
- name: "Install deps (MbedTLS 4)"
82+
if: matrix.mbedtls == 'mbedtls@4'
6483
shell: freebsd {0}
6584
run: |
66-
pkg install -y curl cmake gperf erlang elixir rebar3 mbedtls3 ninja socat
85+
pkg install -y curl cmake gperf erlang elixir rebar3 ninja mbedtls4 socat
6786
6887
- name: "Add hostname to /etc/hosts for distribution tests"
6988
shell: freebsd {0}
@@ -102,6 +121,15 @@ jobs:
102121
mkdir build
103122
104123
- name: "Build: run cmake"
124+
if: matrix.mbedtls == 'mbedtls@3'
125+
shell: freebsd {0}
126+
run: |
127+
cd $GITHUB_WORKSPACE;
128+
cd build
129+
cmake .. -DAVM_WARNINGS_ARE_ERRORS=ON
130+
131+
- name: "Build: run cmake (MbedTLS 4)"
132+
if: matrix.mbedtls == 'mbedtls@4'
105133
shell: freebsd {0}
106134
run: |
107135
cd $GITHUB_WORKSPACE;

.github/workflows/build-and-test.yaml

Lines changed: 47 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ jobs:
5959
# We only test several OTP versions with default compilers for supported OSes (gcc 11, gcc 13, clang 14, clang 18)
6060
cc: ["gcc-11", "gcc-13", "clang-14", "clang-18"]
6161
otp: ["26", "27", "28"]
62+
mbedtls: ["default"]
6263

6364
include:
6465
### gcc
@@ -159,6 +160,12 @@ jobs:
159160
otp: "master"
160161
elixir_version: "main"
161162

163+
# Additional mbedtls@4 coverage with the default Linux toolchain
164+
- cc: "cc"
165+
cxx: "c++"
166+
otp: "28"
167+
mbedtls: "mbedtls@4"
168+
162169
# Additional latest & -Os compiler builds
163170
- cc: "gcc-14"
164171
cxx: "g++-14"
@@ -540,13 +547,26 @@ jobs:
540547
run: sudo apt update -y
541548

542549
- name: "Install deps"
543-
if: matrix.container != ''
544-
run: sudo apt install -y ${{ matrix.compiler_pkgs}} cmake gperf zlib1g-dev doxygen valgrind libmbedtls-dev socat
550+
if: matrix.container != '' && matrix.mbedtls != 'mbedtls@4'
551+
run: |
552+
sudo apt install -y ${{ matrix.compiler_pkgs}} cmake gperf zlib1g-dev doxygen valgrind libmbedtls-dev socat
553+
554+
- name: "Install deps (MbedTLS 4)"
555+
if: matrix.container != '' && matrix.mbedtls == 'mbedtls@4'
556+
run: |
557+
sudo apt install -y ${{ matrix.compiler_pkgs}} cmake gperf zlib1g-dev doxygen valgrind socat
545558
546559
- name: "Install deps"
547-
if: matrix.container == ''
560+
if: matrix.container == '' && matrix.mbedtls != 'mbedtls@4'
561+
run: |
562+
sudo apt install -y ${{ matrix.compiler_pkgs}} cmake gperf zlib1g-dev doxygen libc6-dbg libmbedtls-dev socat
563+
# Get a more recent valgrind
564+
sudo snap install valgrind --classic
565+
566+
- name: "Install deps (MbedTLS 4)"
567+
if: matrix.container == '' && matrix.mbedtls == 'mbedtls@4'
548568
run: |
549-
sudo apt install -y ${{ matrix.compiler_pkgs}} cmake gperf zlib1g-dev doxygen libmbedtls-dev libc6-dbg socat
569+
sudo apt install -y ${{ matrix.compiler_pkgs}} cmake gperf zlib1g-dev doxygen libc6-dbg socat
550570
# Get a more recent valgrind
551571
sudo snap install valgrind --classic
552572
@@ -582,6 +602,19 @@ jobs:
582602
https://repo.hex.pm
583603
https://cdn.jsdelivr.net/hex
584604
605+
- name: "Install specific MbedTLS version"
606+
if: matrix.mbedtls == 'mbedtls@4'
607+
run: |
608+
git clone --depth 1 --branch mbedtls-4.0.0 --recurse-submodules https://github.com/Mbed-TLS/mbedtls
609+
cd mbedtls
610+
mkdir build
611+
cd build
612+
cmake -DENABLE_TESTING=OFF -DUSE_SHARED_MBEDTLS_LIBRARY=On -DCMAKE_INSTALL_PREFIX=/usr/local ..
613+
make -j$(nproc)
614+
sudo make install
615+
sudo ldconfig
616+
echo "MBEDTLS_ROOT_DIR=/usr/local" >> $GITHUB_ENV
617+
585618
# Builder info
586619
- name: "System info"
587620
run: |
@@ -619,13 +652,23 @@ jobs:
619652
key: ${{ matrix.otp || env.DEFAULT_OTP_VERSION }}-${{ hashFiles('**/build-and-test.yaml', 'tests/**/*.erl', 'tests/**/*.hrl', 'tests/**/*.ex') }}-${{ matrix.jit_target_arch || 'nojit' }}-${{ contains(matrix.cmake_opts_other, 'AVM_DISABLE_JIT_DWARF=OFF') && 'dwarf' || 'nodwarf' }}
620653

621654
- name: "Build: run cmake"
655+
if: matrix.mbedtls != 'mbedtls@4'
622656
working-directory: build
623657
run: |
624658
cmake ${{ matrix.cmake_opts_fp }} ${{ matrix.cmake_opts_smp }} ${{ matrix.cmake_opts_other || env.DEFAULT_CMAKE_OPTS_OTHER }} ..
625659
# git clone will use more recent timestamps than cached beam files
626660
# touch them so we can benefit from the cache and avoid costly beam file rebuild.
627661
find . -name '*.beam' -exec touch {} \;
628662
663+
- name: "Build: run cmake (MbedTLS 4)"
664+
if: matrix.mbedtls == 'mbedtls@4'
665+
working-directory: build
666+
run: |
667+
cmake -DMBEDTLS_ROOT_DIR=/usr/local ${{ matrix.cmake_opts_fp }} ${{ matrix.cmake_opts_smp }} ${{ matrix.cmake_opts_other || env.DEFAULT_CMAKE_OPTS_OTHER }} ..
668+
# git clone will use more recent timestamps than cached beam files
669+
# touch them so we can benefit from the cache and avoid costly beam file rebuild.
670+
find . -name '*.beam' -exec touch {} \;
671+
629672
- name: "Build: run make"
630673
working-directory: build
631674
run: make -j3

0 commit comments

Comments
 (0)