timestamped-socket 0.3.0

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@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0
        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 }} (${{ matrix.target }})
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        include:
          - rust: 1.88.0
            os: ubuntu-latest
            features: ""
            target: "x86_64-unknown-linux-gnu"
          - rust: 1.88.0
            os: ubuntu-latest
            features: ""
            target: "x86_64-unknown-linux-musl"
          - rust: 1.88.0
            os: macos-latest
            features: ""
            target: "aarch64-apple-darwin"
    steps:
      - name: Checkout sources
        uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0
        with:
          persist-credentials: false
      - name: Install ${{ matrix.rust }} toolchain
        uses: actions-rs/toolchain@16499b5e05bf2e26879000db0c1d13f7e13fa3af
        with:
          toolchain: ${{ matrix.rust }}
          override: true
          default: true
          components: clippy
          target: ${{ matrix.target }}
      - 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@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0
      - name: test on freebsd
        uses: vmactions/freebsd-vm@5a72679103d223925653750faa878a143340fbd0
        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@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0
        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@4684b8405694ae9dd42c9f39ba901a70ae83f4a3
        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