linux-stat 0.3.3

A pure Rust library that implements stat functions on linux with only syscalls.
Documentation
name: CI

on:
  push:
    branches:
      - master
  pull_request:
    branches:
      - master
  workflow_dispatch:

jobs:
  rustfmt:
    name: rustfmt
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3
    - name: Install stable toolchain
      uses: actions-rs/toolchain@v1
      with:
        toolchain: stable
        components: rustfmt
    - run: cargo fmt --all -- --check

  check:
    name: Check
    permissions: write-all
    needs: rustfmt
    runs-on: ubuntu-latest
    strategy:
      matrix:
        include:
          - target: aarch64-unknown-linux-gnu
            toolchain: stable
          - target: aarch64-linux-android
            toolchain: stable
          - target: arm-unknown-linux-gnueabi
            toolchain: stable
          - target: arm-linux-androideabi
            toolchain: stable
          - target: mips-unknown-linux-gnu
            toolchain: stable
          - target: mipsel-unknown-linux-gnu
            toolchain: stable
          - target: mips64-unknown-linux-gnuabi64
            toolchain: stable
          - target: mips64el-unknown-linux-gnuabi64
            toolchain: stable
          - target: powerpc-unknown-linux-gnu
            toolchain: stable
          - target: powerpc64-unknown-linux-gnu
            toolchain: stable
          - target: powerpc64le-unknown-linux-gnu
            toolchain: stable
          - target: riscv64gc-unknown-linux-gnu
            toolchain: stable
          - target: s390x-unknown-linux-gnu
            toolchain: stable
          - target: i686-unknown-linux-gnu
            toolchain: stable
          - target: i686-linux-android
            toolchain: stable
          - target: x86_64-unknown-linux-gnu
            toolchain: stable
          - target: x86_64-linux-android
            toolchain: stable
          - target: loongarch64-unknown-linux-gnu
            toolchain: nightly
    steps:
    - uses: actions/checkout@v3
    - name: Install ${{ matrix.toolchain }} toolchain
      uses: actions-rs/toolchain@v1
      with:
        toolchain: ${{ matrix.toolchain }}
        default: true
        components: rustfmt, clippy

    - name: Install target
      run: rustup target add ${{ matrix.target }} --toolchain ${{ matrix.toolchain }}

    - name: Install UBI
      shell: bash
      run: |
        mkdir -p "$HOME/.local/bin"
        curl --silent --location \
            https://raw.githubusercontent.com/houseabsolute/ubi/master/bootstrap/bootstrap-ubi.sh |
            TARGET="$HOME/.local/bin" sh
      env:
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

    - name: Install Rust Cross
      shell: bash
      run: ubi -p cross-rs/cross -i "$HOME/.local/bin"
      env:
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

    - name: Clippy ${{ matrix.target }} default
      uses: actions-rs/clippy-check@v1
      with:
        token: ${{ secrets.GITHUB_TOKEN }}
        toolchain: ${{ matrix.toolchain }}
        use-cross: true
        args: --release -vv --no-deps --target ${{ matrix.target }}
    - name: Clippy ${{ matrix.target }} no_std
      uses: actions-rs/clippy-check@v1
      with:
        token: ${{ secrets.GITHUB_TOKEN }}
        toolchain: ${{ matrix.toolchain }}
        use-cross: true
        args: --release -vv --no-deps --target ${{ matrix.target }} --no-default-features --features linux_4_11

  test:
    name: Test
    needs: check
    runs-on: ubuntu-latest
    strategy:
      matrix:
        target:
          - aarch64-unknown-linux-gnu
          - aarch64-linux-android
          - arm-unknown-linux-gnueabi
          - arm-linux-androideabi
          - mips-unknown-linux-gnu
          - mipsel-unknown-linux-gnu
          - mips64-unknown-linux-gnuabi64
          - mips64el-unknown-linux-gnuabi64
          - powerpc-unknown-linux-gnu
          - powerpc64-unknown-linux-gnu
          - powerpc64le-unknown-linux-gnu
          - riscv64gc-unknown-linux-gnu
          - s390x-unknown-linux-gnu
          - i686-unknown-linux-gnu
          - i686-linux-android
          - x86_64-unknown-linux-gnu
          - x86_64-linux-android
          - loongarch64-unknown-linux-gnu

    steps:
    - uses: actions/checkout@v3

    - name: Install stable toolchain
      uses: actions-rs/toolchain@v1
      with:
        toolchain: stable
        default: true
      if: ${{ matrix.target != 'loongarch64-unknown-linux-gnu' }}
    - name: Install 1.63.0 toolchain
      uses: actions-rs/toolchain@v1
      with:
        toolchain: 1.63.0
        default: false
      if: ${{ matrix.target != 'loongarch64-unknown-linux-gnu' }}
    - name: Install nightly toolchain
      uses: actions-rs/toolchain@v1
      with:
        toolchain: nightly
        default: ${{ matrix.target == 'loongarch64-unknown-linux-gnu' }}
      if: ${{ matrix.target == 'loongarch64-unknown-linux-gnu' }}

    - name: Install UBI
      shell: bash
      run: |
        mkdir -p "$HOME/.local/bin"
        curl --silent --location \
            https://raw.githubusercontent.com/houseabsolute/ubi/master/bootstrap/bootstrap-ubi.sh |
            TARGET="$HOME/.local/bin" sh
      env:
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

    - name: Install Rust Cross
      shell: bash
      run: ubi -p cross-rs/cross -i "$HOME/.local/bin"
      env:
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

    - name: Install targets
      run: |
        if [ "${{ matrix.target }}" = loongarch64-unknown-linux-gnu ]; then
          rustup target add ${{ matrix.target }} --toolchain nightly
        else
          rustup target add ${{ matrix.target }} --toolchain stable
          rustup target add ${{ matrix.target }} --toolchain 1.63.0
        fi

    - name: Test ${{ matrix.target }} 1.63.0
      run: |
        rm -rf Cargo.lock target
        cross +1.63.0 test --target ${{ matrix.target }}
      if: ${{ matrix.target != 'loongarch64-unknown-linux-gnu' }}
    - name: Test ${{ matrix.target }} stable
      run: |
        rm -rf Cargo.lock target
        cross +stable test --target ${{ matrix.target }}
      if: ${{ matrix.target != 'loongarch64-unknown-linux-gnu' }}
    - name: Test ${{ matrix.target }} nightly
      run: |
        rm -rf Cargo.lock target
        cross +nightly test --target ${{ matrix.target }}
      if: ${{ matrix.target == 'loongarch64-unknown-linux-gnu' }}