|
59 | 59 | # We only test several OTP versions with default compilers for supported OSes (gcc 11, gcc 13, clang 14, clang 18) |
60 | 60 | cc: ["gcc-11", "gcc-13", "clang-14", "clang-18"] |
61 | 61 | otp: ["26", "27", "28"] |
| 62 | + mbedtls: ["default"] |
62 | 63 |
|
63 | 64 | include: |
64 | 65 | ### gcc |
@@ -159,6 +160,12 @@ jobs: |
159 | 160 | otp: "master" |
160 | 161 | elixir_version: "main" |
161 | 162 |
|
| 163 | + # Additional mbedtls@4 coverage with the default Linux toolchain |
| 164 | + - cc: "cc" |
| 165 | + cxx: "c++" |
| 166 | + otp: "28" |
| 167 | + mbedtls: "mbedtls@4" |
| 168 | + |
162 | 169 | # Additional latest & -Os compiler builds |
163 | 170 | - cc: "gcc-14" |
164 | 171 | cxx: "g++-14" |
@@ -540,13 +547,26 @@ jobs: |
540 | 547 | run: sudo apt update -y |
541 | 548 |
|
542 | 549 | - 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 |
545 | 558 |
|
546 | 559 | - 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' |
548 | 568 | 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 |
550 | 570 | # Get a more recent valgrind |
551 | 571 | sudo snap install valgrind --classic |
552 | 572 |
|
@@ -582,6 +602,19 @@ jobs: |
582 | 602 | https://repo.hex.pm |
583 | 603 | https://cdn.jsdelivr.net/hex |
584 | 604 |
|
| 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 | +
|
585 | 618 | # Builder info |
586 | 619 | - name: "System info" |
587 | 620 | run: | |
@@ -619,13 +652,23 @@ jobs: |
619 | 652 | 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' }} |
620 | 653 |
|
621 | 654 | - name: "Build: run cmake" |
| 655 | + if: matrix.mbedtls != 'mbedtls@4' |
622 | 656 | working-directory: build |
623 | 657 | run: | |
624 | 658 | cmake ${{ matrix.cmake_opts_fp }} ${{ matrix.cmake_opts_smp }} ${{ matrix.cmake_opts_other || env.DEFAULT_CMAKE_OPTS_OTHER }} .. |
625 | 659 | # git clone will use more recent timestamps than cached beam files |
626 | 660 | # touch them so we can benefit from the cache and avoid costly beam file rebuild. |
627 | 661 | find . -name '*.beam' -exec touch {} \; |
628 | 662 |
|
| 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 | +
|
629 | 672 | - name: "Build: run make" |
630 | 673 | working-directory: build |
631 | 674 | run: make -j3 |
|
0 commit comments