name: doc-test

on:
 push:
 pull_request:
 schedule:
  - cron: "0 0 * * *"

jobs:
  test:
    runs-on: [self-hosted, Linux, X64]
    strategy:
      fail-fast: false
      matrix:
        include:
          - {fpga-fam: "eos-s3", os: "ubuntu", os-version: "xenial",   example: "counter"}
          - {fpga-fam: "eos-s3", os: "ubuntu", os-version: "bionic",   example: "counter"}
          - {fpga-fam: "eos-s3", os: "ubuntu", os-version: "focal",    example: "counter"}
          - {fpga-fam: "eos-s3", os: "centos", os-version: "7",        example: "counter"}
          - {fpga-fam: "eos-s3", os: "centos", os-version: "8",        example: "counter"}
          - {fpga-fam: "eos-s3", os: "debian", os-version: "buster",   example: "counter"}
          - {fpga-fam: "eos-s3", os: "debian", os-version: "bullseye", example: "counter"}
          - {fpga-fam: "eos-s3", os: "debian", os-version: "sid",      example: "counter"}

          - {fpga-fam: "xc7",    os: "ubuntu", os-version: "xenial",   example: "counter"}
          - {fpga-fam: "xc7",    os: "ubuntu", os-version: "bionic",   example: "counter"}
          - {fpga-fam: "xc7",    os: "ubuntu", os-version: "focal",    example: "counter"}
          - {fpga-fam: "xc7",    os: "centos", os-version: "7",        example: "counter"}
          - {fpga-fam: "xc7",    os: "centos", os-version: "8",        example: "counter"}
          - {fpga-fam: "xc7",    os: "debian", os-version: "buster",   example: "counter"}
          - {fpga-fam: "xc7",    os: "debian", os-version: "bullseye", example: "counter"}
          - {fpga-fam: "xc7",    os: "debian", os-version: "sid",      example: "counter"}

          - {fpga-fam: "xc7",    os: "ubuntu", os-version: "xenial",   example: "picosoc"}
          - {fpga-fam: "xc7",    os: "ubuntu", os-version: "bionic",   example: "picosoc"}
          - {fpga-fam: "xc7",    os: "ubuntu", os-version: "focal",    example: "picosoc"}
          - {fpga-fam: "xc7",    os: "centos", os-version: "7",        example: "picosoc"}
          - {fpga-fam: "xc7",    os: "centos", os-version: "8",        example: "picosoc"}
          - {fpga-fam: "xc7",    os: "debian", os-version: "buster",   example: "picosoc"}
          - {fpga-fam: "xc7",    os: "debian", os-version: "bullseye", example: "picosoc"}
          - {fpga-fam: "xc7",    os: "debian", os-version: "sid",      example: "picosoc"}

          - {fpga-fam: "xc7",    os: "ubuntu", os-version: "xenial",   example: "litex_linux"}
          - {fpga-fam: "xc7",    os: "ubuntu", os-version: "bionic",   example: "litex_linux"}
          - {fpga-fam: "xc7",    os: "ubuntu", os-version: "focal",    example: "litex_linux"}
          - {fpga-fam: "xc7",    os: "centos", os-version: "7",        example: "litex_linux"}
          - {fpga-fam: "xc7",    os: "centos", os-version: "8",        example: "litex_linux"}
          - {fpga-fam: "xc7",    os: "debian", os-version: "buster",   example: "litex_linux"}
          - {fpga-fam: "xc7",    os: "debian", os-version: "bullseye", example: "litex_linux"}
          - {fpga-fam: "xc7",    os: "debian", os-version: "sid",      example: "litex_linux"}
    env:
      LANG: "en_US.UTF-8"
      DEBIAN_FRONTEND: "noninteractive"

    container: ${{matrix.os}}:${{matrix.os-version}}

    steps:
      - name: Setup repository
        uses: actions/checkout@v2

      - name: Install utils
        if: ${{matrix.os == 'ubuntu' || matrix.os == 'debian'}}
        run: apt -qqy update && apt -qqy install wget locales && locale-gen $LANG

      - name: Install utils
        if: ${{matrix.os == 'centos'}}
        run: yum -y install wget

      - name: Install tuttest
        run: |
          wget https://github.com/antmicro/tuttest/releases/download/v0.2-beta/tuttest -O /usr/bin/tuttest
          chmod a+rx /usr/bin/tuttest

      - name: Install SymbiFlow toolchain
        run: bash .github/scripts/install-toolchain.sh ${{matrix.fpga-fam}} ${{matrix.os}}

      - name: Build examples
        run: bash .github/scripts/build-examples.sh ${{matrix.fpga-fam}} ${{matrix.example}}

      - uses: actions/upload-artifact@v2
        with:
          name: symbiflow-examples-bitstreams
          path: |
            **/*.bit
            **/plot_*.svg