bitcoinconsensus 0.106.0+26.0

Bitcoin's libbitcoinconsensus with Rust binding.
Documentation
on: [push, pull_request]

name: Continuous integration

jobs:
  Tests:
    name: Test - stable toolchain
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
    steps:
      - name: Checkout Crate
        uses: actions/checkout@v3
      - name: Checkout Toolchain
        # https://github.com/dtolnay/rust-toolchain
        uses: dtolnay/rust-toolchain@stable
      - name: Running test script
        env:
          DO_LINT: true
          DO_DOCS: true
        run: ./contrib/test.sh

  Beta:
    name: Test - beta toolchain
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
    steps:
      - name: Checkout Crate
        uses: actions/checkout@v3
      - name: Checkout Toolchain
        uses: dtolnay/rust-toolchain@beta
      - name: Running test script
        run: ./contrib/test.sh

  Nightly:
    name: Test - nightly toolchain
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
    steps:
      - name: Checkout Crate
        uses: actions/checkout@v3
      - name: Checkout Toolchain
        uses: dtolnay/rust-toolchain@nightly
      - name: Install src
        run: rustup component add rust-src
      - name: Running test script
        env:
          DO_FMT: true
          DO_DOCSRS: true
        run: ./contrib/test.sh

  MSRV:
    name: Test - 1.48.0 toolchain
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
    steps:
      - name: Checkout Crate
        uses: actions/checkout@v3
      - name: Checkout Toolchain
        uses: dtolnay/rust-toolchain@1.48.0
      - name: Running test script
        run: ./contrib/test.sh

  Arch32bit:
    name: Test 32-bit version
    runs-on: ubuntu-latest
    steps:
      - name: Checkout Crate
        uses: actions/checkout@v3
      - name: Checkout Toolchain
        uses: dtolnay/rust-toolchain@stable
      - name: Add architecture i386
        run: sudo dpkg --add-architecture i386
      - name: Install i686 gcc
        run: sudo apt update && sudo apt install gcc-multilib g++-multilib
      - name: Install target
        run: rustup target add i686-unknown-linux-gnu
      - name: Run test on i686
        run: cargo test --target i686-unknown-linux-gnu

  # TODO: Re-introduce this test when someone works out why build
  # fails on this target for Bitcoin Core > v0.22
  #
  # Cross:
  #   name: Cross (big-endian)
  #   runs-on: ubuntu-latest
  #   steps:
  #     - name: Checkout Crate
  #       uses: actions/checkout@v3
  #     - name: Checkout Toolchain
  #       uses: dtolnay/rust-toolchain@stable
  #     - name: Install target
  #       run: rustup target add s390x-unknown-linux-gnu
  #     - name: install cross
  #       run: cargo install cross
  #     - name: run cross test
  #       run: cross test --target s390x-unknown-linux-gnu