timestamped-socket 0.2.8

Implementation of async UDP and raw ethernet sockets with timestamping
Documentation
name: checks

permissions:
  contents: read

on:
  push:
    branches:
      - main
  pull_request:
  schedule:
    - cron: '0 4 * * *'
  merge_group:
    branches:
      - main

jobs:
  format:
    name: Format
    runs-on: ubuntu-latest
    steps:
      - name: Checkout sources
        uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
        with:
          persist-credentials: false
      - name: Install rust toolchain
        uses: actions-rs/toolchain@16499b5e05bf2e26879000db0c1d13f7e13fa3af
        with:
          toolchain: stable
          override: true
          default: true
          components: rustfmt
      - name: Check formatting
        uses: actions-rs/cargo@844f36862e911db73fe0815f00a4a2602c279505
        with:
          command: fmt
          args: --all --check

  build:
    name: Clippy & Test ${{ matrix.os }}
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        # os: [ubuntu-latest, macos-latest]
        os: [ubuntu-latest]
        rust:
          - 1.88.0
        target:
          - ""
        features:
          - ""
    steps:
      - name: Checkout sources
        uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
        with:
          persist-credentials: false
      - name: Install ${{ matrix.rust }} toolchain
        uses: actions-rs/toolchain@16499b5e05bf2e26879000db0c1d13f7e13fa3af
        with:
          toolchain: ${{ matrix.rust }}
          override: true
      - name: cargo build
        run: cargo build ${{ matrix.features }}
      - name: cargo test
        run: cargo test
        env:
          RUST_BACKTRACE: 1

  build-musl:
    name: Clippy & Test ubuntu-latest / MUSL 
    runs-on: ubuntu-latest 
    steps:
      - name: Checkout sources
        uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
        with:
          persist-credentials: false
      - name: Install rust toolchain
        uses: actions-rs/toolchain@16499b5e05bf2e26879000db0c1d13f7e13fa3af
        with:
          toolchain: stable
          override: true
          default: true
          components: clippy
          target: x86_64-unknown-linux-musl
      - name: cargo build
        run: cargo build ${{ matrix.features }}
      - name: cargo test
        run: cargo test
        env:
          RUST_BACKTRACE: 1

  build-freebsd:
    name: Clippy & Test FreeBSD
    runs-on: ubuntu-latest
    timeout-minutes: 30
    steps:
      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
      - name: test on freebsd
        uses: vmactions/freebsd-vm@7ca82f79fe3078fecded6d3a2bff094995447bbd
        with:
          usesh: true
          mem: 4096
          copyback: false
          prepare: |
            pkg install -y curl
            curl https://sh.rustup.rs -sSf --output rustup.sh
            sh rustup.sh -y --profile default --default-toolchain 1.88.0 # cannot use `--profile minimal` because of clippy
            echo "~~~~ rustc --version ~~~~"
            $HOME/.cargo/bin/rustc --version
            echo "~~~~ freebsd-version ~~~~"
            freebsd-version
          run: $HOME/.cargo/bin/cargo clippy -- -D warnings && $HOME/.cargo/bin/cargo build && $HOME/.cargo/bin/cargo test

  clippy-raspberry-pi:
    name: ClippyRaspberryPi
    runs-on: ubuntu-latest
    steps:
      - name: Checkout sources
        uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
        with:
          persist-credentials: false
      - name: Install rust toolchain
        uses: actions-rs/toolchain@16499b5e05bf2e26879000db0c1d13f7e13fa3af
        with:
          toolchain: stable
          override: true
          default: true
          components: clippy
          target: armv7-unknown-linux-gnueabihf
      # Use zig as our C compiler for convenient cross-compilation. We run into rustls having a dependency on `ring`.
      # This crate uses C and assembly code, and because of its build scripts, `cargo clippy` needs to be able to compile
      # that code for our target.
      - uses: goto-bus-stop/setup-zig@abea47f85e598557f500fa1fd2ab7464fcb39406
        with:
          version: 0.9.0
      - name: Install cargo-zigbuild
        uses: taiki-e/install-action@e9e8e031bcd90cdbe8ac6bb1d376f8596e587fbf
        with:
          tool: cargo-zigbuild
      - name: Run clippy
        uses: actions-rs/cargo@844f36862e911db73fe0815f00a4a2602c279505
        env:
          TARGET_CC: "/home/runner/.cargo/bin/cargo-zigbuild zig cc -- -target arm-linux-gnueabihf -mcpu=generic+v7a+vfp3-d32+thumb2-neon -g"
        with:
          command: clippy
          args: --target armv7-unknown-linux-gnueabihf --workspace --all-targets -- -D warnings