Skip to content

Commit 46cb4cb

Browse files
committed
Add mbedtls4 CI coverage
Signed-off-by: Peter M <petermm@gmail.com>
1 parent a9af103 commit 46cb4cb

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
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
85+
pkg install -y curl cmake gperf erlang elixir rebar3 ninja mbedtls4
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"
@@ -494,13 +501,26 @@ jobs:
494501
run: sudo apt update -y
495502

496503
- name: "Install deps"
497-
if: matrix.container != ''
498-
run: sudo apt install -y ${{ matrix.compiler_pkgs}} cmake gperf zlib1g-dev doxygen valgrind libmbedtls-dev
504+
if: matrix.container != '' && matrix.mbedtls != 'mbedtls@4'
505+
run: |
506+
sudo apt install -y ${{ matrix.compiler_pkgs}} cmake gperf zlib1g-dev doxygen valgrind libmbedtls-dev
507+
508+
- name: "Install deps (MbedTLS 4)"
509+
if: matrix.container != '' && matrix.mbedtls == 'mbedtls@4'
510+
run: |
511+
sudo apt install -y ${{ matrix.compiler_pkgs}} cmake gperf zlib1g-dev doxygen valgrind
499512
500513
- name: "Install deps"
501-
if: matrix.container == ''
514+
if: matrix.container == '' && matrix.mbedtls != 'mbedtls@4'
515+
run: |
516+
sudo apt install -y ${{ matrix.compiler_pkgs}} cmake gperf zlib1g-dev doxygen libc6-dbg libmbedtls-dev
517+
# Get a more recent valgrind
518+
sudo snap install valgrind --classic
519+
520+
- name: "Install deps (MbedTLS 4)"
521+
if: matrix.container == '' && matrix.mbedtls == 'mbedtls@4'
502522
run: |
503-
sudo apt install -y ${{ matrix.compiler_pkgs}} cmake gperf zlib1g-dev doxygen libmbedtls-dev libc6-dbg
523+
sudo apt install -y ${{ matrix.compiler_pkgs}} cmake gperf zlib1g-dev doxygen libc6-dbg
504524
# Get a more recent valgrind
505525
sudo snap install valgrind --classic
506526
@@ -536,6 +556,19 @@ jobs:
536556
https://repo.hex.pm
537557
https://cdn.jsdelivr.net/hex
538558
559+
- name: "Install specific MbedTLS version"
560+
if: matrix.mbedtls == 'mbedtls@4'
561+
run: |
562+
git clone --depth 1 --branch mbedtls-4.0.0 --recurse-submodules https://github.com/Mbed-TLS/mbedtls
563+
cd mbedtls
564+
mkdir build
565+
cd build
566+
cmake -DENABLE_TESTING=OFF -DUSE_SHARED_MBEDTLS_LIBRARY=On -DCMAKE_INSTALL_PREFIX=/usr/local ..
567+
make -j$(nproc)
568+
sudo make install
569+
sudo ldconfig
570+
echo "MBEDTLS_ROOT_DIR=/usr/local" >> $GITHUB_ENV
571+
539572
# Builder info
540573
- name: "System info"
541574
run: |
@@ -566,13 +599,23 @@ jobs:
566599
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' }}
567600

568601
- name: "Build: run cmake"
602+
if: matrix.mbedtls != 'mbedtls@4'
569603
working-directory: build
570604
run: |
571605
cmake ${{ matrix.cmake_opts_fp }} ${{ matrix.cmake_opts_smp }} ${{ matrix.cmake_opts_other || env.DEFAULT_CMAKE_OPTS_OTHER }} ..
572606
# git clone will use more recent timestamps than cached beam files
573607
# touch them so we can benefit from the cache and avoid costly beam file rebuild.
574608
find . -name '*.beam' -exec touch {} \;
575609
610+
- name: "Build: run cmake (MbedTLS 4)"
611+
if: matrix.mbedtls == 'mbedtls@4'
612+
working-directory: build
613+
run: |
614+
cmake -DMBEDTLS_ROOT_DIR=/usr/local ${{ matrix.cmake_opts_fp }} ${{ matrix.cmake_opts_smp }} ${{ matrix.cmake_opts_other || env.DEFAULT_CMAKE_OPTS_OTHER }} ..
615+
# git clone will use more recent timestamps than cached beam files
616+
# touch them so we can benefit from the cache and avoid costly beam file rebuild.
617+
find . -name '*.beam' -exec touch {} \;
618+
576619
- name: "Build: run make"
577620
working-directory: build
578621
run: make -j3

0 commit comments

Comments
 (0)