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@v4 - name: Build run: source tools/ci.sh && ci_unix_minimal_build - name: Run main test suite run: source tools/ci.sh && ci_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@v4 - name: Build with reproducible date run: source tools/ci.sh && ci_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@v4 - name: Build run: source tools/ci.sh && ci_unix_standard_build - name: Run main test suite run: source tools/ci.sh && ci_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@v4 - name: Build run: source tools/ci.sh && ci_unix_standard_v2_build - name: Run main test suite run: source tools/ci.sh && ci_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@v4 - name: Install packages run: source tools/ci.sh && ci_unix_coverage_setup - name: Build run: source tools/ci.sh && ci_unix_coverage_build - name: Run main test suite run: source tools/ci.sh && ci_unix_coverage_run_tests - name: Test merging .mpy files run: source tools/ci.sh && ci_unix_coverage_run_mpy_merge_tests - name: Build native mpy modules run: source tools/ci.sh && ci_native_mpy_modules_build - name: Test importing .mpy generated by mpy_ld.py run: source tools/ci.sh && ci_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@v3 with: fail_ci_if_error: true verbose: true - name: Print failures if: failure() run: tests/run-tests.py --print-failures coverage_32bit: runs-on: ubuntu-20.04 # use 20.04 to get libffi-dev:i386 steps: - uses: actions/checkout@v4 - name: Install packages run: source tools/ci.sh && ci_unix_32bit_setup - name: Build run: source tools/ci.sh && ci_unix_coverage_32bit_build - name: Run main test suite run: source tools/ci.sh && ci_unix_coverage_32bit_run_tests - name: Build native mpy modules run: source tools/ci.sh && ci_native_mpy_modules_32bit_build - name: Test importing .mpy generated by mpy_ld.py run: source tools/ci.sh && ci_unix_coverage_32bit_run_native_mpy_tests - name: Print failures if: failure() run: tests/run-tests.py --print-failures nanbox: runs-on: ubuntu-20.04 # use 20.04 to get python2, and libffi-dev:i386 steps: - uses: actions/checkout@v4 - name: Install packages run: source tools/ci.sh && ci_unix_32bit_setup - name: Build run: source tools/ci.sh && ci_unix_nanbox_build - name: Run main test suite run: source tools/ci.sh && ci_unix_nanbox_run_tests - name: Print failures if: failure() run: tests/run-tests.py --print-failures float: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Build run: source tools/ci.sh && ci_unix_float_build - name: Run main test suite run: source tools/ci.sh && ci_unix_float_run_tests - name: Print failures if: failure() run: tests/run-tests.py --print-failures stackless_clang: runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v4 - name: Install packages run: source tools/ci.sh && ci_unix_clang_setup - name: Build run: source tools/ci.sh && ci_unix_stackless_clang_build - name: Run main test suite run: source tools/ci.sh && ci_unix_stackless_clang_run_tests - name: Print failures if: failure() run: tests/run-tests.py --print-failures float_clang: runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v4 - name: Install packages run: source tools/ci.sh && ci_unix_clang_setup - name: Build run: source tools/ci.sh && ci_unix_float_clang_build - name: Run main test suite run: source tools/ci.sh && ci_unix_float_clang_run_tests - name: Print failures if: failure() run: tests/run-tests.py --print-failures settrace: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Build run: source tools/ci.sh && ci_unix_settrace_build - name: Run main test suite run: source tools/ci.sh && ci_unix_settrace_run_tests - name: Print failures if: failure() run: tests/run-tests.py --print-failures settrace_stackless: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Build run: source tools/ci.sh && ci_unix_settrace_stackless_build - name: Run main test suite run: source tools/ci.sh && ci_unix_settrace_stackless_run_tests - name: Print failures if: failure() run: tests/run-tests.py --print-failures macos: runs-on: macos-11.0 steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: '3.8' - name: Build run: source tools/ci.sh && ci_unix_macos_build - name: Run tests run: source tools/ci.sh && ci_unix_macos_run_tests - name: Print failures if: failure() run: tests/run-tests.py --print-failures qemu_mips: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Install packages run: source tools/ci.sh && ci_unix_qemu_mips_setup - name: Build run: source tools/ci.sh && ci_unix_qemu_mips_build - name: Run main test suite run: source tools/ci.sh && ci_unix_qemu_mips_run_tests - name: Print failures if: failure() run: tests/run-tests.py --print-failures qemu_arm: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Install packages run: source tools/ci.sh && ci_unix_qemu_arm_setup - name: Build run: source tools/ci.sh && ci_unix_qemu_arm_build - name: Run main test suite run: source tools/ci.sh && ci_unix_qemu_arm_run_tests - name: Print failures if: failure() run: tests/run-tests.py --print-failures