Skip to content

Commit e47c421

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

2 files changed

Lines changed: 85 additions & 6 deletions

File tree

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

Lines changed: 39 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

@@ -63,7 +67,31 @@ jobs:
6367
- name: "Install deps"
6468
shell: freebsd {0}
6569
run: |
66-
pkg install -y curl cmake gperf erlang elixir rebar3 mbedtls3 ninja
70+
pkg install -y curl cmake gperf erlang elixir rebar3 ninja
71+
72+
- name: "Install MbedTLS 3"
73+
if: matrix.mbedtls == 'mbedtls@3'
74+
shell: freebsd {0}
75+
run: |
76+
pkg install -y mbedtls3
77+
78+
- name: "Install deps for MbedTLS 4"
79+
if: matrix.mbedtls == 'mbedtls@4'
80+
shell: freebsd {0}
81+
run: |
82+
PYTHON_PKG_VERSION=$(python3 -c 'import sys; print(f"{sys.version_info.major}{sys.version_info.minor}")')
83+
pkg install -y git py${PYTHON_PKG_VERSION}-jinja2
84+
85+
- name: "Install specific MbedTLS version"
86+
if: matrix.mbedtls == 'mbedtls@4'
87+
shell: freebsd {0}
88+
run: |
89+
cd $GITHUB_WORKSPACE;
90+
git clone --depth 1 --branch mbedtls-4.0.0 --recurse-submodules https://github.com/Mbed-TLS/mbedtls
91+
cd mbedtls
92+
cmake -S . -B build -DENABLE_TESTING=OFF -DUSE_SHARED_MBEDTLS_LIBRARY=On -DCMAKE_INSTALL_PREFIX=/usr/local
93+
cmake --build build -j$(sysctl -n hw.ncpu)
94+
cmake --install build
6795
6896
- name: "Add hostname to /etc/hosts for distribution tests"
6997
shell: freebsd {0}
@@ -102,6 +130,15 @@ jobs:
102130
mkdir build
103131
104132
- name: "Build: run cmake"
133+
if: matrix.mbedtls == 'mbedtls@3'
134+
shell: freebsd {0}
135+
run: |
136+
cd $GITHUB_WORKSPACE;
137+
cd build
138+
cmake .. -DAVM_WARNINGS_ARE_ERRORS=ON
139+
140+
- name: "Build: run cmake (MbedTLS 4)"
141+
if: matrix.mbedtls == 'mbedtls@4'
105142
shell: freebsd {0}
106143
run: |
107144
cd $GITHUB_WORKSPACE;

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

Lines changed: 46 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,12 @@ jobs:
159159
otp: "master"
160160
elixir_version: "main"
161161

162+
# Additional mbedtls@4 coverage with the default Linux toolchain
163+
- cc: "cc"
164+
cxx: "c++"
165+
otp: "28"
166+
mbedtls: "mbedtls@4"
167+
162168
# Additional latest & -Os compiler builds
163169
- cc: "gcc-14"
164170
cxx: "g++-14"
@@ -494,13 +500,26 @@ jobs:
494500
run: sudo apt update -y
495501

496502
- name: "Install deps"
497-
if: matrix.container != ''
498-
run: sudo apt install -y ${{ matrix.compiler_pkgs}} cmake gperf zlib1g-dev doxygen valgrind libmbedtls-dev
503+
if: matrix.container != '' && matrix.mbedtls != 'mbedtls@4'
504+
run: |
505+
sudo apt install -y ${{ matrix.compiler_pkgs}} cmake gperf zlib1g-dev doxygen valgrind libmbedtls-dev
506+
507+
- name: "Install deps (MbedTLS 4)"
508+
if: matrix.container != '' && matrix.mbedtls == 'mbedtls@4'
509+
run: |
510+
sudo apt install -y ${{ matrix.compiler_pkgs}} cmake gperf zlib1g-dev doxygen valgrind
499511
500512
- name: "Install deps"
501-
if: matrix.container == ''
513+
if: matrix.container == '' && matrix.mbedtls != 'mbedtls@4'
514+
run: |
515+
sudo apt install -y ${{ matrix.compiler_pkgs}} cmake gperf zlib1g-dev doxygen libc6-dbg libmbedtls-dev
516+
# Get a more recent valgrind
517+
sudo snap install valgrind --classic
518+
519+
- name: "Install deps (MbedTLS 4)"
520+
if: matrix.container == '' && matrix.mbedtls == 'mbedtls@4'
502521
run: |
503-
sudo apt install -y ${{ matrix.compiler_pkgs}} cmake gperf zlib1g-dev doxygen libmbedtls-dev libc6-dbg
522+
sudo apt install -y ${{ matrix.compiler_pkgs}} cmake gperf zlib1g-dev doxygen libc6-dbg
504523
# Get a more recent valgrind
505524
sudo snap install valgrind --classic
506525
@@ -536,6 +555,19 @@ jobs:
536555
https://repo.hex.pm
537556
https://cdn.jsdelivr.net/hex
538557
558+
- name: "Install specific MbedTLS version"
559+
if: matrix.mbedtls == 'mbedtls@4'
560+
run: |
561+
git clone --depth 1 --branch mbedtls-4.0.0 --recurse-submodules https://github.com/Mbed-TLS/mbedtls
562+
cd mbedtls
563+
mkdir build
564+
cd build
565+
cmake -DENABLE_TESTING=OFF -DUSE_SHARED_MBEDTLS_LIBRARY=On -DCMAKE_INSTALL_PREFIX=/usr/local ..
566+
make -j$(nproc)
567+
sudo make install
568+
sudo ldconfig
569+
echo "MBEDTLS_ROOT_DIR=/usr/local" >> $GITHUB_ENV
570+
539571
# Builder info
540572
- name: "System info"
541573
run: |
@@ -566,13 +598,23 @@ jobs:
566598
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' }}
567599

568600
- name: "Build: run cmake"
601+
if: matrix.mbedtls != 'mbedtls@4'
569602
working-directory: build
570603
run: |
571604
cmake ${{ matrix.cmake_opts_fp }} ${{ matrix.cmake_opts_smp }} ${{ matrix.cmake_opts_other || env.DEFAULT_CMAKE_OPTS_OTHER }} ..
572605
# git clone will use more recent timestamps than cached beam files
573606
# touch them so we can benefit from the cache and avoid costly beam file rebuild.
574607
find . -name '*.beam' -exec touch {} \;
575608
609+
- name: "Build: run cmake (MbedTLS 4)"
610+
if: matrix.mbedtls == 'mbedtls@4'
611+
working-directory: build
612+
run: |
613+
cmake -DMBEDTLS_ROOT_DIR=/usr/local ${{ matrix.cmake_opts_fp }} ${{ matrix.cmake_opts_smp }} ${{ matrix.cmake_opts_other || env.DEFAULT_CMAKE_OPTS_OTHER }} ..
614+
# git clone will use more recent timestamps than cached beam files
615+
# touch them so we can benefit from the cache and avoid costly beam file rebuild.
616+
find . -name '*.beam' -exec touch {} \;
617+
576618
- name: "Build: run make"
577619
working-directory: build
578620
run: make -j3

0 commit comments

Comments
 (0)