mirror of
https://github.com/micropython/micropython.git
synced 2026-01-09 13:40:31 +01:00
This commit updates the test procedure for the Unix port targeting the RV64 platform to also run the battery of native modules test that is part of the QEMU port. Unfortunately this required a few changes to the CI setup since the Unix port was still using an older version of Ubuntu LTS than the RISC-V natmods build infrastructure expects. Updating the OS version just for the RV64 Unix target brought a couple of issues when building the code (an extra package is now needed to let FFI build) and running tests (QEMU binfmt support requires a new setup). Signed-off-by: Alessandro Gatti <a.gatti@frob.it>
342 lines
10 KiB
YAML
342 lines
10 KiB
YAML
name: unix port
|
|
|
|
on:
|
|
push:
|
|
pull_request:
|
|
paths:
|
|
- '.github/workflows/*.yml'
|
|
- 'tools/**'
|
|
- 'py/**'
|
|
- 'extmod/**'
|
|
- 'shared/**'
|
|
- 'lib/**'
|
|
- 'examples/**'
|
|
- 'mpy-cross/**'
|
|
- 'ports/unix/**'
|
|
- 'tests/**'
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
minimal:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
- name: Build
|
|
run: tools/ci.sh unix_minimal_build
|
|
- name: Run main test suite
|
|
run: tools/ci.sh unix_minimal_run_tests
|
|
- name: Print failures
|
|
if: failure()
|
|
run: tests/run-tests.py --print-failures
|
|
|
|
reproducible:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
- name: Build with reproducible date
|
|
run: tools/ci.sh unix_minimal_build
|
|
env:
|
|
SOURCE_DATE_EPOCH: 1234567890
|
|
- name: Check reproducible build date
|
|
run: echo | ports/unix/build-minimal/micropython -i | grep 'on 2009-02-13;'
|
|
|
|
standard:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
- name: Build
|
|
run: tools/ci.sh unix_standard_build
|
|
- name: Run main test suite
|
|
run: tools/ci.sh unix_standard_run_tests
|
|
- name: Print failures
|
|
if: failure()
|
|
run: tests/run-tests.py --print-failures
|
|
|
|
standard_v2:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
- name: Build
|
|
run: tools/ci.sh unix_standard_v2_build
|
|
- name: Run main test suite
|
|
run: tools/ci.sh unix_standard_v2_run_tests
|
|
- name: Print failures
|
|
if: failure()
|
|
run: tests/run-tests.py --print-failures
|
|
|
|
coverage:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
- uses: actions/setup-python@v6
|
|
# Python 3.12 is the default for ubuntu-24.04, but that has compatibility issues with settrace tests.
|
|
# Can remove this step when ubuntu-latest uses a more recent Python 3.x as the default.
|
|
with:
|
|
python-version: '3.11'
|
|
- name: Install packages
|
|
run: tools/ci.sh unix_coverage_setup
|
|
- name: Build
|
|
run: tools/ci.sh unix_coverage_build
|
|
- name: Run main test suite
|
|
run: tools/ci.sh unix_coverage_run_tests
|
|
- name: Test merging .mpy files
|
|
run: tools/ci.sh unix_coverage_run_mpy_merge_tests
|
|
- name: Build native mpy modules
|
|
run: tools/ci.sh native_mpy_modules_build
|
|
- name: Test importing .mpy generated by mpy_ld.py
|
|
run: tools/ci.sh unix_coverage_run_native_mpy_tests
|
|
- name: Run gcov coverage analysis
|
|
run: |
|
|
(cd ports/unix && gcov -o build-coverage/py ../../py/*.c || true)
|
|
(cd ports/unix && gcov -o build-coverage/extmod ../../extmod/*.c || true)
|
|
- name: Upload coverage to Codecov
|
|
uses: codecov/codecov-action@v5
|
|
with:
|
|
fail_ci_if_error: true
|
|
verbose: true
|
|
token: ${{ secrets.CODECOV_TOKEN }}
|
|
- name: Print failures
|
|
if: failure()
|
|
run: tests/run-tests.py --print-failures
|
|
|
|
coverage_32bit:
|
|
runs-on: ubuntu-22.04 # use 22.04 to get libffi-dev:i386
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
- name: Install packages
|
|
run: tools/ci.sh unix_32bit_setup
|
|
- name: Build
|
|
run: tools/ci.sh unix_coverage_32bit_build
|
|
- name: Run main test suite
|
|
run: tools/ci.sh unix_coverage_32bit_run_tests
|
|
- name: Build native mpy modules
|
|
run: tools/ci.sh native_mpy_modules_32bit_build
|
|
- name: Test importing .mpy generated by mpy_ld.py
|
|
run: tools/ci.sh unix_coverage_32bit_run_native_mpy_tests
|
|
- name: Print failures
|
|
if: failure()
|
|
run: tests/run-tests.py --print-failures
|
|
|
|
nanbox:
|
|
runs-on: ubuntu-22.04 # use 22.04 to get libffi-dev:i386
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
- name: Install packages
|
|
run: tools/ci.sh unix_32bit_setup
|
|
- name: Build
|
|
run: tools/ci.sh unix_nanbox_build
|
|
- name: Run main test suite
|
|
run: tools/ci.sh unix_nanbox_run_tests
|
|
- name: Print failures
|
|
if: failure()
|
|
run: tests/run-tests.py --print-failures
|
|
|
|
longlong:
|
|
runs-on: ubuntu-22.04 # use 22.04 to get libffi-dev:i386
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
- name: Install packages
|
|
run: tools/ci.sh unix_32bit_setup
|
|
- name: Build
|
|
run: tools/ci.sh unix_longlong_build
|
|
- name: Run main test suite
|
|
run: tools/ci.sh unix_longlong_run_tests
|
|
- name: Print failures
|
|
if: failure()
|
|
run: tests/run-tests.py --print-failures
|
|
|
|
float:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
- name: Build
|
|
run: tools/ci.sh unix_float_build
|
|
- name: Run main test suite
|
|
run: tools/ci.sh unix_float_run_tests
|
|
- name: Print failures
|
|
if: failure()
|
|
run: tests/run-tests.py --print-failures
|
|
|
|
gil_enabled:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
- name: Build
|
|
run: tools/ci.sh unix_gil_enabled_build
|
|
- name: Run main test suite
|
|
run: tools/ci.sh unix_gil_enabled_run_tests
|
|
- name: Print failures
|
|
if: failure()
|
|
run: tests/run-tests.py --print-failures
|
|
|
|
stackless_clang:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
- name: Install packages
|
|
run: tools/ci.sh unix_clang_setup
|
|
- name: Build
|
|
run: tools/ci.sh unix_stackless_clang_build
|
|
- name: Run main test suite
|
|
run: tools/ci.sh unix_stackless_clang_run_tests
|
|
- name: Print failures
|
|
if: failure()
|
|
run: tests/run-tests.py --print-failures
|
|
|
|
float_clang:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
- name: Install packages
|
|
run: tools/ci.sh unix_clang_setup
|
|
- name: Build
|
|
run: tools/ci.sh unix_float_clang_build
|
|
- name: Run main test suite
|
|
run: tools/ci.sh unix_float_clang_run_tests
|
|
- name: Print failures
|
|
if: failure()
|
|
run: tests/run-tests.py --print-failures
|
|
|
|
settrace_stackless:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
- uses: actions/setup-python@v6
|
|
# Python 3.12 is the default for ubuntu-24.04, but that has compatibility issues with settrace tests.
|
|
# Can remove this step when ubuntu-latest uses a more recent Python 3.x as the default.
|
|
with:
|
|
python-version: '3.11'
|
|
- name: Build
|
|
run: tools/ci.sh unix_settrace_stackless_build
|
|
- name: Run main test suite
|
|
run: tools/ci.sh unix_settrace_stackless_run_tests
|
|
- name: Print failures
|
|
if: failure()
|
|
run: tests/run-tests.py --print-failures
|
|
|
|
repr_b:
|
|
runs-on: ubuntu-22.04 # use 22.04 to get libffi-dev:i386
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
- name: Install packages
|
|
run: tools/ci.sh unix_32bit_setup
|
|
- name: Build
|
|
run: tools/ci.sh unix_repr_b_build
|
|
- name: Run main test suite
|
|
run: tools/ci.sh unix_repr_b_run_tests
|
|
- name: Print failures
|
|
if: failure()
|
|
run: tests/run-tests.py --print-failures
|
|
|
|
macos:
|
|
runs-on: macos-26
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
- uses: actions/setup-python@v6
|
|
with:
|
|
python-version: '3.8'
|
|
- name: Build
|
|
run: tools/ci.sh unix_macos_build
|
|
- name: Run tests
|
|
run: tools/ci.sh unix_macos_run_tests
|
|
- name: Print failures
|
|
if: failure()
|
|
run: tests/run-tests.py --print-failures
|
|
|
|
qemu_mips:
|
|
# ubuntu-22.04 is needed for older libffi.
|
|
runs-on: ubuntu-22.04
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
- name: Install packages
|
|
run: tools/ci.sh unix_qemu_mips_setup
|
|
- name: Build
|
|
run: tools/ci.sh unix_qemu_mips_build
|
|
- name: Run main test suite
|
|
run: tools/ci.sh unix_qemu_mips_run_tests
|
|
- name: Print failures
|
|
if: failure()
|
|
run: tests/run-tests.py --print-failures
|
|
|
|
qemu_arm:
|
|
# ubuntu-22.04 is needed for older libffi.
|
|
runs-on: ubuntu-22.04
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
- name: Install packages
|
|
run: tools/ci.sh unix_qemu_arm_setup
|
|
- name: Build
|
|
run: tools/ci.sh unix_qemu_arm_build
|
|
- name: Run main test suite
|
|
run: tools/ci.sh unix_qemu_arm_run_tests
|
|
- name: Print failures
|
|
if: failure()
|
|
run: tests/run-tests.py --print-failures
|
|
|
|
qemu_riscv64:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
- name: Install packages
|
|
run: tools/ci.sh unix_qemu_riscv64_setup
|
|
- name: Build
|
|
run: tools/ci.sh unix_qemu_riscv64_build
|
|
- name: Run main test suite
|
|
run: tools/ci.sh unix_qemu_riscv64_run_tests
|
|
- name: Print failures
|
|
if: failure()
|
|
run: tests/run-tests.py --print-failures
|
|
|
|
sanitize_address:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
- uses: actions/setup-python@v6
|
|
# Python 3.12 is the default for ubuntu-24.04, but that has compatibility issues with settrace tests.
|
|
# Can remove this step when ubuntu-latest uses a more recent Python 3.x as the default.
|
|
with:
|
|
python-version: '3.11'
|
|
- name: Install packages
|
|
run: tools/ci.sh unix_coverage_setup
|
|
- name: Build
|
|
run: tools/ci.sh unix_sanitize_address_build
|
|
- name: Run main test suite
|
|
run: tools/ci.sh unix_sanitize_address_run_tests
|
|
- name: Test merging .mpy files
|
|
run: tools/ci.sh unix_coverage_run_mpy_merge_tests
|
|
- name: Build native mpy modules
|
|
run: tools/ci.sh native_mpy_modules_build
|
|
- name: Test importing .mpy generated by mpy_ld.py
|
|
run: tools/ci.sh unix_coverage_run_native_mpy_tests
|
|
- name: Print failures
|
|
if: failure()
|
|
run: tests/run-tests.py --print-failures
|
|
|
|
sanitize_undefined:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
- uses: actions/setup-python@v6
|
|
# Python 3.12 is the default for ubuntu-24.04, but that has compatibility issues with settrace tests.
|
|
# Can remove this step when ubuntu-latest uses a more recent Python 3.x as the default.
|
|
with:
|
|
python-version: '3.11'
|
|
- name: Install packages
|
|
run: tools/ci.sh unix_coverage_setup
|
|
- name: Build
|
|
run: tools/ci.sh unix_sanitize_undefined_build
|
|
- name: Run main test suite
|
|
run: tools/ci.sh unix_sanitize_undefined_run_tests
|
|
- name: Test merging .mpy files
|
|
run: tools/ci.sh unix_coverage_run_mpy_merge_tests
|
|
- name: Build native mpy modules
|
|
run: tools/ci.sh native_mpy_modules_build
|
|
- name: Test importing .mpy generated by mpy_ld.py
|
|
run: tools/ci.sh unix_coverage_run_native_mpy_tests
|
|
- name: Print failures
|
|
if: failure()
|
|
run: tests/run-tests.py --print-failures
|